{pkgs, ...}: { services.swayosd.enable = true; home.packages = [ pkgs.playerctl ]; wayland.windowManager.hyprland.settings = { bindel = [ ", XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise" ", XF86AudioLowerVolume, exec, swayosd-client --output-volume lower" ", XF86MonBrightnessUp, exec, ddcutil setvcp 10 + 10" ", XF86MonBrightnessDown, exec, ddcutil setvcp 10 - 10" ]; bindl = [ ", XF86AudioMute, exec, swayosd-client --output-volume mute-toggle" ", Caps_Lock, exec, swayosd-client --caps-lock" ", XF86AudioPlay, exec, playerctl play-pause && notify-send -u low -t 1000 \"Media\" \"$(playerctl status)\"" ", XF86AudioPrev, exec, playerctl previous && notify-send -u low -t 1000 \"Previous Track\" \"$(playerctl metadata title)\"" ", XF86AudioNext, exec, playerctl next && notify-send -u low -t 1000 \"Next Track\" \"$(playerctl metadata title)\"" ", XF86AudioMute, exec, swayosd-client --output-volume mute-toggle" ]; # FIXME: not working bindd = [ # essential "SUPER, Return, Open Terminal, exec, uwsm app -- xdg-terminal-exec" "SUPER, Q, Kill active, killactive" # move focus "SUPER, J, Move focus down, movefocus, d" "SUPER, K, Move focus up, movefocus, u" "SUPER, H, Move focus left, movefocus, l" "SUPER, L, Move focus right, movefocus, r" # move window "SUPER SHIFT, h, Move window left, movewindow, l" "SUPER SHIFT, j, Move window down, movewindow, d" "SUPER SHIFT, k, Move window up, movewindow, u" "SUPER SHIFT, l, Move window right, movewindow, r" # fullscreen "SUPER, F, Toggle Fullscreen, fullscreen, 0" "SUPER SHIFT, F, Toggle Maximized Fullscreen, fullscreen, 1" # apps "SUPER, W, Open Browser, exec, uwsm app -- firefox" # FIXME: must be xdg-open "SUPER, SPACE, Open App Launcher, exec, uwsm app -- walker" # FIXME: pls make ghostty variable # [Workspaces] Toggle between most recent workspaces "SUPER, Tab, Cycle workspaces, workspace, previous" ] ++ ( # Generate binds for Super + [1-10] to switch workspaces # and Super + Shift + [1-10] to move window to workspace builtins.concatLists (builtins.genList ( i: let ws = i + 1; key = toString ( if ws == 10 then 0 else ws ); in [ "SUPER, ${key}, Switch to workspace ${toString ws}, workspace, ${toString ws}" "SUPER SHIFT, ${key}, Move window to workspace ${toString ws}, movetoworkspace, ${toString ws}" ] ) 10) ); }; }