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;
}
#custom-wallpaper {
#custom-wallpaper, #custom-rgb {
color: @overlay1;
}

View file

@ -24,7 +24,8 @@ in {
package = cfg.package;
settings = {
mainBar = {
mainBar = mkMerge [
{
layer = "top";
position = "top";
spacing = 4;
@ -67,6 +68,7 @@ in {
"custom/weather"
"privacy"
"custom/wallpaper"
"custom/rgb"
];
};
"group/power" = {
@ -107,12 +109,6 @@ in {
tooltip-format = "Power menu";
on-click = "${powerMenuScript}";
};
"custom/wallpaper" = {
format = "";
tooltip = true;
tooltip-format = "Change wallpaper";
on-click = "${config.modules.desktop.swww.swapScript}";
};
"niri/workspaces" = {
format = "{icon}";
format-icons = {
@ -318,7 +314,24 @@ in {
exec = ''${lib.getExe pkgs.wttrbar} --location "$(${locationScript})" --hide-conditions --fahrenheit --mph'';
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;
in {
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 {
services.hardware.openrgb.enable = true;
services.hardware.openrgb.package = cfg.package;
};
}