chore(user/malte): adjust hyprland config to new format

This commit is contained in:
Malte Tammena 2024-01-22 21:09:36 +01:00
parent 68a648eb80
commit b2b2c8818b
2 changed files with 222 additions and 231 deletions

View file

@ -55,14 +55,6 @@ in {
services.flatpak.enable = true; services.flatpak.enable = true;
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
xwayland = {
enable = true;
};
};
# TODO: Remove/Move # TODO: Remove/Move
services.mysql = { services.mysql = {
enable = true; enable = true;

View file

@ -76,260 +76,259 @@
''; '';
}; };
hyprlandConfig = '' hyprlandSettings = {
${ env =
if nixosConfig.settings.nvidiaUsed (lib.lists.optionals nixosConfig.settings.nvidiaUsed [
then '' "WLR_NO_HARDWARE_CURSORS,1"
# Prevent cursor from disappering under nvidia :') "LIBVA_DRIVER_NAME,nvidia"
env = WLR_NO_HARDWARE_CURSORS,1 "XDG_SESSION_TYPE,wayland"
env = LIBVA_DRIVER_NAME,nvidia "GBM_BACKEND,nvidia-drm"
env = XDG_SESSION_TYPE,wayland ])
env = GBM_BACKEND,nvidia-drm ++ [
'' "PASSWORD_STORE_DIR,${config.programs.password-store.settings.PASSWORD_STORE_DIR}"
else "" ];
} monitor =
# See https://wiki.hyprland.org/Configuring/Monitors/ (lib.lists.optional (nixosConfig.networking.hostName == "helix-texta") "eDP-1,3840x2160@60,0x0,2")
${ ++ [
if nixosConfig.networking.hostName == "helix-texta" "desc:BNQ BenQ GW2270 P9J02423SL0, 1920x1080, 0x0, 1"
then "monitor = eDP-1,3840x2160@60,0x0,2" "desc:BNQ BenQ GW2270 P9J02423SL0, transform, 3"
else "" "desc:LG Electronics IPS226 SerialNumber, 1920x1080, 1080x420, 1"
} ",preferred,auto,1"
monitor = desc:BNQ BenQ GW2270 P9J02423SL0, 1920x1080, 0x0, 1 ];
monitor = desc:BNQ BenQ GW2270 P9J02423SL0, transform, 3 "$mainMod" = "SUPER";
monitor = desc:LG Electronics IPS226 SerialNumber, 1920x1080, 1080x420, 1 "$blue" = "458588";
monitor = ,preferred,auto,1 "$green" = "98971a";
exec-once = [
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"${pkgs.waybar}/bin/waybar"
"${pkgs.hyprpaper}/bin/hyprpaper"
"${runWob}/bin/run-wob"
];
input = {
kb_variant =
if nixosConfig.networking.hostName == "helix-texta"
then "workman"
else if nixosConfig.networking.hostName == "murex-pecten"
then ""
else "";
kb_options = "compose:ralt";
kb_rules = "";
$mainMod = SUPER follow_mouse = "1";
sensitivity = "0";
accel_profile = "flat";
$blue = 458588 touchpad = {
$green = 98971a natural_scroll = "yes";
tap-to-click = "yes";
drag_lock = "yes";
tap-and-drag = "yes";
};
};
"device:usb-hid-keyboard" = {
kb_options = "compose:rwin";
};
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP "device:at-translated-set-2-keyboard" = {};
exec-once=${pkgs.waybar}/bin/waybar "device:keyboardio-atreus" = {kb_variant = "";};
exec-once=${pkgs.hyprpaper}/bin/hyprpaper
exec-once=${runWob}/bin/run-wob
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ general = {
input { # See https://wiki.hyprland.org/Configuring/Variables/ for more
${
if nixosConfig.networking.hostName == "helix-texta"
then ''
kb_variant = workman
''
else if nixosConfig.networking.hostName == "murex-pecten"
then ''
kb_variant =
''
else ""
}
kb_options = compose:ralt gaps_in = 3;
kb_rules = gaps_out = 3;
border_size = 1;
"col.active_border" = "rgba($bluecc) rgba($greencc) 45deg";
"col.inactive_border" = "rgba(282828cc)";
follow_mouse = 1 layout = "dwindle";
sensitivity = 0 };
accel_profile = flat
touchpad { decoration = {
natural_scroll = yes # See https://wiki.hyprland.org/Configuring/Variables/ for more
tap-to-click = yes
drag_lock = yes
tap-and-drag = yes
}
}
device:usb-hid-keyboard { rounding = 2;
kb_options = compose:rwin
}
device:at-translated-set-2-keyboard { blur = {
enabled = "yes";
size = 3;
passes = 1;
new_optimizations = "on";
};
} drop_shadow = "yes";
shadow_range = 4;
shadow_render_power = 3;
"col.shadow" = "rgba(1a1a1aee)";
device:keyboardio-atreus { dim_inactive = true;
kb_variant = dim_strength = 0.1;
} };
general { animations = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more enabled = "yes";
gaps_in = 3 bezier = [
gaps_out = 3 "switchWorkspaces, 0.75, 0 , 0.25, 1"
border_size = 1 "easeOutBack , 0.34, 1.16, 0.64, 1"
col.active_border = rgba($bluecc) rgba($greencc) 45deg "easeOutExpo , 0.16, 1 , 0.3 , 1"
col.inactive_border = rgba(282828cc) "easeOutQuint , 0.22, 1 , 0.36, 1"
"easeInOutQuint , 0.83, 0 , 0.17, 1"
];
animation = [
"windows , 1, 3, easeOutExpo"
"windowsOut, 1, 2, default , popin 80%"
"border , 1, 3, easeOutExpo"
"fade , 1, 2, default"
"workspaces, 1, 2, switchWorkspaces, slidevert"
];
};
layout = dwindle dwindle = {
} # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = "yes"; # you probably want this
force_split = 2;
};
decoration { gestures = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = "on";
workspace_swipe_distance = 100;
};
rounding = 2 windowrule = [
# Pinentry fancyness
"float,class:^(pinentry-qt)$"
"pin,class:^(pinentry-qt)$"
"bordercolor rgb(ff0000) rgb(ff0000),class:^(pinentry-qt)$"
"center,class:^(pinentry-qt)$"
"animation popin,class:^(pinentry-qt)$"
"bordercolor rgb(ff0000),xwayland:1"
# Yikes, firefox sharing indicator!
"float,title:^(Firefox Sharing Indicator)$"
"move 100%-57 100%-31,title:^(Firefox Sharing Indicator)$"
"nofocus,title:^(Firefox Sharing Indicator)$"
"noborder,title:^(Firefox Sharing Indicator)$"
"nofullscreenrequest,title:^(Firefox Sharing Indicator)$"
"animation popin,title:^(Firefox Sharing Indicator)$"
];
blur { windowrulev2 = [
enabled = yes # Float picture-in-picture videos
size = 3 "float,title:^(Picture-in-Picture)$,class:^(firefox)$"
passes = 1 "pin,title:^(Picture-in-Picture)$,class:^(firefox)$"
new_optimizations = on # Fix various steam windows
} "workspace 7,class:^(Steam)$"
"float,title:^(Friends List)$,class:^(Steam)$"
"float,title:^(Steam - News)$,class:^(Steam)$"
];
drop_shadow = yes bind = [
shadow_range = 4 "bind = $mainMod , return, exec , kitty"
shadow_render_power = 3 "bind = $mainMod SHIFT, Q , killactive ,"
col.shadow = rgba(1a1a1aee) "bind = $mainMod SHIFT, E , exit ,"
"bind = $mainMod SHIFT, space , togglefloating,"
"bind = $mainMod SHIFT, P , pseudo ," # dwindle
"bind = $mainMod , E , togglesplit ," # dwindle
dim_inactive = true; # Move focus with mainMod + arrow keys
dim_strength = 0.1; "bind = $mainMod , H, movefocus , l"
} "bind = $mainMod , L, movefocus , r"
"bind = $mainMod , K, movefocus , u"
"bind = $mainMod , J, movefocus , d"
"bind = $mainMod SHIFT, H, movewindow, l"
"bind = $mainMod SHIFT, L, movewindow, r"
"bind = $mainMod SHIFT, K, movewindow, u"
"bind = $mainMod SHIFT, J, movewindow, d"
animations { # Switch workspaces with mainMod + [0-9]
enabled = yes "bind = $mainMod, 1, workspace, 1"
"bind = $mainMod, 2, workspace, 2"
"bind = $mainMod, 3, workspace, 3"
"bind = $mainMod, 4, workspace, 4"
"bind = $mainMod, 5, workspace, 5"
"bind = $mainMod, 6, workspace, 6"
"bind = $mainMod, 7, workspace, 7"
"bind = $mainMod, 8, workspace, 8"
"bind = $mainMod, 9, workspace, 9"
bezier = switchWorkspaces, 0.75, 0 , 0.25, 1 # Move active window to a workspace and follow it
bezier = easeOutBack , 0.34, 1.16, 0.64, 1 "bind = $mainMod CTRL SHIFT, 1, movetoworkspace, 1"
bezier = easeOutExpo , 0.16, 1 , 0.3 , 1 "bind = $mainMod CTRL SHIFT, 2, movetoworkspace, 2"
bezier = easeOutQuint , 0.22, 1 , 0.36, 1 "bind = $mainMod CTRL SHIFT, 3, movetoworkspace, 3"
bezier = easeInOutQuint , 0.83, 0 , 0.17, 1 "bind = $mainMod CTRL SHIFT, 4, movetoworkspace, 4"
"bind = $mainMod CTRL SHIFT, 5, movetoworkspace, 5"
"bind = $mainMod CTRL SHIFT, 6, movetoworkspace, 6"
"bind = $mainMod CTRL SHIFT, 7, movetoworkspace, 7"
"bind = $mainMod CTRL SHIFT, 8, movetoworkspace, 8"
"bind = $mainMod CTRL SHIFT, 9, movetoworkspace, 9"
animation = windows , 1, 3, easeOutExpo # Move active window to a workspace without following it
animation = windowsOut, 1, 2, default , popin 80% "bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1"
animation = border , 1, 3, easeOutExpo "bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2"
animation = fade , 1, 2, default "bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3"
animation = workspaces, 1, 2, switchWorkspaces, slidevert "bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4"
} "bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5"
"bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6"
"bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7"
"bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8"
"bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9"
dwindle { "bind = $mainMod SHIFT, T, togglegroup"
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more "bind = $mainMod, T, changegroupactive, f"
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
force_split = 2
}
gestures { "bind = $mainMod, F, fullscreen, 0"
# See https://wiki.hyprland.org/Configuring/Variables/ for more "bind = $mainMod SHIFT, F, fullscreen, 1"
workspace_swipe = on "bind = $mainMod CTRL SHIFT, F, fakefullscreen"
workspace_swipe_distance = 100; "bind = $mainMod, U, pin, active"
}
# Pinentry fancyness "bind = $mainMod CTRL SHIFT, L, movecurrentworkspacetomonitor, r"
windowrule = float,class:^(pinentry-qt)$ "bind = $mainMod CTRL SHIFT, H, movecurrentworkspacetomonitor, l"
windowrule = pin,class:^(pinentry-qt)$
windowrule = bordercolor rgb(ff0000) rgb(ff0000),class:^(pinentry-qt)$
windowrule = center,class:^(pinentry-qt)$
windowrule = animation popin,class:^(pinentry-qt)$
windowrule = bordercolor rgb(ff0000),xwayland:1
# Yikes, firefox sharing indicator!
windowrule = float,title:^(Firefox Sharing Indicator)$
windowrule = move 100%-57 100%-31,title:^(Firefox Sharing Indicator)$
windowrule = nofocus,title:^(Firefox Sharing Indicator)$
windowrule = noborder,title:^(Firefox Sharing Indicator)$
windowrule = nofullscreenrequest,title:^(Firefox Sharing Indicator)$
windowrule = animation popin,title:^(Firefox Sharing Indicator)$
# Float picture-in-picture videos
windowrulev2 = float,title:^(Picture-in-Picture)$,class:^(firefox)$
windowrulev2 = pin,title:^(Picture-in-Picture)$,class:^(firefox)$
# Fix various steam windows
windowrulev2 = workspace 7,class:^(Steam)$
windowrulev2 = float,title:^(Friends List)$,class:^(Steam)$
windowrulev2 = float,title:^(Steam - News)$,class:^(Steam)$
bind = $mainMod , return, exec , kitty # Scroll through existing workspaces with mainMod + scroll
bind = $mainMod SHIFT, Q , killactive , "bind = $mainMod, mouse_down, workspace, e+1"
bind = $mainMod SHIFT, E , exit , "bind = $mainMod, mouse_up, workspace, e-1"
bind = $mainMod SHIFT, space , togglefloating, # Menu
bind = $mainMod SHIFT, P , pseudo , # dwindle "$mainMod, D, exec, ${bemenu}/bin/bemenu-run-configured -p 'Program:'"
bind = $mainMod , E , togglesplit , # dwindle
# Move focus with mainMod + arrow keys # Passwords
bind = $mainMod , H, movefocus , l "$mainMod, P, exec, passmenu-bemenu"
bind = $mainMod , L, movefocus , r
bind = $mainMod , K, movefocus , u
bind = $mainMod , J, movefocus , d
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, J, movewindow, d
# Switch workspaces with mainMod + [0-9] # Colorpicker
bind = $mainMod, 1, workspace, 1 "$mainMod SHIFT, C, exec, ${pkgs.hyprpicker}/bin/hyprpicker -a"
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
# Move active window to a workspace and follow it # Screenshot
bind = $mainMod CTRL SHIFT, 1, movetoworkspace, 1 "$mainMod CTRL SHIFT, S, exec, ${pkgs.grimblast}/bin/grimblast --notify copy area"
bind = $mainMod CTRL SHIFT, 2, movetoworkspace, 2 "$mainMod CTRL , S, exec, ${pkgs.grimblast}/bin/grimblast --notify copy output"
bind = $mainMod CTRL SHIFT, 3, movetoworkspace, 3 "$mainMod SHIFT, S, exec, ${pkgs.grimblast}/bin/grimblast --notify copy active"
bind = $mainMod CTRL SHIFT, 4, movetoworkspace, 4
bind = $mainMod CTRL SHIFT, 5, movetoworkspace, 5
bind = $mainMod CTRL SHIFT, 6, movetoworkspace, 6
bind = $mainMod CTRL SHIFT, 7, movetoworkspace, 7
bind = $mainMod CTRL SHIFT, 8, movetoworkspace, 8
bind = $mainMod CTRL SHIFT, 9, movetoworkspace, 9
# Move active window to a workspace without following it # Toggle DO-NOT-DISTURB mode
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 "$mainMod, N, exec, ${doNotDisturb}/bin/do-not-disturb toggle"
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, T, togglegroup # Discord mute and deafmute
bind = $mainMod, T, changegroupactive, f "CTRL_R, Insert, pass, .*[Dd]iscord.*"
"CTRL_R, Delete, pass, .*[Dd]iscord.*"
];
bind = $mainMod, F, fullscreen, 0 bindm = [
bind = $mainMod SHIFT, F, fullscreen, 1 # Move/resize windows with mainMod + LMB/RMB and dragging
bind = $mainMod CTRL SHIFT, F, fakefullscreen "$mainMod, mouse:272, movewindow"
bind = $mainMod, U, pin, active "$mainMod, mouse:273, resizewindow"
];
bind = $mainMod CTRL SHIFT, L, movecurrentworkspacetomonitor, r bindel = [
bind = $mainMod CTRL SHIFT, H, movecurrentworkspacetomonitor, l # Sound control
", XF86AudioRaiseVolume, exec, ${pkgs.ponymix}/bin/ponymix increase 5% > ${wobFifo}"
", XF86AudioLowerVolume, exec, ${pkgs.ponymix}/bin/ponymix decrease 5% > ${wobFifo}"
];
# Scroll through existing workspaces with mainMod + scroll bindl = [
bind = $mainMod, mouse_down, workspace, e+1 # Sound control
bind = $mainMod, mouse_up, workspace, e-1 ", XF86AudioMute, exec, ${ponymixToggle}/bin/ponymix-toggle"
", XF86AudioMicMute, exec, ${ponymixToggleInput}/bin/ponymix-toggle-input"
# Move/resize windows with mainMod + LMB/RMB and dragging ];
bindm = $mainMod, mouse:272, movewindow };
bindm = $mainMod, mouse:273, resizewindow
# Menu
bind = $mainMod, D, exec, ${bemenu}/bin/bemenu-run-configured -p 'Program:'
# Passwords
bind = $mainMod, P, exec, passmenu-bemenu
# Colorpicker
bind = $mainMod SHIFT, C, exec, ${pkgs.hyprpicker}/bin/hyprpicker -a
# Screenshot
bind = $mainMod CTRL SHIFT, S, exec, ${pkgs.grimblast}/bin/grimblast --notify copy area
bind = $mainMod CTRL , S, exec, ${pkgs.grimblast}/bin/grimblast --notify copy output
bind = $mainMod SHIFT, S, exec, ${pkgs.grimblast}/bin/grimblast --notify copy active
# Toggle DO-NOT-DISTURB mode
bind = $mainMod, N, exec, ${doNotDisturb}/bin/do-not-disturb toggle
# Sound control
bindel =, XF86AudioRaiseVolume, exec, ${pkgs.ponymix}/bin/ponymix increase 5% > ${wobFifo}
bindel =, XF86AudioLowerVolume, exec, ${pkgs.ponymix}/bin/ponymix decrease 5% > ${wobFifo}
bindl =, XF86AudioMute, exec, ${ponymixToggle}/bin/ponymix-toggle
bindl =, XF86AudioMicMute, exec, ${ponymixToggleInput}/bin/ponymix-toggle-input
# Discord mute and deafmute
bind = CTRL_R, Insert, pass, .*[Dd]iscord.*
bind = CTRL_R, Delete, pass, .*[Dd]iscord.*
'';
in { in {
imports = [ imports = [
./waybar.nix ./waybar.nix
@ -347,7 +346,9 @@ in {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
settings = hyprlandSettings;
xwayland.enable = true; xwayland.enable = true;
systemd.variables = ["-all"];
}; };
home.packages = [ home.packages = [
@ -361,7 +362,7 @@ in {
size = 48; size = 48;
}; };
# If running from tty2 start hyprland # If running from tty1 start hyprland
xdg.configFile."fish/conf.d/hyprland.fish".text = '' xdg.configFile."fish/conf.d/hyprland.fish".text = ''
set TTY1 (tty) set TTY1 (tty)
if test -z \"$DISPLAY\"; and test $TTY1 = '/dev/tty1' if test -z \"$DISPLAY\"; and test $TTY1 = '/dev/tty1'
@ -373,7 +374,5 @@ in {
xdg.configFile."hypr/hyprpaper.conf".text = hyprpaperConfig; xdg.configFile."hypr/hyprpaper.conf".text = hyprpaperConfig;
# Configure wob # Configure wob
xdg.configFile."wob/wob.ini".text = wobConfig; xdg.configFile."wob/wob.ini".text = wobConfig;
# Main config
xdg.configFile."hypr/hyprland.conf".text = hyprlandConfig;
}; };
} }