Files
nixos/configs/hypr/hyprland.conf
T
2025-11-15 13:08:34 +00:00

384 lines
17 KiB
Plaintext

# Startup
exec-once= bash -c "wl-paste --watch cliphist store &"
exec-once= fcitx5 -d
exec-once= emacs --daemon
exec-once= dms run # DankShell
# Workspace Variables
$ws_game = 1
$ws_shell = 2
$ws_web = 3
$ws_music = 4
$ws_image = 5
$ws_chat = 6
$ws_audio = 7
$ws_video = 8
$ws_program = 9
$ws_extra = 0
# Monitors
source = ./hypr-monitors.conf
# Environment
# env=HYPRCURSOR_THEME,Bibata-Modern-Ice
env=HYPRCURSOR_SIZE,24
env=XDG_CURRENT_DESKTOP,Hyprland
env=XDG_SESSION_TYPE,wayland
env=XDG_SESSION_DESKTOP,Hyprland
env=QT_QPA_PLATFORM,wayland
env=QT_QPA_PLATFORMTHEME,qt6ct
env=XCURSOR_THEME,Bibata-Modern-Ice
env=XCURSOR_SIZE,24
# Colors
source = ./hypr-colors.conf
# Settings
animations {
bezier=myBezier, 0.05, 0.9, 0.1, 1.05
animation=windows, 1, 6, myBezier
animation=windowsOut, 1, 6, default, popin 80%
animation=border, 1, 8, default
animation=borderangle, 1, 6, default
animation=fade, 1, 6, default
animation=workspaces, 1, 3, default
enabled=true
}
debug {
disable_logs=true
}
decoration {
blur {
enabled=true
new_optimizations=on
passes=1
size=3
xray=true
}
shadow {
color=$shadow
enabled=true
range=4
render_power=3
}
rounding=10
}
dwindle {
preserve_split=true
pseudotile=true
}
ecosystem {
no_donation_nag=true
no_update_news=true
}
experimental {
xx_color_management_v4=true
}
general {
border_size=2
col.active_border=$primary_container
col.inactive_border=$secondary_container
gaps_in=2
gaps_out=4
layout=dwindle
}
input {
touchpad {
disable_while_typing=true
drag_lock=false
middle_button_emulation=true
natural_scroll=true
scroll_factor=0.500000
tap-to-click=true
}
follow_mouse=1
kb_layout=us
kb_model=
kb_options=
kb_rules=
kb_variant=
numlock_by_default=true
sensitivity=0
}
misc {
disable_hyprland_logo=false
disable_splash_rendering=true
key_press_enables_dpms=true
mouse_move_enables_dpms=true
}
# Window Rules
# Rule :: Window
$idleInhibFs = idleinhibit fullscreen
$idleInhibFo = idleinhibit focus
$ws = workspace
windowrule = $idleInhibFs, class:^(floorp)$
windowrule = $idleInhibFs, class:^(firefox)$
windowrule = $idleInhibFs, class:^(ghostty)$
windowrule = $idleInhibFs, class:^(brave-browser)$
windowrule = $idleInhibFo, class:^(mpv)$
windowrule = $idleInhibFo, class:^(firefox)$
windowrule = $idleInhibFo, class:^(floorp)$
windowrule = $idleInhibFo, class:^(spotify)$
windowrule = $idleInhibFo, class:^(Emacs|emacs)$
windowrule = $idleInhibFo, class:^(brave-browser)$
windowrule = $idleInhibFo, class:^(Discord|discord)$
windowrule = opacity 0.98 0.90, class:^(Discord|discord)$
windowrule = opacity 0.96 0.90, class:^(Emacs|emacs)$
windowrule = float, class:^(.*desktop-portal.*)$
windowrule = float, class:^(polkit.*agent.*)$
windowrule = float, class:^(praat)$
windowrule = float, class:^(network)$
windowrule = float, class:^(nm-)$
windowrule = float, class:^(Network)$
windowrule = float, class:^(Rofi)$
windowrule = float, class:^(Gimp)$
windowrule = float, class:^(thunar)$
windowrule = float, class:^(Nautilus)$
windowrule = float, title:^(LmDev-.*)$
windowrule = float, class:^(notification)$
windowrule = float, class:^(Genymotion Player)$
windowrule = float, class:^(launcher)$
windowrule = tile, class:^(Spotify)$
windowrule = tile, title:^(Minecraft)$
windowrule = $ws $ws_shell, class:^(KeePassXC)$
windowrule = $ws $ws_web, class:^(firefox)$
windowrule = $ws $ws_web, class:^(floorp)$
windowrule = $ws $ws_web, class:^(brave-browser)$
windowrule = $ws $ws_music, class:^(Spotify)$
windowrule = $ws $ws_chat, class:^(discord)$
windowrule = $ws $ws_chat, class:^(signal)$, title:^(Signal)$
windowrule = $ws $ws_video, class:^(.*obs.*)$
windowrule = $ws $ws_game, title:^(Minecraft)$
# Commands
# :Alias: :Command:
$lock = dms ipc call lock lock
$screenshot = grimblast --cursor copy output
$screenshotarea = hyprctl keyword animation 'fadeOut,0,0,default'; grimblast copy area; hyprctl keyword animation 'fadeOut,1,4,default'
$colorpick = hyprpicker -a -f hex
$emacs = emacsclient -c -a 'emacs'
$discord = discord --enable-blink-features=MiddleClickAutoscroll
# Binds
# Binds :: Modifiers
$none =
$altMod = ALT
$mainMod = SUPER
$noneCtrl = $none CTRL
$altCtrl = $altMod CTRL
$mainCtrl = $mainMod CTRL
$noneShift = $none SHIFT
$altShift = $altMod SHIFT
$mainShift = $mainMod SHIFT
$altCtrlShift = $altCtrl SHIFT
$noneCtrlShift = $noneCtrl SHIFT
$mainCtrlShift = $mainCtrl SHIFT
# Binds :: Programs
#:Bind: :Modifier: :Key: :Command: :Args:
bind = $altMod, Return, exec, ghostty
bind = $altShift, Return, exec, foot
bind = $mainShift, D, exec, $discord
bind = $mainShift, S, exec, signal-desktop
bind = $mainShift, E, exec, $emacs
bind = $mainMod, E, exec, thunar
bind = $mainMod, S, exec, spotify
bind = $mainMod, P, exec, $colorpick
bind = $none, Print, exec, $screenshotarea
bind = $noneShift, Print, exec, $screenshot
bind = $mainMod, Space, exec, dms ipc call spotlight toggle
bind = $mainMod, X, exec, dms ipc call powermenu toggle
bind = $mainMod, M, exec, dms ipc call processlist toggle
bind = $mainMod, I, exec, dms ipc call settings toggle
bind = $mainMod, V, exec, dms ipc call clipboard toggle
bind = $mainCtrl, P, exec, dms ipc call notepad toggle
bind = $mainCtrl, C, exec, dms ipc call control-center toggle
bind = $mainMod, N, exec, dms ipc call notifications toggle
bind = $mainShift, N, exec, dms ipc call night toggle
bind = $mainCtrl, B, exec, dms ipc call bar toggle
bind = $mainShift, P, pseudo,
bind = $mainMod, C, killactive,
bind = $mainMod, F, togglefloating,
bind = $mainShift, F, fullscreen
bind = $mainCtrl, S, togglesplit,
bind = $mainMod, right, resizeactive, 10 0
bind = $mainMod, left, resizeactive, -10 0
bind = $mainMod, up, resizeactive, 0 -10
bind = $mainMod, down, resizeactive, 0 10
bind = $mainCtrl, L, exec, $lock
bind = $mainCtrl, Q, exec, $lock
bind = $mainMod, F4, exit,
# Binds :: Navigation
#:Bind: :Modifier: :Key: :Command: :Args:
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
bind = $mainMod, comma, focusmonitor, -1
bind = $mainMod, period, focusmonitor, +1
bind = $mainShift, H, movewindow, l
bind = $mainShift, L, movewindow, r
bind = $mainShift, K, movewindow, u
bind = $mainShift, J, movewindow, d
bind = $mainShift, comma, movecurrentworkspacetomonitor, -1
bind = $mainShift, period, movecurrentworkspacetomonitor, +1
bind = $mainMod, $ws_game, workspace, $ws_game
bind = $mainMod, $ws_shell, workspace, $ws_shell
bind = $mainMod, $ws_web, workspace, $ws_web
bind = $mainMod, $ws_music, workspace, $ws_music
bind = $mainMod, $ws_image, workspace, $ws_image
bind = $mainMod, $ws_chat, workspace, $ws_chat
bind = $mainMod, $ws_audio, workspace, $ws_audio
bind = $mainMod, $ws_video, workspace, $ws_video
bind = $mainMod, $ws_program, workspace, $ws_program
bind = $mainMod, $ws_extra, workspace, name:extra
bind = $mainShift, $ws_game, movetoworkspace, $ws_game
bind = $mainShift, $ws_shell, movetoworkspace, $ws_shell
bind = $mainShift, $ws_web, movetoworkspace, $ws_web
bind = $mainShift, $ws_music, movetoworkspace, $ws_music
bind = $mainShift, $ws_image, movetoworkspace, $ws_image
bind = $mainShift, $ws_chat, movetoworkspace, $ws_chat
bind = $mainShift, $ws_audio, movetoworkspace, $ws_audio
bind = $mainShift, $ws_video, movetoworkspace, $ws_video
bind = $mainShift, $ws_program, movetoworkspace, $ws_program
bind = $mainShift, $ws_extra, movetoworkspace, name:extra
bind = $altShift, $ws_game, movetoworkspacesilent, $ws_game
bind = $altShift, $ws_shell, movetoworkspacesilent, $ws_shell
bind = $altShift, $ws_web, movetoworkspacesilent, $ws_web
bind = $altShift, $ws_music, movetoworkspacesilent, $ws_music
bind = $altShift, $ws_image, movetoworkspacesilent, $ws_image
bind = $altShift, $ws_chat, movetoworkspacesilent, $ws_chat
bind = $altShift, $ws_audio, movetoworkspacesilent, $ws_audio
bind = $altShift, $ws_video, movetoworkspacesilent, $ws_video
bind = $altShift, $ws_program, movetoworkspacesilent, $ws_program
bind = $altShift, $ws_extra, movetoworkspacesilent, name:extra
bind = $mainCtrlShift, right, movetoworkspace, +1
bind = $mainCtrlShift, left, movetoworkspace, -1
bind = $altCtrlShift, right, movetoworkspacesilent, +1
bind = $altCtrlShift, left, movetoworkspacesilent, -1
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bind = $mainMod, Tab, workspace, e+1
bind = $mainShift, Tab, workspace, e-1
bind = $mainCtrl, right, workspace, +1
bind = $mainCtrl, left, workspace, -1
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Binds :: MultiMedia
bindl = $none, XF86AudioPlay, exec, playerctl play-pause
bindl = $none, XF86AudioNext, exec, playerctl next
bindl = $none, XF86AudioPrev, exec, playerctl previous
bindl = $none, XF86AudioMute, exec, dms ipc call audio mute
bindl = $none, XF86AudioMicMute, exec, dms ipc call audio micmute
bindle = $none, XF86AudioRaiseVolume, exec, dms ipc call audio increment 3
bindle = $none, XF86AudioLowerVolume, exec, dms ipc call audio decrement 3
bindle = $none, XF86MonBrightnessUp, exec, dms ipc call brightness increment 5 ""
bindle = $none, XF86MonBrightnessDown, exec, dms ipc call brightness decrement 5 ""
# Binds :: Submap
# Binds :: Submap :: Resize
bind = $mainMod, R, submap, resize
submap = resize
bind = $none, escape, submap, reset
binde = $none, left, resizeactive, -10 0
bindr = $none, left, submap, reset
binde = $none, right, resizeactive, 10 0
bindr = $none, right, submap, reset
binde = $none, up, resizeactive, 0 10
bindr = $none, up, submap, reset
binde = $none, down, resizeactive, 0 -10
bindr = $none, down, submap, reset
binde = $none, H, resizeactive, -10 0
bindr = $none, H, submap, reset
binde = $none, J, resizeactive, 0 -10
bindr = $none, J, submap, reset
binde = $none, K, resizeactive, 0 10
bindr = $none, K, submap, reset
binde = $none, L, resizeactive, 10 0
bindr = $none, L, submap, reset
submap=reset
# Binds :: Submap :: Browser
bind = $mainMod, B, submap, browser
submap = browser
bind = $none, B, exec, brave
bindr = $none, B, submap, reset
bind = $noneShift, F, exec, firefox
bindr = $noneShift, F, submap, reset
bind = $none, F, exec, floorp
bindr = $none, F, submap, reset
bind = $none, escape, submap, reset
submap = reset
# Binds :: Submap :: Video
bind = $mainShift, V, submap, video
submap = video
bind = $none, O, exec, obs
bindr = $none, O, submap, reset
bind = $none, V, exec, kdenlive
bindr = $none, V, submap, reset
bind = $none, escape, submap, reset
submap = reset
# Gestures
gesture = 3, horizontal, workspace