quickshell: native volume/brightness OSD, drop swayosd + wob
Sixth surface in the SDF chrome shader, melting out of the bottom frame. Volume is reactive via Pipewire so the OSD also fires for pavucontrol/mixer changes; brightness routes through a new osd IPC handler since sysfs backlight only notifies via POLLPRI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
3b0133ff3c
commit
efd1331823
3 changed files with 160 additions and 42 deletions
|
|
@ -50,7 +50,6 @@ in
|
|||
wl-clipboard
|
||||
cliphist
|
||||
brightnessctl
|
||||
swayosd
|
||||
playerctl
|
||||
hypridle
|
||||
hyprshot
|
||||
|
|
@ -196,18 +195,8 @@ in
|
|||
|
||||
extraConfig =
|
||||
let
|
||||
kbdBrightUp = pkgs.writeShellScript "kbd-bright-up" ''
|
||||
${pkgs.brightnessctl}/bin/brightnessctl -d smc::kbd_backlight set +10%
|
||||
brightness=$(${pkgs.brightnessctl}/bin/brightnessctl -d smc::kbd_backlight get)
|
||||
max=$(${pkgs.brightnessctl}/bin/brightnessctl -d smc::kbd_backlight max)
|
||||
echo $(( brightness * 100 / max )) > "$XDG_RUNTIME_DIR/wob.fifo"
|
||||
'';
|
||||
kbdBrightDown = pkgs.writeShellScript "kbd-bright-down" ''
|
||||
${pkgs.brightnessctl}/bin/brightnessctl -d smc::kbd_backlight set 10%-
|
||||
brightness=$(${pkgs.brightnessctl}/bin/brightnessctl -d smc::kbd_backlight get)
|
||||
max=$(${pkgs.brightnessctl}/bin/brightnessctl -d smc::kbd_backlight max)
|
||||
echo $(( brightness * 100 / max )) > "$XDG_RUNTIME_DIR/wob.fifo"
|
||||
'';
|
||||
wpctl = "${pkgs.wireplumber}/bin/wpctl";
|
||||
qs = "${pkgs.quickshell}/bin/qs";
|
||||
in
|
||||
''
|
||||
-- Environment
|
||||
|
|
@ -244,7 +233,7 @@ in
|
|||
hl.exec_cmd("wl-paste --type text --watch cliphist store")
|
||||
hl.exec_cmd("wl-paste --type image --watch cliphist store")
|
||||
hl.exec_cmd("hyprctl setcursor Bibata-Modern-Ice 24")
|
||||
hl.exec_cmd("swayosd-server")
|
||||
-- swayosd removed; volume/brightness OSD handled by quickshell
|
||||
${lib.optionalString isMacbook ''hl.exec_cmd("hypridle")''}
|
||||
end)
|
||||
|
||||
|
|
@ -363,15 +352,18 @@ in
|
|||
hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||
hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||
|
||||
-- Volume / brightness (repeating)
|
||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("swayosd-client --output-volume raise"), { repeating = true })
|
||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("swayosd-client --output-volume lower"), { repeating = true })
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("swayosd-client --output-volume mute-toggle"), { repeating = true })
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("swayosd-client --brightness raise"), { repeating = true })
|
||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("swayosd-client --brightness lower"), { repeating = true })
|
||||
-- Volume / brightness (repeating). The OSD overlay is quickshell's
|
||||
-- (see settings/quickshell.nix) — swayosd and wob are both gone.
|
||||
-- Volume needs no IPC: quickshell watches Pipewire, so the OSD
|
||||
-- also shows for changes made in pavucontrol or a mixer.
|
||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%+ -l 1.0"), { repeating = true })
|
||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { repeating = true })
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"))
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("${qs} ipc call osd brightnessUp"), { repeating = true })
|
||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("${qs} ipc call osd brightnessDown"), { repeating = true })
|
||||
${lib.optionalString isMacbook ''
|
||||
hl.bind("XF86KbdBrightnessUp", hl.dsp.exec_cmd("${kbdBrightUp}"), { repeating = true })
|
||||
hl.bind("XF86KbdBrightnessDown", hl.dsp.exec_cmd("${kbdBrightDown}"), { repeating = true })
|
||||
hl.bind("XF86KbdBrightnessUp", hl.dsp.exec_cmd("${qs} ipc call osd kbdUp"), { repeating = true })
|
||||
hl.bind("XF86KbdBrightnessDown", hl.dsp.exec_cmd("${qs} ipc call osd kbdDown"), { repeating = true })
|
||||
''}
|
||||
|
||||
-- Media keys (locked — work through lockscreen)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue