165 lines
8.1 KiB
Nix
165 lines
8.1 KiB
Nix
{
|
|
lib,
|
|
username,
|
|
...
|
|
}: let
|
|
desktopEntriesPath = "/home/${username}/.local/state/home-manager/gcroots/current-home/home-path/share/applications/";
|
|
|
|
mainBinds = [
|
|
"SUPER, A, exec, anki #\"Flashcard learning application\""
|
|
"SUPER, B, exec, bitwarden #\"Password manager\""
|
|
"SUPER, C, exec, chromium #\"Ungoogled Chromium\""
|
|
"SUPER, D, exec, vesktop #\"Discord client\""
|
|
"SUPER, E, exec, noctalia-shell ipc call launcher emoji #\"Emoji picker\""
|
|
"SUPER, Escape, exec, noctalia-shell ipc call lockScreen lock #\"Lock the screen\""
|
|
"SUPER, G, exec, affinity-v3 #\"Graphics editor\""
|
|
"SUPER, I, exec, iotas #\"Note-taking app\""
|
|
"SUPER, J, exec, Jan #\"Local AI chat interface\""
|
|
"SUPER, K, exec, galculator #\"Scientific calculator\""
|
|
"SUPER, L, exec, logseq #\"Knowledge management tool\""
|
|
"SUPER, M, exec, plexamp #\"Music player for Plex\""
|
|
"SUPER, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop #\"GarandCloud client\""
|
|
"SUPER, O, exec, onlyoffice-desktopeditors #\"Office suite\""
|
|
"SUPER, P, exec, plex-desktop #\"Plex media player\""
|
|
"SUPER, Return, exec, kitty #\"Kitty terminal\""
|
|
"SUPER, S, exec, steam #\"Steam Game launcher\""
|
|
"SUPER, T, exec, thunar #\"File manager\""
|
|
"SUPER, V, exec, codium #\"VS Codium\""
|
|
"SUPER, W, exec, librewolf #\"Main Web browser (Librewolf)\""
|
|
"SUPER, Z, exec, zeditor #\"Zed IDE\""
|
|
];
|
|
|
|
shiftBinds = [
|
|
"SUPER SHIFT, C, exec, dex ${desktopEntriesPath}/claude.desktop #\"Claude AI chat\""
|
|
"SUPER SHIFT, G, exec, dex ${desktopEntriesPath}/chatgpt.desktop #\"ChatGPT AI chat\""
|
|
"SUPER SHIFT, K, exec, noctalia-shell ipc call plugin:keybind-cheatsheet toggle #\"Toggle keybind cheatsheet\""
|
|
"SUPER SHIFT, M, exec, dex ${desktopEntriesPath}/messenger.desktop #\"Facebook Messenger client\""
|
|
"SUPER SHIFT, N, exec, nextcloud #\"Nextcloud desktop sync client\""
|
|
"SUPER SHIFT, O, exec, obs #\"Open Broadcaster Software\""
|
|
"SUPER SHIFT, P, exec, noctalia-shell ipc call volume togglePanel #\"Toggle volume control panel\""
|
|
"SUPER SHIFT, R, exec, restart.noctalia #\"Restart Noctalia shell\""
|
|
"SUPER SHIFT, Return, exec, noctalia-shell ipc call launcher toggle #\"Toggle application launcher\""
|
|
"SUPER SHIFT, S, exec, screenshootin #\"Take screenshot\""
|
|
"SUPER SHIFT, T, exec, tutanota-desktop #\"Tutanota encrypted email client\""
|
|
"SUPER SHIFT, V, exec, noctalia-shell ipc call launcher clipboard #\"Open clipboard manager\""
|
|
];
|
|
|
|
altBinds = [
|
|
"SUPER ALT, C, exec, noctalia-shell ipc call controlCenter toggle #\"Toggle control center\""
|
|
"SUPER ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop #\"Glance server panel\""
|
|
"SUPER ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop #\"Mastodon social network client\""
|
|
"SUPER ALT, P, exec, noctalia-shell ipc call settings toggle #\"Open settings panel\""
|
|
"SUPER ALT, S, exec, slack #\"Slack team communication tool\""
|
|
"SUPER ALT, T, exec, gedit #\"GNOME text editor\""
|
|
"SUPER ALT, W, exec, noctalia-shell ipc call wallpaper toggle #\"Toggle wallpaper\""
|
|
];
|
|
|
|
controlBinds = [
|
|
"SUPER CONTROL, C, exec, noctalia-shell ipc call powerProfile cycle #\"Cycle through power profiles\""
|
|
"SUPER CONTROL, G, exec, gimp #\"GNU Image Manipulation Program\""
|
|
"SUPER CONTROL, M, exec, mattermost-desktop #\"Mattermost team chat client\""
|
|
"SUPER CONTROL, S, exec, signal-desktop #\"Signal encrypted messaging\""
|
|
"SUPER CONTROL, P, exec, hyprpicker -a #\"Pick color from screen\""
|
|
];
|
|
|
|
windowManagementBinds = [
|
|
"SUPER, F, fullscreen, #\"Toggle fullscreen mode\""
|
|
"SUPER, Q, killactive, #\"Close active window\""
|
|
"SUPER SHIFT, I, togglesplit, #\"Toggle split layout\""
|
|
"SUPER SHIFT, F, togglefloating, #\"Toggle floating mode\""
|
|
];
|
|
|
|
windowFocusBinds = [
|
|
"SUPER, down, movefocus, d #\"Move focus down\""
|
|
"SUPER, left, movefocus, l #\"Move focus left\""
|
|
"SUPER, right, movefocus, r #\"Move focus right\""
|
|
"SUPER, up, movefocus, u #\"Move focus up\""
|
|
];
|
|
|
|
windowMovementBinds = [
|
|
"SUPER SHIFT, down, movewindow, d #\"Move window down\""
|
|
"SUPER SHIFT, left, movewindow, l #\"Move window left\""
|
|
"SUPER SHIFT, right, movewindow, r #\"Move window right\""
|
|
"SUPER SHIFT, up, movewindow, u #\"Move window up\""
|
|
];
|
|
|
|
windowSwapBinds = [
|
|
"SUPER ALT, down, swapwindow, d #\"Swap active window with window below\""
|
|
"SUPER ALT, left, swapwindow, l #\"Swap active window with window on the left\""
|
|
"SUPER ALT, right, swapwindow, r #\"Swap active window with window on the right\""
|
|
"SUPER ALT, up, swapwindow, u #\"Swap active window with window above\""
|
|
];
|
|
|
|
workspacesSwitchBinds = [
|
|
"SUPER, 0, workspace, 10 #\"Switch to workspace 10\""
|
|
"SUPER, 1, workspace, 1 #\"Switch to workspace 1\""
|
|
"SUPER, 2, workspace, 2 #\"Switch to workspace 2\""
|
|
"SUPER, 3, workspace, 3 #\"Switch to workspace 3\""
|
|
"SUPER, 4, workspace, 4 #\"Switch to workspace 4\""
|
|
"SUPER, 5, workspace, 5 #\"Switch to workspace 5\""
|
|
"SUPER, 6, workspace, 6 #\"Switch to workspace 6\""
|
|
"SUPER, 7, workspace, 7 #\"Switch to workspace 7\""
|
|
"SUPER, 8, workspace, 8 #\"Switch to workspace 8\""
|
|
"SUPER, 9, workspace, 9 #\"Switch to workspace 9\""
|
|
"SUPER CONTROL, left, workspace, e-1 #\"Switch to previous workspace\""
|
|
"SUPER CONTROL, right, workspace, e+1 #\"Switch to next workspace\""
|
|
"SUPER, mouse_down, workspace, e+1 #\"Switch to next workspace with mouse\""
|
|
"SUPER, mouse_up, workspace, e-1 #\"Switch to previous workspace with mouse\""
|
|
];
|
|
|
|
workspacesSwapBinds = [
|
|
"SUPER SHIFT, 0, movetoworkspace, 10 #\"Move active window to workspace 10\""
|
|
"SUPER SHIFT, 1, movetoworkspace, 1 #\"Move active window to workspace 1\""
|
|
"SUPER SHIFT, 2, movetoworkspace, 2 #\"Move active window to workspace 2\""
|
|
"SUPER SHIFT, 3, movetoworkspace, 3 #\"Move active window to workspace 3\""
|
|
"SUPER SHIFT, 4, movetoworkspace, 4 #\"Move active window to workspace 4\""
|
|
"SUPER SHIFT, 5, movetoworkspace, 5 #\"Move active window to workspace 5\""
|
|
"SUPER SHIFT, 6, movetoworkspace, 6 #\"Move active window to workspace 6\""
|
|
"SUPER SHIFT, 7, movetoworkspace, 7 #\"Move active window to workspace 7\""
|
|
"SUPER SHIFT, 8, movetoworkspace, 8 #\"Move active window to workspace 8\""
|
|
"SUPER SHIFT, 9, movetoworkspace, 9 #\"Move active window to workspace 9\""
|
|
];
|
|
|
|
systemMediaAndControllsBinds = [
|
|
",XF86AudioLowerVolume, exec, noctalia-shell ipc call volume decrease #\"Lower system volume\""
|
|
",XF86AudioMute, exec, noctalia-shell ipc call volume muteOutput #\"Mute audio output\""
|
|
",XF86AudioNext, exec, noctalia-shell ipc call media next #\"Next media track\""
|
|
",XF86AudioPause, exec, noctalia-shell ipc call media pause #\"Pause media playback\""
|
|
",XF86AudioPlay, exec, noctalia-shell ipc call media play #\"Play media\""
|
|
",XF86AudioPrev, exec, noctalia-shell ipc call media previous #\"Previous media track\""
|
|
",XF86AudioRaiseVolume, exec, noctalia-shell ipc call volume increase #\"Raise system volume\""
|
|
",XF86MonBrightnessDown, exec, noctalia-shell ipc call brightness decrease #\"Decrease screen brightness\""
|
|
",XF86MonBrightnessUp, exec, noctalia-shell ipc call brightness increase #\"Increase screen brightness\""
|
|
];
|
|
|
|
mkBlock = header: lines:
|
|
lib.concatLines (
|
|
["# ${header}"]
|
|
++ (map (l: "bind = ${l}") lines)
|
|
);
|
|
|
|
fullConfig = lib.concatLines [
|
|
""
|
|
(mkBlock "1. MAIN APPS" mainBinds)
|
|
(mkBlock "2. SHIFT APPS" shiftBinds)
|
|
(mkBlock "3. ALT APPS" altBinds)
|
|
(mkBlock "4. CONTROL APPS" controlBinds)
|
|
(mkBlock "5. WINDOW MANAGEMENT" windowManagementBinds)
|
|
(mkBlock "6. WINDOWS FOCUS" windowFocusBinds)
|
|
(mkBlock "7. WINDOWS MOVEMENT" windowMovementBinds)
|
|
(mkBlock "8. WINDOWS SWAP" windowSwapBinds)
|
|
(mkBlock "9. WORKSPACES SWITCH" workspacesSwitchBinds)
|
|
(mkBlock "10. WORKSPACES SWAP" workspacesSwapBinds)
|
|
(mkBlock "11. SYSTEM MEDIA & CONTROLS" systemMediaAndControllsBinds)
|
|
];
|
|
in {
|
|
wayland.windowManager.hyprland.settings = {
|
|
extraConfig = fullConfig;
|
|
|
|
bindm = [
|
|
"SUPER, mouse:272, movewindow"
|
|
"SUPER, mouse:273, resizewindow"
|
|
];
|
|
};
|
|
}
|