wob for vol/brightness

This commit is contained in:
Reid 2024-07-25 17:31:54 -07:00
parent 49d20db7f3
commit fa6c592faf
Signed by: reidlab
GPG key ID: DAF5EAF6665839FD
3 changed files with 69 additions and 8 deletions

View file

@ -56,6 +56,7 @@
waybar.enable = true; waybar.enable = true;
batsignal.enable = true; batsignal.enable = true;
clipse.enable = true; clipse.enable = true;
wob.enable = true;
# display manager # display manager
sddm.enable = true; sddm.enable = true;

View file

@ -47,7 +47,9 @@ in {
systemd.variables = [ "--all" ]; systemd.variables = [ "--all" ];
settings = { settings = let
wobSock = config.modules.desktop.wob.sockPath;
in {
source = []; source = [];
"$mod" = "SUPER"; "$mod" = "SUPER";
@ -56,22 +58,31 @@ in {
"$mod, mouse:272, movewindow" "$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow" "$mod, mouse:273, resizewindow"
]; ];
bindel = [ # "bind held & locked" bindel = (if config.modules.desktop.wob.enable then [ # "bind held & locked"
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ | sed 's/[^0-9]//g' > ${wobSock}"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- | sed 's/[^0-9]//g' > ${wobSock}"
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > ${wobSock}"
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > ${wobSock}"
] else [
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s +5%" ", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s +5%"
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s 5%-" ", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s 5%-"
]; ]);
bindl = [ # "bind locked" bindl = ([ # "bind locked"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ",switch:Lid Switch,exec,${lib.getExe config.modules.desktop.hyprlock.package}"
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause" ", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop" ", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop"
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous" ", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next" ", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
];
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
] ++ (if config.modules.desktop.wob.enable then [
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && (wpctl get-volume @DEFAULT_AUDIO_SINK@ | grep -q MUTED && echo 0 > ${wobSock}) || wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g' > ${wobSock}"
] else [
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
]));
bindr = [ # "bind released" bindr = [ # "bind released"
"SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}" "SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}"
]; ];

49
modules/desktop/wob.nix Normal file
View file

@ -0,0 +1,49 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.wob;
in {
options.modules.desktop.wob = {
enable = mkEnableOption "Enable wob, a Wayland overlay bar";
sockPath = mkOption {
description = "Wob sock location";
type = types.str;
default = "$XDG_RUNTIME_DIR/wob.sock";
};
};
config = mkIf cfg.enable {
hm.wayland.windowManager.hyprland.settings.exec-once = let
path = cfg.sockPath;
script = pkgs.writeScript "launch-wob" ''
rm -f ${path} && mkfifo ${path} && tail -f ${path} | ${lib.getExe pkgs.wob}
'';
in [ script ];
hm.services.wob = {
enable = true;
settings = with config.colorScheme.palette; {
"" = {
timeout = 1000;
border_offset = 2;
border_size = 2;
bar_padding = 2;
anchor = "top";
width = 300;
height = 30;
margin = 12;
border_color = "${base04}FF";
background_color = "${base01}66";
bar_color = "${base05}FF";
overflow_mode = "nowrap";
output_mode = "focused";
};
};
};
};
}