diff --git a/modules/common.nix b/modules/common.nix
index 8785dc8..9d65d8c 100644
--- a/modules/common.nix
+++ b/modules/common.nix
@@ -125,6 +125,7 @@
pulse.enable = true; # PulseAudio compatibility
wireplumber.enable = true; # Session manager
};
+ playerctld.enable = true; # Playerctl daemon for media controls
# Antivirus protection with automatic updates
clamav = {
diff --git a/modules/desktops/hyprland-desktop.nix b/modules/desktops/hyprland-desktop.nix
index 2d7f842..428e51d 100644
--- a/modules/desktops/hyprland-desktop.nix
+++ b/modules/desktops/hyprland-desktop.nix
@@ -107,6 +107,7 @@
mako # Notification daemon
hyprlock # Screen lock utility
hyprpicker # Color picker
+ waybar-mpris # MPRIS support for waybar
# ---- CLIPBOARD & INPUT ----
wl-clipboard # Clipboard utilities for Wayland
diff --git a/modules/hm/waybar.nix b/modules/hm/waybar.nix
index b18d0f3..6b096de 100644
--- a/modules/hm/waybar.nix
+++ b/modules/hm/waybar.nix
@@ -3,22 +3,22 @@
enable = true;
settings = [
{
- output = ["eDP-1"];
+ output = ["DP-3" "eDP-1"];
spacing = 8;
- "modules-left" = ["hyprland/workspaces"];
- "modules-center" = ["mpris" "cava" "hyprland/window"];
- "modules-right" = ["idle_inhibitor" "custom/audio_idle_inhibitor" "wireplumber" "backlight" "battery" "clock" "tray"];
+ "modules-left" = ["hyprland/workspaces" "cava" "mpris"];
+ "modules-center" = ["hyprland/window"];
+ "modules-right" = ["idle_inhibitor" "wireplumber" "backlight" "load" "power-profiles-daemon" "battery" "clock" "tray"];
+
"hyprland/workspaces" = {
"all-outputs" = false;
- "warp-on-scroll" = true;
- "enable-bar-scroll" = true;
};
"hyprland/window" = {
format = "{title}";
"max-length" = 60;
"all-outputs" = true;
+ "separate-outputs" = true;
};
- load = {format = " {}";};
+ load = {format = " {load1}";};
backlight = {
format = "{icon} {percent}%";
"format-icons" = ["" "" "" "" "" "" "" "" ""];
@@ -29,19 +29,20 @@
"format-alt" = " {:%a %F}";
};
cava = {
- framerate = 30;
+ framerate = 60;
autosens = 1;
- bars = 14;
+ bars = 10;
"lower_cutoff_freq" = 50;
"higher_cutoff_freq" = 10000;
method = "pulse";
source = "auto";
- stereo = true;
+ stereo = false;
"bar_delimiter" = 0;
"noise_reduction" = 0.77;
"input_delay" = 2;
"hide_on_silence" = true;
- "format-icons" = [" " "▂" "▃" "▄" "▅" "▆" "▇" "█"];
+ "sleep_timer" = 3;
+ "format-icons" = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█"];
actions = {"on-click-right" = "mode";};
};
"idle_inhibitor" = {
@@ -55,6 +56,17 @@
"icon-size" = 14;
spacing = 10;
};
+ "power-profiles-daemon" = {
+ "format" = "{icon}";
+ "tooltip-format" = "Power profile: {profile}\nDriver: {driver}";
+ "tooltip" = true;
+ "format-icons" = {
+ "default" = "";
+ "performance" = "";
+ "balanced" = "";
+ "power-saver" = "";
+ };
+ };
battery = {
states = {
warning = 30;
@@ -79,18 +91,114 @@
"dynamic-order" = ["title" "artist"];
};
- "custom/audio_idle_inhibitor" = {
- format = "{icon}";
- exec = "sway-audio-idle-inhibit --dry-print-both-waybar --ignore-source-outputs cava";
- "exec-if" = "which sway-audio-idle-inhibit";
- "return-type" = "json";
+ wireplumber = {
+ "scroll-step" = 1;
+ format = "{icon} {volume}%";
+ "format-bluetooth" = "{icon} {volume}% ";
+ "format-bluetooth-muted" = " {icon}";
+ "format-muted" = "";
"format-icons" = {
- output = "";
- input = "";
- "output-input" = " ";
- none = "";
+ headphone = "";
+ "hands-free" = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ car = "";
+ default = ["" "" ""];
+ };
+ "on-click" = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
+ "on-click-right" = "pavucontrol";
+ };
+ }
+ {
+ output = ["HDMI-A-1"];
+ spacing = 8;
+ "modules-left" = ["hyprland/workspaces" "cava" "mpris"];
+ "modules-center" = ["hyprland/window"];
+ "modules-right" = ["clock"];
+
+ "hyprland/workspaces" = {
+ "all-outputs" = false;
+ };
+ "hyprland/window" = {
+ format = "{title}";
+ "max-length" = 60;
+ "all-outputs" = true;
+ "separate-outputs" = true;
+ };
+ load = {format = " {load1}";};
+ backlight = {
+ format = "{icon} {percent}%";
+ "format-icons" = ["" "" "" "" "" "" "" "" ""];
+ };
+ clock = {
+ "tooltip-format" = "{:%Y %B}\n{calendar}";
+ format = " {:%H:%M}";
+ "format-alt" = " {:%a %F}";
+ };
+ cava = {
+ framerate = 60;
+ autosens = 1;
+ bars = 10;
+ "lower_cutoff_freq" = 50;
+ "higher_cutoff_freq" = 10000;
+ method = "pulse";
+ source = "auto";
+ stereo = false;
+ "bar_delimiter" = 0;
+ "noise_reduction" = 0.77;
+ "input_delay" = 2;
+ "hide_on_silence" = true;
+ "sleep_timer" = 3;
+ "format-icons" = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█"];
+ actions = {"on-click-right" = "mode";};
+ };
+ "idle_inhibitor" = {
+ format = "{icon}";
+ "format-icons" = {
+ activated = "";
+ deactivated = "";
};
};
+ tray = {
+ "icon-size" = 14;
+ spacing = 10;
+ };
+ "power-profiles-daemon" = {
+ "format" = "{icon}";
+ "tooltip-format" = "Power profile: {profile}\nDriver: {driver}";
+ "tooltip" = true;
+ "format-icons" = {
+ "default" = "";
+ "performance" = "";
+ "balanced" = "";
+ "power-saver" = "";
+ };
+ };
+ battery = {
+ states = {
+ warning = 30;
+ critical = 15;
+ };
+ format = "{icon} {capacity}%";
+ "format-full" = "{icon} {capacity}%";
+ "format-charging" = " {capacity}%";
+ "format-plugged" = " {capacity}%";
+ "format-alt" = "{icon} {time}";
+ "format-icons" = ["" "" "" "" ""];
+ };
+ mpris = {
+ format = "{status_icon} {dynamic}";
+ interval = 1;
+ "dynamic-len" = 60;
+ "status-icons" = {
+ playing = "▶";
+ paused = "⏸";
+ stopped = "";
+ };
+ "dynamic-order" = ["title" "artist"];
+ };
+
wireplumber = {
"scroll-step" = 1;
format = "{icon} {volume}%";
@@ -158,12 +266,12 @@
}
window#waybar {
- font-family: Iosevka Nerd Font Propo, monospace;
+ font-family: Intel One Mono, Symbols Nerd Font Mono, monospace;
background-color: transparent;
border-bottom: 0px;
color: @fg;
transition-property: background-color;
- transition-duration: .5s;
+ transition-duration: .4s;
}
window#waybar.hidden {
@@ -184,14 +292,10 @@
}
*/
+ .modules-left,
+ .modules-center,
.modules-right {
- margin: 10px 10px 0 0;
- }
- .modules-center {
- margin: 10px 0 0 0;
- }
- .modules-left {
- margin: 10px 0 0 10px;
+ margin: 15px 15px 0;
}
button {
@@ -231,10 +335,11 @@
}
#workspaces button:hover {
- color: @yellow;
+ color: @orange;
}
- #workspaces button.focused {
+ #workspaces button.active {
+ color: @yellow;
background-color: @bg3;
/* box-shadow: inset 0 -3px #ffffff; */
}
@@ -255,6 +360,7 @@
#wireplumber,
#tray,
#mpris,
+ #power-profiles-daemon,
#load {
padding: 0 10px;
background-color: @bg;
@@ -287,11 +393,32 @@
padding: 0 5px;
}
+ #cava.silent {
+ background-color: transparent;
+ color: transparent;
+ padding: 0;
+ }
+
#battery.charging, #battery.plugged {
background-color: @green;
color: @fglight;
}
+ #power-profiles-daemon.performance {
+ background-color: @red;
+ color: @fglight;
+ }
+
+ #power-profiles-daemon.balanced {
+ background-color: @blue;
+ color: @fglight;
+ }
+
+ #power-profiles-daemon.power-saver {
+ background-color: @green;
+ color: @fglight;
+ }
+
@keyframes blink {
to {
background-color: @bg;
diff --git a/modules/programs.nix b/modules/programs.nix
index e9c4ff8..0883d34 100644
--- a/modules/programs.nix
+++ b/modules/programs.nix
@@ -80,6 +80,7 @@ in {
darktable # Raw editor
imagemagick # Image processing
mpv # Video player
+ cava # Audio visualizer
];
programs = {