Skip to content

Instantly share code, notes, and snippets.

@pschmitt
Last active February 17, 2024 10:00
Show Gist options
  • Save pschmitt/1cafdb733418c620e8fa3c0026c00837 to your computer and use it in GitHub Desktop.
Save pschmitt/1cafdb733418c620e8fa3c0026c00837 to your computer and use it in GitHub Desktop.
hyprland input config
# https://wiki.hyprland.org/Configuring/Binds/
$mod = SUPER
# hyprland binds
bind = $mod SHIFT, C, exec, $bin_dir/kill-active.sh
bind = $mod SHIFT, K, exec, hyprctl kill
bind = $mod SHIFT, Q, exec, $bin_dir/leave.sh
bind = $mod SHIFT, R, exec, $bin_dir/reload-config.sh
bind = $mod ALT, R, forcerendererreload,
# tiling
bind = $mod SHIFT, space, togglefloating,
bind = $mod ALT, space, togglesplit, # dwindle
bind = $mod, P, pseudo, # dwindle
bind = $mod SHIFT, comma, exec, $bin_dir/switch-layout.sh
bind = $mod, T, togglegroup
bind = $mod SHIFT, T, changegroupactive
bind = $mod, comma, changegroupactive
# Scroll through existing workspaces with mod + scroll
bind = $mod, mouse_down, workspace, e+1
bind = $mod, mouse_up, workspace, e-1
# Move/resize windows with mod + LMB/RMB and dragging
bindm = $mod, mouse:272, movewindow
bindm = $mod, mouse:273, resizewindow
# Fullscreen
bind = $mod, F, fullscreen,
# Maximize
bind = $mod, M, fullscreen, 1
# Fake fullscreen
bind = $mod SHIFT, F, fakefullscreen,
# Move windows with mod + arrow keys
bind = $mod, left, movewindow, l
bind = $mod, right, movewindow, r
bind = $mod, up, movewindow, u
bind = $mod, down, movewindow, d
# Swap windows with mod + s
bind = $mod, s, swapnext,
# Move window to next workspace/monitor
bind = $mod SHIFT, up, movewindow, mon:+1
bind = $mod SHIFT, up, focusmonitor, +1
bind = $mod SHIFT, up, movecursortocorner, 4
bind = $mod SHIFT, down, movewindow, mon:-1
bind = $mod SHIFT, down, focusmonitor, -1
bind = $mod SHIFT, down, movecursortocorner, 3
bind = $mod SHIFT, left, movetoworkspacesilent, -1
bind = $mod SHIFT, right, movetoworkspacesilent, +1
# Move focus with mod + arrow keys (vim style)
bind = $mod, h, movefocus, l
bind = $mod, l, movefocus, r
bind = $mod, k, movefocus, u
bind = $mod, j, movefocus, d
bind = $mod , tab, workspace, previous
bind = $mod ALT, left, workspace, -1
bind = $mod ALT, right, workspace, +1
# bind = $mod ALT, up, NOTHING
# bind = $mod ALT, down, NOTHING
# Switch workspaces with mod + [0-9]
bind = $mod, 1, moveworkspacetomonitor, 1 current
bind = $mod, 1, workspace, 1
bind = $mod, 2, moveworkspacetomonitor, 2 current
bind = $mod, 2, workspace, 2
bind = $mod, 3, moveworkspacetomonitor, 3 current
bind = $mod, 3, workspace, 3
bind = $mod, 4, moveworkspacetomonitor, 4 current
bind = $mod, 4, workspace, 4
bind = $mod, 5, moveworkspacetomonitor, 5 current
bind = $mod, 5, workspace, 5
bind = $mod, 6, moveworkspacetomonitor, 6 current
bind = $mod, 6, workspace, 6
bind = $mod, 7, moveworkspacetomonitor, 7 current
bind = $mod, 7, workspace, 7
bind = $mod, 8, moveworkspacetomonitor, 8 current
bind = $mod, 8, workspace, 8
bind = $mod, 9, moveworkspacetomonitor, 9 current
bind = $mod, 9, workspace, 9
bind = $mod, 0, moveworkspacetomonitor, 10 current
bind = $mod, 0, workspace, 10
# Move active window to a workspace with mod + SHIFT + [0-9]
bind = $mod SHIFT, 1, movetoworkspace, 1
bind = $mod SHIFT, 2, movetoworkspace, 2
bind = $mod SHIFT, 3, movetoworkspace, 3
bind = $mod SHIFT, 4, movetoworkspace, 4
bind = $mod SHIFT, 5, movetoworkspace, 5
bind = $mod SHIFT, 6, movetoworkspace, 6
bind = $mod SHIFT, 7, movetoworkspace, 7
bind = $mod SHIFT, 8, movetoworkspace, 8
bind = $mod SHIFT, 9, movetoworkspace, 9
bind = $mod SHIFT, 0, movetoworkspace, 10
binde = $mod SHIFT, h, resizeactive, -25 0
binde = $mod SHIFT, j, resizeactive, 0 25
binde = $mod SHIFT, k, resizeactive, 0 -25
binde = $mod SHIFT, l, resizeactive, 25 0
# Resize submap
$submap_resize = ↔️ resize
bind = $mod ALT, R, submap, $submap_resize
submap = $submap_resize
# sets repeatable binds for resizing the active window
binde = , right, resizeactive, 25 0
binde = , left, resizeactive, -25 0
binde = , up, resizeactive, 0 -25
binde = , down, resizeactive, 0 25
# use reset to go back to the global submap
bind = , escape, submap, reset
bind = , return, submap, reset
submap = reset
# Screenshot
bind = , Print, exec, $bin_dir/screenshot.sh
# apps
bind = $mod, Return, exec, $bin_dir/term.sh
bind = $mod SHIFT, Return, exec, $bin_dir/term.sh
bind = $mod SHIFT, M, exec, zhj hyprctl::fix-mouse
bind = $mod , W, exec, $bin_dir/run-or-raise.sh firefox
bind = $mod ALT , Y, exec, $bin_dir/browser-run-or-raise.sh --title youtube --url https://www.youtube.com
bind = $mod ALT , Z, exec, $bin_dir/zoom-home-room.sh
bind = $mod ALT , H, exec, $bin_dir/browser-run-or-raise.sh --url https://hass.ovm5.de --alt http://10.5.1.1:8123
# scratchpads
# bind = , F1, exec, pypr toggle term
# bind = , F1, exec, $bin_dir/resize-window.sh -w 50 -H 50 -c kitty-scratch
bind = , F1, exec, $bin_dir/scratchpad.sh term
bind = $mod , E, exec, $bin_dir/scratchpad.sh files
bind = $mod SHIFT, V, exec, $bin_dir/scratchpad.sh audio
$barify = $sway_bin_dir/barify
# brightness control
$brightness_up = $barify brightness up
$brightness_down = $barify brightness down
bindl = , XF86MonBrightnessUp, exec, $brightness_up
bindl = , XF86MonBrightnessDown, exec, $brightness_down
# Audio
$volume_sink_up = $barify sink up
$volume_sink_down = $barify sink down
$volume_sink_mute = $barify sink mute
$volume_source_up = $barify source up
$volume_source_down = $barify source down
$volume_source_mute = $barify source mute
bindl = , XF86AudioRaiseVolume, exec, $volume_sink_up
bindl = , XF86AudioLowerVolume, exec, $volume_sink_down
bindl = , XF86AudioMute, exec, $volume_sink_mute
bindl = , XF86AudioMicMute, exec, ~/bin/obs.zsh toggle-mute
bindl = $mod, space, exec, ~/bin/obs.zsh toggle-mute
# playerctl
$playerctl_toggle = $sway_bin_dir/playerctl-wrapper.sh toggle
$playerctl_play = $sway_bin_dir/playerctl-wrapper.sh play
$playerctl_pause = $sway_bin_dir/playerctl-wrapper.sh pause
$playerctl_next = $sway_bin_dir/playerctl-wrapper.sh next
$playerctl_previous = $sway_bin_dir/playerctl-wrapper.sh previous
bindl = , XF86AudioPlay, exec, $playerctl_toggle
bindl = , XF86AudioPause, exec, $playerctl_pause
bindl = , XF86AudioNext, exec, $playerctl_next
bindl = , XF86AudioPrev, exec, $playerctl_previous
bindl = CONTROL ALT, up, exec, $playerctl_toggle
bindl = CONTROL ALT, right, exec, $playerctl_next
bindl = CONTROL ALT, left, exec, $playerctl_previous
# Toggle mute
# obs-studio
bind = $mod ALT, a, exec, ~/bin/obs.zsh alt
bind = $mod ALT, w, exec, ~/bin/obs.zsh webcam
bind = $mod SHIFT ALT, w, exec, ~/bin/zhj zoom::double-click-on-webcam
bindl = $mod ALT, b, exec, ~/bin/obs.zsh brb --mute
bind = $mod ALT, f, exec, ~/bin/obs.zsh freeze
# Reactions
bind = $mod ALT, up, exec, ~/bin/obs.zsh thumbs-up
bind = $mod ALT, down, exec, ~/bin/obs.zsh thumbs-down
bind = $mod ALT, period, exec, ~/bin/obs.zsh emoji
# wofi
bind = $mod , R, exec, ~/bin/wofi.zsh run
bind = $mod , period, exec, $sway_bin_dir/wofi-emoji.sh
bind = $mod ALT, c, exec, ~/.config/waybar/custom_modules/clipboard.sh
bind = $mod ALT, v, exec, zhj clipboard::revert --notify
bind = $mod ALT, p, exec, ~/bin/wofi.zsh bitwarden
bind = $mod ALT, m, exec, ~/bin/wofi.zsh misc
bind = $mod ALT, j, exec, ~/bin/wofi.zsh meetings
bind = $mod ALT, g, exec, ~/bin/wofi.zsh bitwarden-work
bind = $mod ALT, s, exec, ~/bin/wofi.zsh soundboard
bind = $mod SHIFT, s, exec, ~/bin/wofi.zsh soundboard stop
# vim:set ft=hypr et ts=2 sw=2:
device:pfu-limited-hhkb-hybrid {
kb_layout = de_hhkb
}
device:pfu-limited-hhkb-hybrid-consumer-control {
kb_layout = de_hhkb
}
device:pfu-limited-hhkb-hybrid-keyboard {
kb_layout = de_hhkb
}
device:hhkb-hybrid_1-keyboard {
kb_layout = de_hhkb
}
input {
kb_layout = de,us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 2
touchpad {
natural_scroll = no
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
# TODO Add bluetooth hhkb config
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
# device:epic-mouse-v1 {
# sensitivity = -0.5
# }
# vim: set ft=hypr et ts=2 sw=2 :
$lock = $bin_dir/lock.sh
$idle = $bin_dir/idle.sh
exec-once = $ensure1 -j hyprland-idle -- $idle
bind = $mod ALT, L, exec, $lock --now
# DIRTYFIX For x13 where swaylock fails to register keypresses after resuming
# from sleep
bindl = $mod CONTROL ALT, L, exec, ~/bin/zhj "lockscreen::restart"
# https://wiki.hyprland.org/Configuring/Binds/#switches
bindl = , switch:off:Lid Switch, exec, $lock
bindl = , switch:on:Lid Switch, exec, hyprctl dispatch dpms on
# firefox
windowrule = idleinhibit fullscreen, ^(firefox)$
windowrule = idleinhibit always, title:^(Picture-in-Picture)$
# google-chrome
windowrule = idleinhibit fullscreen, ^(Google-chrome)$
windowrule = idleinhibit fullscreen, ^(Chromium)$
# vim: set ft=hypr ts=2 sw=2 et:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment