From 335b96a73a3059841d0e1f6c882b69c48ba64430 Mon Sep 17 00:00:00 2001 From: KeksNino Date: Sun, 9 Aug 2026 17:05:09 +0200 Subject: [PATCH] fix keybinds in hyprland --- modules/programs/hyprland/default.nix | 1 + modules/programs/hyprland/execs.nix | 62 ++++++ modules/programs/hyprland/keybinds.nix | 295 ++++++++++++------------- modules/programs/hyprland/rules.nix | 2 +- 4 files changed, 202 insertions(+), 158 deletions(-) create mode 100644 modules/programs/hyprland/execs.nix diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index 194fd92..3e90d98 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -3,5 +3,6 @@ ./general.nix ./rules.nix ./keybinds.nix + ./execs.nix ]; } diff --git a/modules/programs/hyprland/execs.nix b/modules/programs/hyprland/execs.nix new file mode 100644 index 0000000..a7b4b08 --- /dev/null +++ b/modules/programs/hyprland/execs.nix @@ -0,0 +1,62 @@ +{ + wayland.windowManager.hyprland = { + extraConfig = '' + hl.env("HYPRCURSOR_THEME", "Adwaita") + hl.env("HYPRCURSOR_SIZE", "22") + hl.env("XCURSOR_SIZE", "22") + hl.env("GDK_SCALE", "1") + hl.env("GDK_BACKEND", "wayland,x11,*") + hl.env("XDG_CURRENT_DESKTOP", "Hyprland") + hl.env("XDG_SESSION_TYPE", "wayland") + hl.env("XDG_SESSION_DESKTOP", "Hyprland") + hl.env("QT_QPA_PLATFORM", "wayland") + -- hl.env("QT_QPA_PLATFORMTHEME", "kvantum") + -- hl.env("QT_QPA_PLATFORMTHEME", "hyprqt6engine") + hl.env("QT_QPA_PLATFORMTHEME", "qt6ct") + hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland") + hl.env("DOTNET_CLI_TELEMETRY_OPTOUT", "1") + -- hl.env("QT_SCALE_FACTOR", "0.9") + hl.env("LIBVA_DRIVER_NAME", "radeonsi") + -- hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia") + -- hl.env("NVD_BACKEND", "direct") + + local TERM = "kitty" + -- local BAR = "~/.config/waybar/waybar.sh" + local BAR = "noctalia-shell" + local DMENU = "rofi -show drun" + local CLIPBOARD = + "cliphist list | rofi -dmenu -display-columns 2 -config ~/.config/rofi/clipboard.rasi | cliphist decode | wl-copy" + -- local POWER_MENU = "rofi -show powermenu -modi powermenu:~/.scripts/rofi-powermenu -config ~/.config/rofi/powermenu.rasi" + local WMENU = "rofi -show window" + local CALC = "rofi -show calc -modi calc -no-show-match -no-sort" + local FILE_MAN = "xdg-open ~" -- GUI File Manager + local RANDOM_WALL = "~/.scripts/random-wall" -- set a random wall + local AUTH_AGENT = "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" + + hl.on("hyprland.start", function() + hl.exec_cmd("kdeconnectd") + hl.exec_cmd("equibop") + -- hl.exec_cmd("sleep 5; discord") + hl.exec_cmd("~/.scripts/walld") -- start wallpaper daemon + hl.exec_cmd(BAR) -- status bar + hl.exec_cmd("udiskie --appindicator &") -- udiskie for automount + hl.exec_cmd("hypridle &") -- start hypridle service + hl.exec_cmd(AUTH_AGENT) -- start authentication agent + hl.exec_cmd("jamesdsp --tray &") + -- hl.exec_cmd("dunst") + -- hl.exec_cmd("opendeck --hide") + hl.exec_cmd("goxlr-daemon") + hl.exec_cmd("qpwgraph -m") + -- hl.exec_cmd("mullvad-vpn --disable-gpu") + hl.exec_cmd("sleep 20; QT_STYLE_OVERRIDE=Fusion musicpresence") + hl.exec_cmd("gsr-ui") + + -- Clipboard: history + hl.exec_cmd("wl-paste --type text --watch cliphist store") + hl.exec_cmd("wl-paste --type image --watch cliphist store") + + hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") + end) + ''; + }; +} diff --git a/modules/programs/hyprland/keybinds.nix b/modules/programs/hyprland/keybinds.nix index 11f68d9..b270b4b 100644 --- a/modules/programs/hyprland/keybinds.nix +++ b/modules/programs/hyprland/keybinds.nix @@ -1,196 +1,177 @@ -let - TERM = "kitty"; - BAR = "noctalia-shell"; - DMENU = "rofi -show drun"; - CLIPBOARD = "cliphist list | rofi -dmenu -display-columns 2 -config ~/.config/rofi/clipboard.rasi | cliphist decode | wl-copy"; - WMENU = "rofi -show window"; - CALC = "rofi -show calc -modi calc -no-show-match -no-sort"; - FILE_MAN = "xdg-open ~"; - RANDOM_WALL = "~/.scripts/random-wall"; -in { wayland.windowManager.hyprland = { - settings = { - # #################### - # ### KEYBINDINGS ### - # #################### + extraConfig = '' + -- #################### + -- ### KEYBINDINGS ### + -- #################### - "$mod" = "SUPER"; + local mod = "SUPER" - bind = [ - "$mod, L, exec, ${TERM}" - "$mod, SPACE, exec, ${DMENU}" - "$mod CTRL, B, exec, ${RANDOM_WALL}" - "CTRL SHIFT, B, exec, ~/.config/rofi/wallpaper-picker.sh" - # "CTRL SHIFT, B, exec, dms ipc dankdash wallpaper" - "$mod, V, exec, ${CLIPBOARD}" - "$mod, E, exec, ${FILE_MAN}" - "$mod, N, exec, dunstctl history-pop" - "$mod SHIFT, N, exec, dunstctl close-all" - "$mod, Q, killactive" - "$mod SHIFT, Q, exec, hyprctl kill" - "$mod, C, exec, ${CALC}" - "$mod SHIFT, B, exec, ${BAR}" - "$mod SHIFT, F, togglefloating" - "$mod SHIFT, P, exec, hyprpicker -a" - "$mod SHIFT, W, exec, ${WMENU}" - "$mod, B, exec, zen-beta" + hl.bind(mod .. " + L", function() hl.dispatch(hl.dsp.exec_cmd(TERM)) end) + hl.bind(mod .. " + SPACE", function() hl.dispatch(hl.dsp.exec_cmd(DMENU)) end) + hl.bind(mod .. " + CTRL + B", function() hl.dispatch(hl.dsp.exec_cmd(RANDOM_WALL)) end) + hl.bind("CTRL + SHIFT + B", hl.dsp.exec_cmd("~/.config/rofi/wallpaper-picker.sh")) + -- hl.bind("CTRL + SHIFT + B", hl.dsp.exec_cmd("dms ipc dankdash wallpaper")) + hl.bind(mod .. " + V", function() hl.dispatch(hl.dsp.exec_cmd(CLIPBOARD)) end) + hl.bind(mod .. " + E", function() hl.dispatch(hl.dsp.exec_cmd(FILE_MAN)) end) + hl.bind(mod .. " + N", hl.dsp.exec_cmd("dunstctl history-pop")) + hl.bind(mod .. " + SHIFT + N", hl.dsp.exec_cmd("dunstctl close-all")) + hl.bind(mod .. " + Q", hl.dsp.window.close()) + hl.bind(mod .. " + SHIFT + Q", hl.dsp.window.kill()) + hl.bind(mod .. " + C", function() hl.dispatch(hl.dsp.exec_cmd(CALC)) end) + hl.bind(mod .. " + SHIFT + B", function() hl.dispatch(hl.dsp.exec_cmd(BAR)) end) + hl.bind(mod .. " + SHIFT + F", hl.dsp.window.float()) + hl.bind(mod .. " + SHIFT + P", hl.dsp.exec_cmd("hyprpicker -a")) + hl.bind(mod .. " + SHIFT + W", function() hl.dispatch(hl.dsp.exec_cmd(WMENU)) end) + hl.bind(mod .. " + B", hl.dsp.exec_cmd("zen-beta")) + -- hl.bind( + -- mod .. " + SHIFT + E", + -- hl.dsp.exec_cmd( + -- "pkill -9 linux-wallpaper; awww img --transition-step 100 /home/user/Pictures/Wallpapers/syntaxerror_wallpaper.png" + -- ) + -- ) + hl.bind( + mod .. " + SHIFT + E", + hl.dsp.exec_cmd("noctalia-shell ipc call wallpaper set /home/user/Pictures/Wallpapers/syntaxerror_wallpaper.png") + ) + hl.bind("ALT + Q", hl.dsp.exec_cmd("pkill -9 python; pkill -9 aria2c")) + hl.bind(mod .. " + P", hl.dsp.exec_cmd("prismlauncher")) + -- hl.bind(mod .. " + W", hl.dsp.exec_cmd("waypaper")) - # hl.bind( - # mod .. " + SHIFT + E", - # hl.dsp.exec_cmd( - # "pkill -9 linux-wallpaper; awww img --transition-step 100 /home/user/Pictures/Wallpapers/syntaxerror_wallpaper.png" - # ) - # ) - "$mod SHIFT, E, exec, noctalia-shell ipc call wallpaper set /home/user/Pictures/Wallpapers/syntaxerror_wallpaper.png" - "ALT, Q, exec, pkill -9 python; pkill -9 aria2c" - "$mod, P, exec, prismlauncher" - # "$mod, W, exec, waypaper" + -- ################ + -- ## MEDIA KEYS ## + -- ################ - # ################ - # ## MEDIA KEYS ## - # ################ + hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle")) + hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl -p mpd play-pause")) + hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl -p mpd next")) + hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl -p mpd previous")) + hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +5%")) + hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -5%")) - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioPlay, exec, playerctl -p mpd play-pause" - ", XF86AudioNext, exec, playerctl -p mpd next" - ", XF86AudioPrev, exec, playerctl -p mpd previous" - ", XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%" - ", XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%" + hl.bind(mod .. " + A", hl.dsp.exec_cmd("~/.scripts/play-previous")) + hl.bind(mod .. " + S", hl.dsp.exec_cmd("~/.scripts/play-next")) + hl.bind(mod .. " + D", hl.dsp.exec_cmd("~/.scripts/play-pause")) + hl.bind(mod .. " + SHIFT + D", hl.dsp.exec_cmd("playerctl play-pause")) + hl.bind(mod .. " + PLUS", hl.dsp.exec_cmd("~/.scripts/mpd-volume up")) + hl.bind(mod .. " + MINUS", hl.dsp.exec_cmd("~/.scripts/mpd-volume down")) + -- hl.bind(mod .. " + SHIFT + R", hl.dsp.exec_cmd("~/.scripts/skip30s")) - "$mod, A, exec, ~/.scripts/play-previous" - "$mod, S, exec, ~/.scripts/play-next" - "$mod, D, exec, ~/.scripts/play-pause" - "$mod SHIFT, D, exec, playerctl play-pause" - "$mod, PLUS, exec, ~/.scripts/mpd-volume up" - "$mod, MINUS, exec, ~/.scripts/mpd-volume down" - # "$mod SHIFT, R, exec, ~/.scripts/skip30s" + -- ################ + -- ## FULLSCREEN ## + -- ################ - # ################ - # ## FULLSCREEN ## - # ################ + hl.bind(mod .. " + F", hl.dsp.window.fullscreen()) - "$mod, F, fullscreen" + -- ################ + -- ## SCREENSHOT ## + -- ################ - # ################ - # ## SCREENSHOT ## - # ################ + hl.bind(mod .. " + CTRL + S", hl.dsp.exec_cmd("grimblast --freeze --notify copysave active")) + hl.bind(mod .. " + SHIFT + S", hl.dsp.exec_cmd("grimblast --freeze --notify copysave area")) + hl.bind(mod .. " + ALT + S", hl.dsp.exec_cmd("wl-paste | satty -f -")) - "$mod CTRL, S, exec, grimblast --freeze --notify copysave active" - "$mod SHIFT, S, exec, grimblast --freeze --notify copysave area" - "$mod ALT, S, exec, wl-paste | satty -f -" + -- ########################## + -- ## CENTER FLOAT WINDOW ## + -- ########################## - # ########################## - # ## CENTER FLOAT WINDOW ## - # ########################## + hl.bind(mod .. " + SHIFT + C", hl.dsp.window.center()) - "$mod SHIFT, C, centerwindow" + -- ################## + -- ## MOVE FOCUS ## + -- ################## - # ################## - # ## MOVE FOCUS ## - # ################## + hl.bind(mod .. " + LEFT", hl.dsp.focus({ direction = "left" })) + hl.bind(mod .. " + RIGHT", hl.dsp.focus({ direction = "right" })) + hl.bind(mod .. " + UP", hl.dsp.focus({ direction = "up" })) + hl.bind(mod .. " + DOWN", hl.dsp.focus({ direction = "down" })) - "$mod, LEFT, movefocus, l" - "$mod, RIGHT, movefocus, r" - "$mod, UP, movefocus, u" - "$mod, DOWN, movefocus, d" + -- ################# + -- ## MOVE WINDOW ## + -- ################# - # ################# - # ## MOVE WINDOW ## - # ################# + hl.bind(mod .. " + SHIFT + LEFT", hl.dsp.window.move({ direction = "left" })) + hl.bind(mod .. " + SHIFT + RIGHT", hl.dsp.window.move({ direction = "right" })) + hl.bind(mod .. " + SHIFT + UP", hl.dsp.window.move({ direction = "up" })) + hl.bind(mod .. " + SHIFT + DOWN", hl.dsp.window.move({ direction = "down" })) - "$mod SHIFT, LEFT, movewindow, l" - "$mod SHIFT, RIGHT, movewindow, r" - "$mod SHIFT, UP, movewindow, u" - "$mod SHIFT, DOWN, movewindow, d" + -- ################### + -- ## RESIZE WINDOW ## + -- ################### - # ################### - # ## RESIZE WINDOW ## - # ################### + -- hl.bind(mod .. " + CTRL + L", hl.dsp.window.resize(20, 0)) + -- hl.bind(mod .. " + CTRL + H", hl.dsp.window.resize(-20, 0)) + -- hl.bind(mod .. " + CTRL + K", hl.dsp.window.resize(0, -20)) + -- hl.bind(mod .. " + CTRL + J", hl.dsp.window.resize(0, 20)) - # "$mod CTRL, L, resizeactive, 20 0" - # "$mod CTRL, H, resizeactive, -20 0" - # "$mod CTRL, K, resizeactive, 0 -20" - # "$mod CTRL, J, resizeactive, 0 20" + -- ################ + -- ## WORKSPACES ## + -- ################ - # ################ - # ## WORKSPACES ## - # ################ + -- hl.bind(mod .. " + 1", hl.dsp.focus({ workspace = 1})) + -- hl.bind(mod .. " + 2", hl.dsp.focus({ workspace = 2})) + -- hl.bind(mod .. " + 3", hl.dsp.focus({ workspace = 3})) + -- hl.bind(mod .. " + 4", hl.dsp.focus({ workspace = 4})) + -- hl.bind(mod .. " + 5", hl.dsp.focus({ workspace = 5})) + -- hl.bind(mod .. " + 6", hl.dsp.focus({ workspace = 6})) + -- hl.bind(mod .. " + 7", hl.dsp.focus({ workspace = 7})) + -- hl.bind(mod .. " + 8", hl.dsp.focus({ workspace = 8})) + -- hl.bind(mod .. " + 9", hl.dsp.focus({ workspace = 9})) + -- hl.bind(mod .. " + 0", hl.dsp.focus({ workspace = 10})) - # "$mod, 1, workspace, 1" - # "$mod, 2, workspace, 2" - # "$mod, 3, workspace, 3" - # "$mod, 4, workspace, 4" - # "$mod, 5, workspace, 5" - # "$mod, 6, workspace, 6" - # "$mod, 7, workspace, 7" - # "$mod, 8, workspace, 8" - # "$mod, 9, workspace, 9" - # "$mod, 0, workspace, 10" + -- ################################# + -- ## MOVE WINDOW TO WORKSPACES ## + -- ################################# - # ################################# - # ## MOVE WINDOW TO WORKSPACES ## - # ################################# + -- hl.bind(mod .. " + SHIFT + 1", hl.dsp.window.move({ workspace = 1 })) + -- hl.bind(mod .. " + SHIFT + 2", hl.dsp.window.move({ workspace = 2 })) + -- hl.bind(mod .. " + SHIFT + 3", hl.dsp.window.move({ workspace = 3 })) + -- hl.bind(mod .. " + SHIFT + 4", hl.dsp.window.move({ workspace = 4 })) + -- hl.bind(mod .. " + SHIFT + 5", hl.dsp.window.move({ workspace = 5 })) + -- hl.bind(mod .. " + SHIFT + 6", hl.dsp.window.move({ workspace = 6 })) + -- hl.bind(mod .. " + SHIFT + 7", hl.dsp.window.move({ workspace = 7 })) + -- hl.bind(mod .. " + SHIFT + 8", hl.dsp.window.move({ workspace = 8 })) + -- hl.bind(mod .. " + SHIFT + 9", hl.dsp.window.move({ workspace = 9 })) + -- hl.bind(mod .. " + SHIFT + 0", hl.dsp.window.move({ workspace = 10 })) - # "$mod SHIFT, 1, movetoworkspace, 1" - # "$mod SHIFT, 2, movetoworkspace, 2" - # "$mod SHIFT, 3, movetoworkspace, 3" - # "$mod SHIFT, 4, movetoworkspace, 4" - # "$mod SHIFT, 5, movetoworkspace, 5" - # "$mod SHIFT, 6, movetoworkspace, 6" - # "$mod SHIFT, 7, movetoworkspace, 7" - # "$mod SHIFT, 8, movetoworkspace, 8" - # "$mod SHIFT, 9, movetoworkspace, 9" - # "$mod SHIFT, 0, movetoworkspace, 10" + -- ################## + -- ## SCRATCHPADS ## + -- ################## - # ################## - # ## SCRATCHPADS ## - # ################## + hl.bind(mod .. " + SHIFT + G", hl.dsp.window.move({ workspace = "special:magic" })) + hl.bind(mod .. " + G", hl.dsp.workspace.toggle_special("magic")) - "$mod SHIFT, G, movetoworkspace, special:magic" - "$mod, G, togglespecialworkspace, magic" + -- ########################################## + -- ## SCROLL THROUGH EXISTING WORKSPACES ## + -- ########################################## - # ########################################## - # ## SCROLL THROUGH EXISTING WORKSPACES ## - # ########################################## + -- hl.bind(mod .. " + MOUSEDOWN", hl.wm.workspace_relative(1)) + -- hl.bind(mod .. " + MOUSEUP", hl.wm.workspace_relative(-1)) - # "$mod, mouse_down, workspace, e+1" - # "$mod, mouse_up, workspace, e-1" + -- ################### + -- ## MOUSE ACTIONS ## + -- ################### - # ################### - # ## MOUSE ACTIONS ## - # ################### + hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true }) + hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" + -- ########### + -- ## MISC ## + -- ########### - # ########### - # ## MISC ## - # ########### + -- hl.bind(mod .. " + MOUSEDOWN", hl.wm.layout_msg("move +col")) + -- hl.bind(mod .. " + MOUSEUP", hl.wm.layout_msg("move -col")) - # "$mod, MOUSEDOWN, layoutmsg, move +col" - # "$mod, MOUSEUP, layoutmsg, move -col" + -- hl.bind(mod .. " + T", hl.wm.toggle_group()) - # "$mod, T, togglegroup" + -- hl.bind(mod .. " + SHIFT + X", hl.dsp.exec_cmd("$POWER_MENU")) - # "$mod SHIFT, X, exec, $POWER_MENU" + hl.bind("CTRL + ALT + F", hl.dsp.exec_cmd("kando -m kandomain")) - "CTRL ALT, F, exec, kando -m kandomain" + -- hl.bind(mod .. " + W", hl.dsp.exec_cmd("$WIFI_MENU")) - # "$mod, W, exec, $WIFI_MENU" - - # "$mod, X, exec, hyprlock" - ]; - - # ################### - # ## MOUSE ACTIONS ## - # ################### - - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - }; + -- hl.bind(mod .. " + X", hl.dsp.exec_cmd("hyprlock")) + ''; }; } diff --git a/modules/programs/hyprland/rules.nix b/modules/programs/hyprland/rules.nix index 1085a78..a97f3be 100644 --- a/modules/programs/hyprland/rules.nix +++ b/modules/programs/hyprland/rules.nix @@ -103,7 +103,7 @@ "pin,class:^(kando)$" ]; - layerrule = [ + layer_rule = [ "blur,rofi" "noanim,hyprpicker" "noanim,selection"