Files
nixos/configs/hypr/hyprland.conf
T
2026-01-25 13:38:53 +00:00

427 lines
19 KiB
Plaintext

# Startup
# Plugin loading
exec-once = hyprctl plugin load "$HYPR_PLUGIN_DIR/lib/libhyprexpo.so"
exec-once = hyprctl plugin load "$HYPR_PLUGIN_DIR/lib/libhyprscrolling.so"
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
source = ./dms/outputs.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=scrolling
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.0
}
misc {
disable_hyprland_logo=false
disable_splash_rendering=true
key_press_enables_dpms=true
mouse_move_enables_dpms=true
}
plugin {
hyprexpo {
columns = 3
gap_size = 5
bg_col = $background
workspace_method = center current
gesture_distance = 300
}
hyprscrolling {
column_width = 0.7
fullscreen_on_one_column = true
focus_fit_method = 1
}
}
# Window Rules
# Rule :: Window
$idleInhibFs = idle_inhibit fullscreen
$idleInhibFo = idle_inhibit focus
$ws = workspace
windowrule = match:class ^(floorp)$, $idleInhibFs
windowrule = match:class ^(firefox)$, $idleInhibFs
windowrule = match:class ^(ghostty)$, $idleInhibFs
windowrule = match:class ^(brave-browser)$, $idleInhibFs
windowrule = match:class ^(mpv)$, $idleInhibFo
windowrule = match:class ^(firefox)$, $idleInhibFo
windowrule = match:class ^(floorp)$, $idleInhibFo
windowrule = match:class ^(spotify)$, $idleInhibFo
windowrule = match:class ^(Emacs|emacs)$, $idleInhibFo
windowrule = match:class ^(brave-browser)$, $idleInhibFo
windowrule = match:class ^(Discord|discord)$, $idleInhibFo
windowrule = match:class ^(Discord|discord)$, opacity 0.98 0.90
windowrule = match:class ^(Emacs|emacs)$, opacity 0.96 0.90
windowrule = match:class ^(.*Emulator.*)$, float on
windowrule = match:class ^(.*desktop-portal.*)$, float on
windowrule = match:class ^(org.quickshell)$, float on
windowrule = match:class ^(polkit.*agent.*)$, float on
windowrule = match:class ^(praat)$, float on
windowrule = match:class ^(network)$, float on
windowrule = match:class ^(nm-)$, float on
windowrule = match:class ^(Network)$, float on
windowrule = match:class ^(Rofi)$, float on
windowrule = match:class ^(Gimp)$, float on
windowrule = match:class ^(thunar)$, float on
windowrule = match:class ^(Nautilus)$, float on
windowrule = match:title ^(LmDev-.*)$, float on
windowrule = match:class ^(notification)$, float on
windowrule = match:class ^(Genymotion Player)$, float on
windowrule = match:class ^(launcher)$, float on
windowrule = match:class steam, match:title ^(Friends List)$, float on
windowrule = match:class ^(Spotify)$, tile on
windowrule = match:title ^(Minecraft)$, tile on
windowrule = match:class ^(KeePassXC)$, $ws $ws_shell
windowrule = match:class ^(firefox)$, $ws $ws_web
windowrule = match:class ^(floorp)$, $ws $ws_web
windowrule = match:class ^(brave-browser)$, $ws $ws_web
windowrule = match:class ^(Spotify)$, $ws $ws_music
windowrule = match:class ^(discord)$, $ws $ws_chat
windowrule = match:class ^(signal)$, match:title ^(Signal)$, $ws $ws_chat
windowrule = match:class ^(.*)$, match:title ^(.*WhatsApp.*)$, $ws $ws_chat
windowrule = match:class ^(.*obs.*)$, $ws $ws_video
windowrule = match:title ^(Minecraft)$, $ws $ws_game
# 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 = $mainShift, F, exec, focus
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 = $mainMod, G, hyprexpo:expo, toggle
bind = $mainShift, P, pseudo,
bind = $mainMod, C, killactive,
bind = $altMod, F4, killactive,
bind = $mainMod, F, togglefloating,
bind = $mainCtrl, F, fullscreen
bind = $mainCtrl, S, togglesplit,
binde = $mainMod, right, resizeactive, 10 0
binde = $mainMod, left, resizeactive, -10 0
binde = $mainMod, up, resizeactive, 0 -10
binde = $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, K, layoutmsg, move -col # Binds for 'scrolling' layout
# bind = $mainMod, J, layoutmsg, move +col # Binds for 'scrolling' layout
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
# Binds :: Global :: Discord
bind = $none, F7, pass, class:^(discord|Discord)$
bind = $none, F8, pass, class:^(discord|Discord)$
# bind = $none, T, pass, class:^(discord|Discord)$
# Binds :: Global :: OBS
bind = $none, F9, pass, class:^(.*obs.*)$
# Gestures
gesture = 3, horizontal, workspace
source = ./dms/outputs.conf