nixos/home/hyprland/config.nix
Evie Litherland-Smith 50fa154a90 Remove nyxt, set chromium to be default browser
Split chromium workspace into web (for main browser) and apps (for
PWAs)

Update waybar workspace icons, remove "urgent" icon since I've got an
updating theme anyway
2023-11-23 11:50:41 +00:00

233 lines
8.3 KiB
Nix

{ config, pkgs, ... }:
let
themeName = config.gtk.theme.name;
cursorName = config.gtk.cursorTheme.name;
cursorSize = toString config.gtk.cursorTheme.size;
in ''
source = ./extra.conf
monitor=,preferred,auto,auto
env = XDG_CURRENT_DESKTOP=Hyprland
env = XDG_SESSION_TYPE=wayland
env = XDG_SESSION_DESKTOP=Hyprland
env = GDK_BACKEND=wayland,x11
env = GTK_THEME,${themeName}
env = XCURSOR_THEME,${cursorName}
env = XCURSOR_SIZE,${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 = GRIM_DEFAULT_DIR=${config.xdg.userDirs.pictures}/Screenshots
exec-once = hyprctl setcursor ${cursorName} ${cursorSize}
exec-once = dbus-update-activation-environment --systemd --all
exec-once = systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME
exec-once = systemctl --user restart xdg-desktop-portal.service xdg-desktop-portal-hyprland.service avizo.service
misc:background_color=rgb(1a1b26)
gestures:workspace_swipe = true
input {
kb_layout = gb
kb_options = ctrl:nocaps
follow_mouse = 1
touchpad:natural_scroll = yes
}
dwindle:force_split = 2
general {
col.active_border=rgb(bb9af7)
col.inactive_border=rgb(414868)
gaps_in = 5
gaps_out = 10
border_size = 1
cursor_inactive_timeout = 5
layout = dwindle
}
decoration {
rounding = 10
col.shadow=rgba(1a1b2699)
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, rofi -replace -show power-menu
bind = SUPER, V, togglefloating
bind = SUPER, M, fullscreen, 0
bind = SUPER SHIFT, M, fullscreen, 1
bind = SUPER, tab, exec, rofi -replace -show window
bind = SUPER, P, exec, pkill rofi || rofi-pass
bind = SUPER SHIFT, P, exec, pkill rofi || rofi-pass --last-used
bind = SUPER, X, exec, ${pkgs.mako}/bin/makoctl restore
bind = SUPER SHIFT, X, exec, ${pkgs.mako}/bin/makoctl dismiss -a
# Common program shortcuts
bind = SUPER, Space, exec, rofi -replace -show combi
bind = SUPER, Return, exec, alacritty
# Misc useful binds
bind=,Print,exec,grim -g "$(slurp)"
bind=,XF86Calculator,exec,rofi -replace -show calc
# Sound
bindl=,XF86AudioMute,exec,${pkgs.avizo}/bin/volumectl %
bindl=,XF86AudioMicMute,exec,${pkgs.avizo}/bin/volumectl -m %
bindle=,XF86AudioRaiseVolume,exec,${pkgs.avizo}/bin/volumectl -u + 5
bindle=,XF86AudioLowerVolume,exec,${pkgs.avizo}/bin/volumectl -u - 5
# Brightness
bindle=,XF86MonBrightnessUp,exec,${pkgs.avizo}/bin/lightctl + 5
bindle=,XF86MonBrightnessDown,exec,${pkgs.avizo}/bin/lightctl - 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 = ^(waybar|system-menu|rofi|gtk-layer-shell|notifications)$
layerrule = blur, $layers
layerrule = ignorealpha 0.3, $layers
# Window rules
windowrule = float,(org.kde.polkit-kde-authentication-agent-1d|Pinentry)
windowrule = center,(org.kde.polkit-kde-authentication-agent-1d|Pinentry)
windowrule = pin,(org.kde.polkit-kde-authentication-agent-1|Pinentry)
windowrule = dimaround,(org.kde.polkit-kde-authentication-agent-1|Pinentry)
windowrule = stayfocused,(org.kde.polkit-kde-authentication-agent-1|Pinentry)
windowrule = float,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)
windowrule = size 800 600,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)
windowrule = move onscreen 100%-820 60,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)
windowrule = nomaximizerequest, ^(libreoffice).*
windowrule = nofullscreenrequest, ^(libreoffice).*
windowrule = nofullscreenrequest,(Nxplayer.bin)
windowrule = nomaximizerequest,(Nxplayer.bin)
windowrule = group set always,(Nxplayer.bin)
windowrulev2 = float,title:(Open),class:(soffice)
windowrulev2 = float,title:(Friends List),class:(steam)
windowrulev2 = float,title:(Steam Settings),class:(steam)
# Workspace definitions
bind = SUPER, 1, moveworkspacetomonitor, 1 current
bind = SUPER, 1, workspace, 1
bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER, 2, moveworkspacetomonitor, 2 current
bind = SUPER, 2, workspace, 2
bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER, 3, moveworkspacetomonitor, 3 current
bind = SUPER, 3, workspace, 3
bind = SUPER SHIFT, 3, movetoworkspace, 3
bind = SUPER, 4, moveworkspacetomonitor, 4 current
bind = SUPER, 4, workspace, 4
bind = SUPER SHIFT, 4, movetoworkspace, 4
bind = SUPER, 5, moveworkspacetomonitor, 5 current
bind = SUPER, 5, workspace, 5
bind = SUPER SHIFT, 5, movetoworkspace, 5
bind = SUPER, 6, moveworkspacetomonitor, 6 current
bind = SUPER, 6, workspace, 6
bind = SUPER SHIFT, 6, movetoworkspace, 6
# Named workspaces
bind = SUPER, E, moveworkspacetomonitor, name:emacs current
bind = SUPER, E, workspace, name:emacs
bind = SUPER SHIFT, E, movetoworkspace, name:emacs
bind = SUPER ALT, E, exec, [workspace name:emacs] emacs
bind = SUPER, W, moveworkspacetomonitor, name:web current
bind = SUPER, W, workspace, name:web
bind = SUPER SHIFT, W, movetoworkspace, name:web
windowrule = workspace name:web, (chromium-browser)
bind = SUPER, T, moveworkspacetomonitor, name:top current
bind = SUPER, T, workspace, name:top
bind = SUPER SHIFT, T, movetoworkspace, name:top
bind = SUPER ALT, T, exec, [workspace name:top] alacritty -e btop
bind = SUPER, A, moveworkspacetomonitor, name:apps current
bind = SUPER, A, workspace, name:apps
bind = SUPER SHIFT, A, movetoworkspace, name:apps
windowrule = workspace name:apps, chrome-(.*)-Default
bind = SUPER, D, moveworkspacetomonitor, name:discord current
bind = SUPER, D, workspace, name:discord
bind = SUPER SHIFT, D, movetoworkspace, name:discord
windowrule = workspace name:discord, (discord)
bind = SUPER, S, moveworkspacetomonitor, name:steam current
bind = SUPER, S, workspace, name:steam
bind = SUPER SHIFT, S, movetoworkspace, name:steam
windowrule = workspace name:steam, (steam)
bind = SUPER, R, moveworkspacetomonitor, name:remote current
bind = SUPER, R, workspace, name:remote
bind = SUPER SHIFT, R, movetoworkspace, name:remote
windowrule = workspace name:remote, (Nxplayer.bin)
# 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, 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.hyprpaper}/bin/hyprpaper
exec-once = ${pkgs.mako}/bin/mako
exec-once = ${pkgs.dex}/bin/dex --autostart
exec-once = kidex
''