Files
dotfiles/hypr/.config/hypr/hyprland.conf
2026-01-06 10:49:57 +01:00

263 lines
7.1 KiB
Plaintext

##################################
# zegonix hyprland configuration #
##################################
# monitors setup
## this is separated into its own file in order to
## be able to maintain multiple configurations
source = ~/.config/hypr/monitors.conf
workspace = 1, monitor:$main_display
workspace = 2, monitor:$secondary_display
exec-once = hyprctl dispatch workspace 1
# programs
$screenlocker = hyprlock
$terminal = foot
$menu = fuzzel
# setup environment
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
exec-once = tmux setenv -g HYPRLAND_INSTANCE_SIGNATURE "$HYPRLAND_INSTANCE_SIGNATURE"
exec-once = hyprpaper
exec-once = hypridle
exec-once = waybar
# keybindings
$Mod = SUPER
bind = $Mod, Escape, exec, $screenlocker
bind = $Mod, Return, exec, $terminal
bind = $Mod, t, exec, $terminal tmux attach
bind = $Mod, d, exec, $menu
bind = $Mod, q, killactive,
bind = $Mod SHIFT, q, forcekillactive
bind = $Mod, a, exec, audio-sink-switcher.sh
bind = $Mod, m, exec, hyprland-kb-layout-switcher.sh
bind = $Mod SHIFT, m, exec, hyprctl switchxkblayout all next
## move focus
bind = $Mod, h, movefocus, l
bind = $Mod, j, movefocus, d
bind = $Mod, k, movefocus, u
bind = $Mod, l, movefocus, r
bind = $Mod, left, movefocus, l
bind = $Mod, down, movefocus, d
bind = $Mod, up, movefocus, u
bind = $Mod, right, movefocus, r
## move focused window
bind = $Mod SHIFT, h, movewindow, l
bind = $Mod SHIFT, j, movewindow, d
bind = $Mod SHIFT, k, movewindow, u
bind = $Mod SHIFT, l, movewindow, r
bind = $Mod SHIFT, left, movewindow, l
bind = $Mod SHIFT, down, movewindow, d
bind = $Mod SHIFT, up, movewindow, u
bind = $Mod SHIFT, right, movewindow, r
## switch to numbered workspace
bind = $Mod, 1, workspace, 1
bind = $Mod, 2, workspace, 2
bind = $Mod, 3, workspace, 3
bind = $Mod, 4, workspace, 4
bind = $Mod, 5, workspace, 5
bind = $Mod, 6, workspace, 6
bind = $Mod, 7, workspace, 7
bind = $Mod, 8, workspace, 8
bind = $Mod, 9, workspace, 9
bind = $Mod, 0, workspace, 10
## move active window to numbered workspace
bind = $Mod SHIFT, 1, movetoworkspacesilent, 1
bind = $Mod SHIFT, 2, movetoworkspacesilent, 2
bind = $Mod SHIFT, 3, movetoworkspacesilent, 3
bind = $Mod SHIFT, 4, movetoworkspacesilent, 4
bind = $Mod SHIFT, 5, movetoworkspacesilent, 5
bind = $Mod SHIFT, 6, movetoworkspacesilent, 6
bind = $Mod SHIFT, 7, movetoworkspacesilent, 7
bind = $Mod SHIFT, 8, movetoworkspacesilent, 8
bind = $Mod SHIFT, 9, movetoworkspacesilent, 9
bind = $Mod SHIFT, 0, movetoworkspacesilent, 10
## move active window and switch to workspace
bind = $Mod ALT, 1, movetoworkspace, 1
bind = $Mod ALT, 2, movetoworkspace, 2
bind = $Mod ALT, 3, movetoworkspace, 3
bind = $Mod ALT, 4, movetoworkspace, 4
bind = $Mod ALT, 5, movetoworkspace, 5
bind = $Mod ALT, 6, movetoworkspace, 6
bind = $Mod ALT, 7, movetoworkspace, 7
bind = $Mod ALT, 8, movetoworkspace, 8
bind = $Mod ALT, 9, movetoworkspace, 9
bind = $Mod ALT, 0, movetoworkspace, 10
# .. alt + tab ..
bind = ALT SHIFT, Tab, workspace, e-1
bind = ALT, Tab, workspace, e+1
# move focused workspace to output
bind = $Mod, u, movecurrentworkspacetomonitor, l
bind = $Mod, i, movecurrentworkspacetomonitor, d
bind = $Mod, o, movecurrentworkspacetomonitor, u
bind = $Mod, p, movecurrentworkspacetomonitor, r
## make window fullscreen
bind = $Mod, f, fullscreen
## mouse integration for moving and resizing windows
bindm = $Mod, mouse:272, movewindow
bindm = $Mod, mouse:273, resizewindow
## volume control
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
## play/pause events
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioStop, exec, playerctl stop
# screenshot utility
$screenshot_directory = $HOME/Pictures/screenshots/
exec = mkdir -p $screenshot_directory
bind = $Mod, s, exec, slurp | grim -g - - | wl-copy
bind = $Mod SHIFT, s, exec, slurp | grim -g - "$screenshot_directory/$(date '+%Y%m%d_%H%M%S')_screenshot.png"
#FIX:############
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
###################
### PERMISSIONS ###
###################
# See https://wiki.hyprland.org/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
input {
# keyboard
kb_layout = us, us, ch
kb_variant = basic, intl, basic
# mouse
sensitivity = 0.5
accel_profile = flat
# cursor
follow_mouse = 2
float_switch_override_focus = 0
}
cursor {
no_hardware_cursors = true
}
# general settings
general {
# layout
layout = master
# borders
border_size = 1
gaps_in = 6
gaps_out = 12
col.inactive_border = rgba(00000000)
col.active_border = rgba(15D7E5FF)
col.nogroup_border = rgba(00000000)
col.nogroup_border_active = rgba(15D7E5FF)
# behaviour
no_focus_fallback = false
resize_on_border = true
extend_border_grab_area = 8
hover_icon_on_border = true
resize_corner = 0
# tearing
# potentially exclude games from buffering?
allow_tearing = false
}
# layout settings
master {
mfact = 0.5
new_status = slave
new_on_active = after
orientation = left
}
# visual settings
decoration {
# corners
rounding = 0
rounding_power = 2
# transparency
active_opacity = 1.0
inactive_opacity = 1.0
fullscreen_opacity = 1.0
# misc
dim_inactive = false
border_part_of_window = true
shadow:enabled = false
blur:enabled = false
}
# this and that
misc {
disable_hyprland_logo = true
font_family = JetBrainsMonoNerdFont
splash_font_family = JetBrainsMonoNerdFont
mouse_move_focuses_monitor = false
mouse_move_enables_dpms = false
key_press_enables_dpms = true
focus_on_activate = false
allow_session_lock_restore = true
background_color = rgba(202020FF)
middle_click_paste = false
}
# bääh
animations:enabled = false
# window rules
windowrule = match:class steam_app.*, idle_inhibit always
windowrule = match:title Steam, tile true
windowrule = match:title Friends List, tile true
windowrule = match:class foot, opacity 0.9
windowrule = match:class com.mitchellh.ghostty, opacity 0.9
windowrule = match:class SpeedCrunch, opacity 0.93
# ..
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP