Files
Nixos-Config/config/hypr/hyprland.conf
2026-04-20 15:08:47 +00:00

234 lines
8.5 KiB
Plaintext

# ══════════════════════════════════════════
# HYPRLAND CONFIGURATION — Omarchy-style
# ══════════════════════════════════════════
# Keyboard-first. Consistent keybinds. Clean aesthetics.
# Super is the main modifier (like omarchy).
# ══════════════════════════════════════════
# ── Monitors ─────────────────────────────
# Adjust for your setup. "preferred" auto-detects.
monitor = , preferred, auto, 1
# ── Autostart ────────────────────────────
exec-once = waybar
exec-once = walker --gapplication-service
exec-once = mako
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
exec-once = wl-clip-persist --clipboard regular
exec-once = nm-applet --indicator
exec-once = blueman-applet
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# ── General ──────────────────────────────
general {
gaps_in = 4
gaps_out = 8
border_size = 2
# Gruvbox colors
col.active_border = rgba(d79921ff) rgba(b8bb26ff) 45deg
col.inactive_border = rgba(504945ff)
layout = dwindle
allow_tearing = false
}
# ── Decoration ───────────────────────────
decoration {
rounding = 8
blur {
enabled = true
size = 6
passes = 2
new_optimizations = true
xray = false
}
shadow {
enabled = true
range = 12
render_power = 3
color = rgba(1d2021cc)
}
}
# ── Animations ───────────────────────────
animations {
enabled = true
bezier = ease, 0.25, 0.1, 0.25, 1
bezier = overshot, 0.05, 0.9, 0.1, 1.1
animation = windows, 1, 4, overshot, slide
animation = windowsOut, 1, 4, ease, slide
animation = fade, 1, 4, ease
animation = workspaces, 1, 4, overshot, slidevert
animation = border, 1, 6, ease
}
# ── Layout ───────────────────────────────
dwindle {
pseudotile = true
preserve_split = true
force_split = 2
}
master {
new_status = master
}
# ── Input ────────────────────────────────
input {
kb_layout = us
kb_options = caps:escape
follow_mouse = 1
sensitivity = 0
touchpad {
natural_scroll = true
tap-to-click = true
drag_lock = true
}
}
gestures {
workspace_swipe = true
workspace_swipe_fingers = 3
}
# ── Misc ─────────────────────────────────
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
force_default_wallpaper = 0
vfr = true
}
# ══════════════════════════════════════════
# KEYBINDINGS — Omarchy-inspired
# ══════════════════════════════════════════
# Super = main modifier
# Super + Return = terminal
# Super + Space = app launcher
# Super + Shift + Return = browser
# Super + Q = close window
# Super + K = show all keybinds (via walker)
# ══════════════════════════════════════════
$mod = SUPER
# ── Core ─────────────────────────────────
bind = $mod, Return, exec, alacritty
bind = $mod SHIFT, Return, exec, firefox # Change to helium if installed
bind = $mod, Space, exec, walker
bind = $mod, Q, killactive
bind = $mod SHIFT, Q, exit
bind = $mod, V, togglefloating
bind = $mod, F, fullscreen
bind = $mod, P, pseudo # dwindle pseudo-tile
bind = $mod, J, togglesplit # dwindle toggle split direction
# ── Applications ─────────────────────────
bind = $mod, E, exec, nautilus # File manager
bind = $mod, B, exec, bitwarden # Password manager
bind = $mod SHIFT, S, exec, spotify
bind = $mod, C, exec, cursor # Cursor IDE
bind = $mod SHIFT, C, exec, code # VS Code (antigravity)
# ── Window Focus (vim keys) ──────────────
bind = $mod, h, movefocus, l
bind = $mod, l, movefocus, r
bind = $mod, k, movefocus, u
bind = $mod, j, movefocus, d
# ── Window Move ──────────────────────────
bind = $mod SHIFT, h, movewindow, l
bind = $mod SHIFT, l, movewindow, r
bind = $mod SHIFT, k, movewindow, u
bind = $mod SHIFT, j, movewindow, d
# ── Window Resize ────────────────────────
binde = $mod CTRL, h, resizeactive, -40 0
binde = $mod CTRL, l, resizeactive, 40 0
binde = $mod CTRL, k, resizeactive, 0 -40
binde = $mod CTRL, j, resizeactive, 0 40
# ── Workspaces ───────────────────────────
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 window to workspace
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
# Workspace navigation
bind = $mod, Tab, workspace, e+1
bind = $mod SHIFT, Tab, workspace, e-1
# ── Special Workspace (Scratchpad) ───────
bind = $mod, S, togglespecialworkspace, magic
bind = $mod SHIFT, S, movetoworkspace, special:magic
# ── Screenshots ──────────────────────────
bind = , Print, exec, grim -g "$(slurp)" - | swappy -f -
bind = $mod, Print, exec, grim - | swappy -f -
# ── Media Keys ───────────────────────────
bindel = , XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise
bindel = , XF86AudioLowerVolume, exec, swayosd-client --output-volume lower
bindl = , XF86AudioMute, exec, swayosd-client --output-volume mute-toggle
bindl = , XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle
bindel = , XF86MonBrightnessUp, exec, swayosd-client --brightness raise
bindel = , XF86MonBrightnessDown, exec, swayosd-client --brightness lower
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPrev, exec, playerctl previous
# ── Clipboard History ────────────────────
bind = $mod CTRL, V, exec, cliphist list | walker --dmenu | cliphist decode | wl-copy
# ── Lock Screen ──────────────────────────
bind = $mod CTRL, L, exec, hyprlock
# ── Mouse Bindings ───────────────────────
bindm = $mod, mouse:272, movewindow
bindm = $mod, mouse:273, resizewindow
# ── Window Rules ─────────────────────────
windowrulev2 = float, class:^(pavucontrol)$
windowrulev2 = float, class:^(blueman-manager)$
windowrulev2 = float, class:^(nm-connection-editor)$
windowrulev2 = float, class:^(bitwarden)$
windowrulev2 = float, title:^(Picture-in-Picture)$
windowrulev2 = pin, title:^(Picture-in-Picture)$
# ── Environment Variables ────────────────
env = XCURSOR_SIZE, 24
env = QT_QPA_PLATFORMTHEME, qt5ct
env = QT_QPA_PLATFORM, wayland
env = GDK_BACKEND, wayland
env = SDL_VIDEODRIVER, wayland
env = CLUTTER_BACKEND, wayland
env = XDG_CURRENT_DESKTOP, Hyprland
env = XDG_SESSION_TYPE, wayland
env = XDG_SESSION_DESKTOP, Hyprland