nixos/home/hyprland/config.nix
Evie Litherland-Smith 2a42c14fb5 Lots more theming
Switch remaining catppuccin to tokyonight, using stylix to generate GTK
theme now

Switch SDDM for LightDM (uses stylix theme), enable plymouth boot
splashscreen

Make Hyprland window rules (not launch binds) silent now
2023-10-14 20:49:30 +01:00

286 lines
9.6 KiB
Nix

{ config, pkgs, ... }:
let cursorSize = 24;
in ''
source = ./extra.conf
monitor=,preferred,auto,auto
exec-once = hyprctl setcursor ${config.gtk.cursorTheme.name} ${
toString cursorSize
}
env = XDG_CURRENT_DESKTOP=Hyprland
env = XDG_SESSION_TYPE=wayland
env = XDG_SESSION_DESKTOP=Hyprland
env = GDK_BACKEND=wayland,x11
env = GTK_THEME,${config.gtk.theme.name}
env = XCURSOR_THEME,${config.gtk.cursorTheme.name}
env = XCURSOR_SIZE,${toString cursorSize}
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_QPA_PLATFORM,wayland
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = MOZ_ENABLE_WAYLAND,1
env = DOOMLOCALDIR=${config.home.sessionVariables.DOOMLOCALDIR};
env = DOOMPROFILELOADFILE=${config.home.sessionVariables.DOOMPROFILELOADFILE};
misc {
disable_autoreload = true
vrr = 2
}
gestures {
workspace_swipe = true
}
input {
kb_layout = gb
follow_mouse = 1
touchpad {
natural_scroll = yes
}
}
general {
gaps_in = 5
gaps_out = 10
border_size = 1
cursor_inactive_timeout = 5
layout = master
}
dwindle {
force_split = 2
preserve_split = true
}
master {
mfact = 0.55
new_is_master = true
new_on_top = true
no_gaps_when_only = 0
orientation = left
}
decoration {
rounding = 10
drop_shadow = yes
shadow_ignore_window = true
shadow_range = 4
shadow_render_power = 3
blur {
enabled = true
size = 5
passes = 3
new_optimizations = true
brightness = 1.0
noise = 0.02
}
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
XWayland {
force_zero_scaling = true
}
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
bind = SUPER, F1, exec, ${pkgs.gtklock}/bin/gtklock
bind = SUPER, Q, killactive,
bind = SUPER SHIFT, Q, exec, wlogout
bind = SUPER, V, togglefloating
bind = SUPER, M, fullscreen, 0
bind = SUPER SHIFT, M, fullscreen, 1
bind = SUPER, P, exec, pkill rofi || rofi-pass
bind = SUPER SHIFT, P, exec, pkill rofi || rofi-pass --last-used
bind = SUPER, X, exec, swaync-client -t
# Common program shortcuts
bind = SUPER, Space, exec, pkill anyrun || anyrun
bind = SUPER, Return, exec, alacritty
bind = SUPER SHIFT, Return, exec, [float] alacritty
bind = SUPER ALT, T, exec, [workspace 1] alacritty
bind = SUPER ALT, D, exec, [workspace 2] emacs
bind = SUPER ALT, W, exec, [workspace 3] firefox
bind = SUPER ALT, A, exec, [workspace 4] alacritty -e khal interactive
bind = SUPER ALT, F, exec, [workspace 5] alacritty -e mc
bind = SUPER ALT, S, exec, [workspace 6] alacritty -e ncspot
bind = SUPER ALT, C, exec, [workspace 7] ferdium
bind = SUPER ALT, R, exec, [workspace 8] remmina
bind = SUPER ALT, G, exec, [workspace 9] steam
# Misc useful binds
bind=,Print,exec,${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)"
bind=,XF86Calculator,exec,pkill anyrun || anyrun
# Sound
bindl=,XF86AudioMute,exec,${pkgs.swayosd}/bin/swayosd --output-volume=mute-toggle
bindl=,XF86AudioMicMute,exec,${pkgs.swayosd}/bin/swayosd --input-volume=mute-toggle
bindle=,XF86AudioRaiseVolume,exec,${pkgs.swayosd}/bin/swayosd --output-volume=+5
bindle=,XF86AudioLowerVolume,exec,${pkgs.swayosd}/bin/swayosd --output-volume=-5
# Brightness
bindle=,XF86MonBrightnessUp,exec,${pkgs.swayosd}/bin/swayosd --brightness=+5
bindle=,XF86MonBrightnessDown,exec,${pkgs.swayosd}/bin/swayosd --brightness=-5
# Playback
bindl=,XF86AudioPlay,exec,${pkgs.playerctl}/bin/playerctl play-pause
bindl=,XF86AudioStop,exec,${pkgs.playerctl}/bin/playerctl play-pause
bindl=,XF86AudioPrev,exec,${pkgs.playerctl}/bin/playerctl previous
bindl=,XF86AudioNext,exec,${pkgs.playerctl}/bin/playerctl next
bind = SUPER, H, movefocus, l
bind = SUPER, L, movefocus, r
bind = SUPER, K, movefocus, u
bind = SUPER, J, movefocus, d
bind = SUPER SHIFT, H, movewindow, l
bind = SUPER SHIFT, L, movewindow, r
bind = SUPER SHIFT, K, movewindow, u
bind = SUPER SHIFT, J, movewindow, d
# Layer rules
$layers = ^(ironbar|waybar|system-menu|anyrun|gtk-layer-shell|swaync-.+)$
layerrule = blur, $layers
# layerrule = ignorezero, $layers
layerrule = ignorealpha 0.5, $layers
layerrule = xray 1, ^(ironbar|waybar|bar|gtk-layer-shell)$
# Window rules
windowrule = xray 1,(alacritty)
windowrule = float,(org.kde.polkit-kde-authentication-agent-1)
windowrule = center,(org.kde.polkit-kde-authentication-agent-1)
windowrule = pin,(org.kde.polkit-kde-authentication-agent-1)
windowrule = dimaround,(org.kde.polkit-kde-authentication-agent-1)
windowrule = stayfocused,(org.kde.polkit-kde-authentication-agent-1)
windowrule = float,(pavucontrol)
windowrule = size 800 600,(pavucontrol)
windowrule = move 100%-820 10%,(pavucontrol)
windowrule = float,(.blueman-manager-wrapped)
windowrule = size 800 600,(.blueman-manager-wrapped)
windowrule = move 100%-820 10%,(.blueman-manager-wrapped)
windowrule = float,(nm-connection-editor)
windowrule = size 800 600,(nm-connection-editor)
windowrule = move 100%-820 10%,(nm-connection-editor)
windowrule = float,(.protonvpn-wrapped)
windowrule = center,(.protonvpn-wrapped)
windowrule = float,(Pinentry)
windowrule = center,(Pinentry)
windowrule = float,(thunar)
windowrule = center,(thunar)
windowrule = float,(davmail-imap-ImapConnection)
windowrule = center,(davmail-imap-ImapConnection)
windowrule = float,(wlogout)
windowrule = center,(wlogout)
windowrule = nofullscreenrequest,(wlogout)
windowrule = nomaximizerequest,(wlogout)
windowrule = size 75% 75%,(wlogout)
windowrule = pin,(wlogout)
windowrule = dimaround,(wlogout)
windowrule = stayfocused,(wlogout)
windowrule = pin,(Rofi)
windowrule = dimaround,(Rofi)
windowrule = stayfocused,(Rofi)
windowrulev2 = float,title:(File|Picture-in-Picture),class:(firefox)
windowrulev2 = pin,title:(File|Picture-in-Picture),class:(firefox)
windowrulev2 = workspace special silent, title:^(Firefox Sharing Indicator)$
windowrulev2 = workspace special silent, title:^(.*is sharing (your screen|a window)\.)$
windowrulev2 = float,title:(Open),class:(soffice)
windowrulev2 = float,class:(steam),title:(Friends List)
windowrulev2 = float,class:(steam),title:(Steam Settings)
# Workspace definitions
# 1: [t]erminal
bind = SUPER, T, moveworkspacetomonitor, 1 current
bind = SUPER, T, workspace, 1
bind = SUPER SHIFT, T, movetoworkspace, 1
# 2: [d]ev
bind = SUPER, D, moveworkspacetomonitor, 2 current
bind = SUPER, D, workspace, 2
bind = SUPER SHIFT, D, movetoworkspace, 2
windowrule = workspace 2 silent,(emacs)
# 3: [b]rowser
bind = SUPER, W, moveworkspacetomonitor, 3 current
bind = SUPER, W, workspace, 3
bind = SUPER SHIFT, W, movetoworkspace, 3
windowrule = workspace 3 silent,(firefox)
# 4: [a]genda (or c[a]lendar)
bind = SUPER, A, moveworkspacetomonitor, 4 current
bind = SUPER, A, workspace, 4
bind = SUPER SHIFT, A, movetoworkspace, 4
windowrulev2 = workspace 5 silent,class:(Alacritty),title:(khal interactive)
# 5: [f]iles
bind = SUPER, F, moveworkspacetomonitor, 5 current
bind = SUPER, F, workspace, 5
bind = SUPER SHIFT, F, movetoworkspace, 5
windowrule = workspace 5 silent,^(libreoffice).*
windowrulev2 = workspace 5 silent,title:(Open),class:(soffice)
# 6: [s]potify (or mu[s]ic)
bind = SUPER, S, moveworkspacetomonitor, 6 current
bind = SUPER, S, workspace, 6
bind = SUPER SHIFT, S, movetoworkspace, 6
windowrulev2 = workspace 6 silent,class:(Alacritty),title:(ncspot)
# 7: [c]hat
bind = SUPER, C, moveworkspacetomonitor, 7 current
bind = SUPER, C, workspace, 7
bind = SUPER SHIFT, C, movetoworkspace, 7
windowrule = workspace 7 silent,(Signal)
windowrule = workspace 7 silent,(fractal)
windowrule = workspace 7 silent,(Ferdium)
# 8: [r]emote
bind = SUPER, R, moveworkspacetomonitor, 8 current
bind = SUPER, R, workspace, 8
bind = SUPER SHIFT, R, movetoworkspace, 8
windowrule = workspace 8 silent,(org.remmina.Remmina)
windowrule = workspace 8 silent,(Nxplayer.bin)
windowrule = nofullscreenrequest,(Nxplayer.bin)
windowrule = nomaximizerequest,(Nxplayer.bin)
# 9: [g]aming
bind = SUPER, G, moveworkspacetomonitor, 9 current
bind = SUPER, G, workspace, 9
bind = SUPER SHIFT, G, movetoworkspace, 9
windowrule = workspace 9 silent,(steam)
# Special workspaces
bind = SUPER, comma, workspace, m-1
bind = SUPER SHIFT, comma, movetoworkspace, r-1
bind = SUPER, period, workspace, m+1
bind = SUPER SHIFT, period, movetoworkspace, r+1
bind = SUPER, N, workspace, empty
bind = SUPER SHIFT, N, movetoworkspace, empty
bind = SUPER, minus, togglespecialworkspace
bind = SUPER SHIFT, minus, movetoworkspace, special
bind = SUPER, tab, workspace, previous
bind = SUPER SHIFT, tab, movetoworkspace, previous
bind = SUPER, bracketright, focusmonitor, +1
bind = SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1
bind = SUPER, bracketleft, focusmonitor, -1
bind = SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1
bind = SUPER, U, focusurgentorlast
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
exec-once = ${pkgs.swaynotificationcenter}/bin/swaync
exec-once = ${pkgs.hyprpaper}/bin/hyprpaper
exec-once = ${pkgs.dex}/bin/dex --autostart
exec-once = ferdium
exec-once = kidex
''