[Hyprland] Add new bind layout

This commit is contained in:
2025-10-16 16:18:08 +02:00
parent a9c73ba9d9
commit 6540bda07a
12 changed files with 338 additions and 39 deletions

View File

@@ -0,0 +1,14 @@
# Hyprmode
Using Vim Motions and in general vim-style commands is really neat - so why not apply to the Window Manager as well?
## Mapping
- `Super + W`: Manage windows (close windows, resize them, change split)
- `Super + Y`: Workspace management (change workspace, move windows to workspaces)
- `Super + C`: Notification management (dismiss notifications)
- `Super + X`: Launch commands (for software)
- `Super + D`: Device management (brightness, volume, media, etc)
- `Super + S`: Screenshot
There are several quick binds available, such as `Super + [0-9]` to switch workspaces, `Super + Shift + [0-9]` to move windows as well as `Super + [hjkl]` to move focus.
Additionally, there are shortcuts to commonly used apps, such as `Super + Enter` for `kitty`, `Super + Shift + L` for `librewolf` and `Super + Space` for `rofi`

View File

@@ -0,0 +1,45 @@
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ device config │
# ╰────────────────────────────────────────────────╯
# ── Brightness-Control ──────────────────────────────────────────────
bind = ,code:232, exec, light -U 5 && notify-send 'Display brightness decreased by 5%'
bind = ,code:233, exec, light -A 5 && notify-send 'Display brightness increased by 5%'
# ── Volume control ──────────────────────────────────────────────────
bind = ,code:123, exec, pamixer -i 5
bind = ,code:122, exec, pamixer -d 5
bind = ,code:121, exec, pamixer -t
# ── Submap ──────────────────────────────────────────────────────────
bind = $mainMod, W, submap, device
submap = device
# ── FPV goggles binds ───────────────────────────────────────────────
bind = CTRL, D, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 1920x0, 1, mirror, DP-1 && notify-send 'Set FPV goggles to mirror main screen' --app-name="Hyprctl"
bind = CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 3840x0, 1 && notify-send 'Set to expand FPV goggles' --app-name="Hyprctl"
# ── Monitor config binds ────────────────────────────────────────────
bind = SHIFT, D, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1920x0, 1, mirror, eDP-1 && notify-send 'Set to mirror internal display'
bind = SHIFT, E, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1920x0, 1 && notify-send 'Set to expand external display'
# ── Internal display controls ───────────────────────────────────────
bind = , E, exec, hyprctl keyword monitor eDP-1, 2880x1800@60, 0x0, 1.5 && cpupower-gui -b && notify-send 'Set to battery optimized settings'
bind = , B, exec, hyprctl keyword monitor eDP-1, 2880x1800@120, 0x0, 1.5 && cpupower-gui -b && notify-send 'Set to balanced performance settings'
bind = , P, exec, hyprctl keyword monitor eDP-1, 2880x1800@120, 0x0, 1.5 && cpupower-gui -p && notify-send 'Set to performance optimized settings'
# ── Using docked ────────────────────────────────────────────────────
bind = , D, exec, hyprctl keyword monitor eDP-1, disable
# ── Exit submap ─────────────────────────────────────────────────────
bind = , escape, submap, reset
submap = reset
# ────────────────────────────────────────────────────────────────────

View File

@@ -0,0 +1,51 @@
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ App launching │
# ╰────────────────────────────────────────────────╯
bind = $mainMod SHIFT, L, exec, librewolf
bind = $mainMod SHIFT, D, exec, vesktop
bind = $mainMod SHIFT, Z, exec, zathura
bind = $mainMod, Return, exec, kitty
# ── Rofi ────────────────────────────────────────────────────────────
bind = $mainMod, Space, exec, killall rofi || rofi -show combi -modes combi -combi-modes "window,drun,run"
bind = $mainMod SHIFT, H, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
# ── Power / logout ──────────────────────────────────────────────────
bind = $mainMod, escape, exec, wlogout
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ Launch submap │
# ╰────────────────────────────────────────────────╯
bind = $mainMod, X, submap, launch
submap = launch
# ── Kitty ───────────────────────────────────────────────────────────
bind = , K, exec, kitty
bind = , Return, exec, kitty
# ── Others ──────────────────────────────────────────────────────────
bind = , L, exec, librewolf
bind = , E, exec, thunar
bind = , D, exec, vesktop
bind = , V, exec, vscodium
bind = , T, exec, thunderbird
bind = , H, exec, heroic
bind = , Z, exec, zathura
bind = , A, exec, notify-send 'AirPlay server starting...' --app-name="AirPlay Audio" && terminator -T "hidden-terminator" -e "systemctl start avahi-daemon && shairport-sync -a LinuxPlay"
bind = SHIFT, A, exec, notify-send 'AirPlay video server starting...' --app-name="AirPlay Video" && terminator -T "hidden-terminator" -e "systemctl start avahi-daemon && sleep 5 && uxplay -n LinuxVideoPlay -nh"
bind = , S, exec, notify-send 'Steam is launching...' --app-name="Steam" && steam
bind = , O, exec, terminator -e "~/projects/dotfiles/ai.sh"
# ── Exit submap ─────────────────────────────────────────────────────
bind = , escape, submap, reset
submap = reset
# ────────────────────────────────────────────────────────────────────

View File

