rgb on waybar

This commit is contained in:
Reid 2026-04-05 17:00:30 -07:00
parent 96d02ac12e
commit d25752f468
Signed by: reidlab
GPG key ID: DAF5EAF6665839FD
3 changed files with 334 additions and 293 deletions

View file

@ -168,7 +168,7 @@ window#waybar.floating #window {
color: @red; color: @red;
} }
#custom-wallpaper { #custom-wallpaper, #custom-rgb {
color: @overlay1; color: @overlay1;
} }

View file

@ -24,7 +24,8 @@ in {
package = cfg.package; package = cfg.package;
settings = { settings = {
mainBar = { mainBar = mkMerge [
{
layer = "top"; layer = "top";
position = "top"; position = "top";
spacing = 4; spacing = 4;
@ -67,6 +68,7 @@ in {
"custom/weather" "custom/weather"
"privacy" "privacy"
"custom/wallpaper" "custom/wallpaper"
"custom/rgb"
]; ];
}; };
"group/power" = { "group/power" = {
@ -107,12 +109,6 @@ in {
tooltip-format = "Power menu"; tooltip-format = "Power menu";
on-click = "${powerMenuScript}"; on-click = "${powerMenuScript}";
}; };
"custom/wallpaper" = {
format = "";
tooltip = true;
tooltip-format = "Change wallpaper";
on-click = "${config.modules.desktop.swww.swapScript}";
};
"niri/workspaces" = { "niri/workspaces" = {
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
@ -318,7 +314,24 @@ in {
exec = ''${lib.getExe pkgs.wttrbar} --location "$(${locationScript})" --hide-conditions --fahrenheit --mph''; exec = ''${lib.getExe pkgs.wttrbar} --location "$(${locationScript})" --hide-conditions --fahrenheit --mph'';
return-type = "json"; return-type = "json";
}; };
}
(mkIf config.modules.desktop.swww.enable {
"custom/wallpaper" = {
format = "";
tooltip = true;
tooltip-format = "Change wallpaper";
on-click = "${config.modules.desktop.swww.swapScript}";
}; };
})
(mkIf config.modules.hardware.rgb.enable {
"custom/rgb" = {
format = ""; # TODO: better icon (paintbrush or palette?)
tooltip = true;
tooltip-format = "Change OpenRGB profile";
on-click = "${config.modules.hardware.rgb.swapScript}";
};
})
];
}; };
}; };
}; };

View file

@ -5,10 +5,38 @@ let
cfg = config.modules.hardware.rgb; cfg = config.modules.hardware.rgb;
in { in {
options.modules.hardware.rgb = { options.modules.hardware.rgb = {
enable = mkEnableOption "Enable support for rgb devices through openrgb"; enable = mkEnableOption "Enable support for rgb devices through OpenRGB";
package = mkOption {
type = types.package;
default = pkgs.openrgb;
example = "pkgs.openrgb";
};
swapScript = mkOption {
type = types.package;
default = pkgs.writeShellScript "openrgb-swap" ''
set -euo pipefail
mapfile -t files < <(
find "$XDG_CONFIG_HOME/OpenRGB" -name "*.orp"
find /var/lib/OpenRGB -name "*.orp" 2>/dev/null
)
selected=$(printf '%s\n' "''${files[@]}" | xargs -n1 basename | ${lib.getExe config.modules.desktop.rofi.package} -dmenu -i -p "select profile")
[[ -z "$selected" ]] && exit 0
for f in "''${files[@]}"; do
if [[ $(basename "$f") == "$selected" ]]; then
${lib.getExe cfg.package} -p "$f"
break
fi
done
'';
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.hardware.openrgb.enable = true; services.hardware.openrgb.enable = true;
services.hardware.openrgb.package = cfg.package;
}; };
} }