@@ -0,0 +1,19 @@
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ Screenshotting binds │
# ╰────────────────────────────────────────────────╯
bind = $mainMod, S, submap, screenshotting
submap = screenshotting
bind = , Y, exec, grimblast --notify copy area
bind = , C, exec, grimblast --notify copysave area
bind = , S, exec, grimblast --notify save area
bind = SHIFT, Y, exec, grimblast --notify copy screen
bind = SHIFT, C, exec, grimblast --notify copysave screen
bind = SHIFT, S, exec, grimblast --notify save screen
# ── Exit submap ─────────────────────────────────────────────────────
bind = , escape, submap, reset
submap = reset
# ────────────────────────────────────────────────────────────────────

View File

@@ -0,0 +1,40 @@
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ Window management submap │
# ╰────────────────────────────────────────────────╯
bind = $mainMod, Q, killactive
# ── Resize, move using mouse plus mainMod ───────────────────────────
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# ── Submap ──────────────────────────────────────────────────────────
bind = $mainMod, W, submap, windowing
submap = windowing
# ── Resize windows ──────────────────────────────────────────────────
binde = , L, resizeactive, 10 0
binde = , H, resizeactive, -10 0
binde = , K, resizeactive, 0 -10
binde = , J, resizeactive, 0 10
# ── Change splitratio ───────────────────────────────────────────────
binde = SHIFT, H, splitratio, -0.01
binde = SHIFT, L, splitratio, +0.01
# ── Kill, freeze, etc ───────────────────────────────────────────────
bind = SHIFT, f, exec, hyprfreeze -a
bind = , x, killactive
bind = , q, killactive
bind = , f, fullscreen
bind = , v, togglefloating
bind = SHIFT, k, exec, notify-send 'Insta-Kill activated' --app-name="Hyprctl" && hyprctl kill
# ── Exit submap ─────────────────────────────────────────────────────
bind = , escape, submap, reset
submap = reset
# ────────────────────────────────────────────────────────────────────

View File

@@ -0,0 +1,118 @@
# ┌ ┐
# │ Switch workspaces with mainMod + [0-9] │
# └ ┘
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# ┌ ┐
# │ Move active window to a workspace with │
# │ mainMod + SHIFT + [0-9] │
# └ ┘
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# ┌ ┐
# │ Move focus with vim motions │
# └ ┘
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, j, movefocus, d
bind = $mainMod, k, movefocus, u
# ┌ ┐
# │ Special workspace │
# └ ┘
bind = $mainMod SHIFT, M, movetoworkspace, special
bind = $mainMod, M, togglespecialworkspace
# ┌ ┐
# │ Scroll through existing workspaces with │
# │ mainMod + scroll │
# └ ┘
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# ┌ ┐
# │ move to next window / previous window with │
# │ ALT + Tab / SHIFT + ALT + Tab │
# └ ┘
bind = ALT SHIFT, tab, cyclenext, prev
bind = ALT, tab, focusurgentorlast
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ Submap for workspace management │
# ╰────────────────────────────────────────────────╯
bind = $mainMod, Y, submap, workspace
submap = workspace
# ── Move to workspace ───────────────────────────────────────────────
bind = , 1, workspace, 1
bind = , 2, workspace, 2
bind = , 3, workspace, 3
bind = , 4, workspace, 4
bind = , 5, workspace, 5
bind = , 6, workspace, 6
bind = , 7, workspace, 7
bind = , 8, workspace, 8
bind = , 9, workspace, 9
bind = , 0, workspace, 10
# ── Move active window to workspace ─────────────────────────────────
bind = SHIFT, 1, movetoworkspace, 1
bind = SHIFT, 2, movetoworkspace, 2
bind = SHIFT, 3, movetoworkspace, 3
bind = SHIFT, 4, movetoworkspace, 4
bind = SHIFT, 5, movetoworkspace, 5
bind = SHIFT, 6, movetoworkspace, 6
bind = SHIFT, 7, movetoworkspace, 7
bind = SHIFT, 8, movetoworkspace, 8
bind = SHIFT, 9, movetoworkspace, 9
bind = SHIFT, 0, movetoworkspace, 10
# ── Move workspace with vim motions or mouse scroll ─────────────────
bind = , h, workspace, e-1
bind = , l, workspace, e+1
bind = , mouse_down, workspace, e+1
bind = , mouse_up, workspace, e-1
# ── Move window to workspace with vim motions ───────────────────────
bind = SHIFT, h, movetoworkspace, e-1
bind = SHIFT, l, movetoworkspace, e+1
# ── Special workspace ───────────────────────────────────────────────
bind = , s, togglespecialworkspace
bind = SHIFT, s, movetoworkspace, special
# ── dwindle ─────────────────────────────────────────────────────────
bind = , M, layoutmsg, swapsplit
# ── Exit submap ─────────────────────────────────────────────────────
bind = , escape, submap, reset
submap = reset
# ────────────────────────────────────────────────────────────────────

View File

@@ -0,0 +1,14 @@
$mainMod = SUPER
source=./modal-binds/workspace.conf
source=./modal-binds/launch.conf
source=./modal-binds/window-management.conf
source=./modal-binds/screenshot.conf
source=./modal-binds/device.conf
bind = CTRL ALT, Delete, exec, notify-send 'I am not Windows' 'Did ya really think that was gonna do anything? Only an eternally broken OS could need such a stupid keybind'
bind = ALT, F4, exec, notify-send 'I am not Windows' 'That just feels like a way too unergonomic keybind to be used for such a common action'
bind = $mainMod, left, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, right, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, up, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, down, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'