summaryrefslogtreecommitdiff
path: root/home-modules/desktop/hyprland.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-modules/desktop/hyprland.nix')
-rw-r--r--home-modules/desktop/hyprland.nix407
1 files changed, 213 insertions, 194 deletions
diff --git a/home-modules/desktop/hyprland.nix b/home-modules/desktop/hyprland.nix
index 6f36b2f..f714650 100644
--- a/home-modules/desktop/hyprland.nix
+++ b/home-modules/desktop/hyprland.nix
@@ -1,4 +1,10 @@
-{lib, pkgs, config, hostconfig , ...}:
+{
+ lib,
+ pkgs,
+ config,
+ hostconfig,
+ ...
+}:
with lib;
{
config = mkIf hostconfig.addons.desktop.hyprland.enable {
@@ -7,248 +13,261 @@ with lib;
wofi
hyprshot
networkmanagerapplet
- xdg-desktop-portal-gnome
+ xdg-desktop-portal-gnome
xdg-desktop-portal-hyprland
wl-clipboard
brightnessctl
];
- services.hyprpolkitagent.enable = true;
+ services.hyprpolkitagent.enable = true;
homeprogs.waybar.enable = true;
homeprogs.mako.enable = true;
# Environment variables for hyprland.
# This can be used to configure wayland/hyprland-specific things
home.file.".config/uwsm/env-hyprland".text = ''
- export XDG_SESSION_TYPE=wayland
- export GDK_BACKEND=wayland
- export GTK_USE_PORTAL=1
- export QT_QPA_PLATFORM=wayland;xcb
- export QT_STYLE_OVERRIDE=kvantum
- export QT_QPA_PLATFORM_THEME=kvantum
- export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
- export QT_AUTO_SCREEN_SCALE_FACTOR=1
- export MOZ_ENABLE_WAYLAND=1
- export -n GTK_IM_MODULE
+ export XDG_SESSION_TYPE=wayland
+ export GDK_BACKEND=wayland
+ export GTK_USE_PORTAL=1
+ export QT_QPA_PLATFORM=wayland;xcb
+ export QT_STYLE_OVERRIDE=kvantum
+ export QT_QPA_PLATFORM_THEME=kvantum
+ export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
+ export QT_AUTO_SCREEN_SCALE_FACTOR=1
+ export MOZ_ENABLE_WAYLAND=1
+ export -n GTK_IM_MODULE
'';
- # Hyprland
+ # Hyprland
wayland.windowManager.hyprland = {
- systemd.enable = false;
- enable = true;
- xwayland.enable = true;
- settings = {
- exec-once = map (s: "uwsm app -- " + s) [
- "kitty &"
- "waybar &"
- "nm-applet &"
- "blueman-tray &"
- "blueman-applet &"
- "hyprctl setcursor Catppuccin-Mocha-Dark-Cursors 24"
- "kdeconnect-indicator &"
- # "fcitx5 -d"
- ] ++ [
+ systemd.enable = false;
+ enable = true;
+ xwayland.enable = true;
+ settings = {
+ exec-once =
+ map (s: "uwsm app -- " + s) [
+ "kitty &"
+ "waybar &"
+ "nm-applet &"
+ "blueman-tray &"
+ "blueman-applet &"
+ "hyprctl setcursor Catppuccin-Mocha-Dark-Cursors 24"
+ "kdeconnect-indicator &"
+ # "fcitx5 -d"
+ ]
+ ++ [
"systemctl --user start hypridle.service"
"systemctl --user start hyprpaper.service"
"systemctl --user start hyprpolkitagent.service"
"uwsm finalize QT_QPA_PLATFORM QT_PLUGIN_PATH"
- ];
- general = {
- gaps_in = 3;
- gaps_out = 8;
- border_size = 1;
+ ];
+ general = {
+ gaps_in = 3;
+ gaps_out = 8;
+ border_size = 1;
- "col.active_border" = "rgba(ed45b8ee) rgba(611449ee) 45deg";
- "col.inactive_border" = "rgba(595959aa)";
+ "col.active_border" = "rgba(ed45b8ee) rgba(611449ee) 45deg";
+ "col.inactive_border" = "rgba(595959aa)";
+
+ resize_on_border = true;
+ allow_tearing = true;
+ layout = "dwindle";
+ };
+
+ animations = {
+ enabled = true;
+ bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
+ animation = [
+ "windows, 1, 7, myBezier"
+ "windowsOut, 1, 7, default, popin 80%"
+ "border, 1, 10, default"
+ "borderangle, 1, 8, default"
+ "fade, 1, 7, default"
+ "workspaces, 1, 6, default"
+ ];
+ };
- resize_on_border = true;
- allow_tearing = true;
- layout = "dwindle";
- };
+ decoration = {
+ rounding = 10;
- animations = {
- enabled = true;
- bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
- animation = [
- "windows, 1, 7, myBezier"
- "windowsOut, 1, 7, default, popin 80%"
- "border, 1, 10, default"
- "borderangle, 1, 8, default"
- "fade, 1, 7, default"
- "workspaces, 1, 6, default"
- ];
- };
-
- decoration = {
- rounding = 10;
+ # Change transparency of focused and unfocused windows
+ active_opacity = "1.0";
+ inactive_opacity = "1.0";
- # Change transparency of focused and unfocused windows
- active_opacity = "1.0";
- inactive_opacity = "1.0";
+ # drop_shadow = true;
+ # shadow_range = 4;
+ # shadow_render_power = 3;
+ # "col.shadow" = "rgba(1a1a1aee)";
- # drop_shadow = true;
- # shadow_range = 4;
- # shadow_render_power = 3;
- # "col.shadow" = "rgba(1a1a1aee)";
+ # https://wiki.hyprland.org/Configuring/Variables/#blur
+ blur = {
+ enabled = true;
+ size = 3;
+ passes = 1;
- # https://wiki.hyprland.org/Configuring/Variables/#blur
- blur = {
- enabled = true;
- size = 3;
- passes = 1;
-
- vibrancy = "0.1696";
- };
- };
- dwindle = {
- pseudotile = true;
- preserve_split = true;
- };
+ vibrancy = "0.1696";
+ };
+ };
+ dwindle = {
+ pseudotile = true;
+ preserve_split = true;
+ };
- #master = {
- # new_is_master = true;
- #};
- input = {
- kb_layout = "pl";
- kb_variant = "";
- kb_model = "";
- kb_options = "";
- kb_rules = "";
+ #master = {
+ # new_is_master = true;
+ #};
+ input = {
+ kb_layout = "pl";
+ kb_variant = "";
+ kb_model = "";
+ kb_options = "";
+ kb_rules = "";
- follow_mouse = 1;
+ follow_mouse = 1;
- sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
+ sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
- touchpad = {
- natural_scroll = true;
- };
+ touchpad = {
+ natural_scroll = true;
};
- # Deprecated
- # gestures = {
- # workspace_swipe = true;
- # };
- misc = {
- force_default_wallpaper = "-1"; # Set to 0 or 1 to disable the anime mascot wallpapers
- disable_hyprland_logo = false; # If true disables the random hyprland logo / anime girl background. :(
- };
- monitor= [ ",preferred,auto,1" ];
-
- # Mod key
- "$mod" = "SUPER";
-
- # Programs
- "$terminal" = "kitty";
- "$fileManager" = "thunar";
- "$menu" = "wofi --show drun";
- "$screenshot" = "hyprshot -m region -f screenshots/screenshot_$(date +'%y-%m-%d_%H-%M-%S').png";
+ };
+ # Deprecated
+ # gestures = {
+ # workspace_swipe = true;
+ # };
+ misc = {
+ force_default_wallpaper = "-1"; # Set to 0 or 1 to disable the anime mascot wallpapers
+ disable_hyprland_logo = false; # If true disables the random hyprland logo / anime girl background. :(
+ };
+ monitor = [ ",preferred,auto,1" ];
+
+ # Mod key
+ "$mod" = "SUPER";
- bind = [
- # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
- "$mod, RETURN, exec, $terminal"
- "$mod, Q, killactive,"
- "$mod SHIFT, M, exec, uwsm stop"
- "$mod, E, exec, uwsm app -- $fileManager"
- "$mod, V, togglefloating,"
- "$mod, R, exec, uwsm app -- $menu"
- "$mod, P, pseudo"
- "$mod, J, togglesplit"
- "$mod, L, exec, uwsm app -- hyprlock"
- ",Print, exec, uwsm app -- $screenshot "
+ # Programs
+ "$terminal" = "kitty";
+ "$fileManager" = "thunar";
+ "$menu" = "wofi --show drun";
+ "$screenshot" = "hyprshot -m region -f screenshots/screenshot_$(date +'%y-%m-%d_%H-%M-%S').png";
- # Move focus with mod + arrow keys
- "$mod, left, movefocus, l"
- "$mod, right, movefocus, r"
- "$mod, up, movefocus, u"
- "$mod, down, movefocus, d"
+ bind = [
+ # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+ "$mod, RETURN, exec, $terminal"
+ "$mod, Q, killactive,"
+ "$mod SHIFT, M, exec, uwsm stop"
+ "$mod, E, exec, uwsm app -- $fileManager"
+ "$mod, V, togglefloating,"
+ "$mod, R, exec, uwsm app -- $menu"
+ "$mod, P, pseudo"
+ "$mod, J, togglesplit"
+ "$mod, L, exec, uwsm app -- hyprlock"
+ ",Print, exec, uwsm app -- $screenshot "
- # Example special workspace (scratchpad)
- "$mod, S, togglespecialworkspace, magic"
- "$mod SHIFT, S, movetoworkspace, special:magic"
+ # Move focus with mod + arrow keys
+ "$mod, left, movefocus, l"
+ "$mod, right, movefocus, r"
+ "$mod, up, movefocus, u"
+ "$mod, down, movefocus, d"
- # Scroll through existing workspaces with mod + scroll
- "$mod, mouse_down, workspace, e+1"
- "$mod, mouse_up, workspace, e-1"
- ] ++ (
+ # Example special workspace (scratchpad)
+ "$mod, S, togglespecialworkspace, magic"
+ "$mod SHIFT, S, movetoworkspace, special:magic"
+
+ # Scroll through existing workspaces with mod + scroll
+ "$mod, mouse_down, workspace, e+1"
+ "$mod, mouse_up, workspace, e-1"
+ ]
+ ++ (
# workspaces
- builtins.concatLists (builtins.genList (
- x: let
- ws = let
- c = (x + 1) / 10;
- in
+ builtins.concatLists (
+ builtins.genList (
+ x:
+ let
+ ws =
+ let
+ c = (x + 1) / 10;
+ in
builtins.toString (x + 1 - (c * 10));
- in [
+ in
+ [
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
-
+
# Move workspace {1..10} to current monitor
- "CTRL ALT $mod , ${ws}, focusworkspaceoncurrentmonitor, ${toString(x + 1)}"
+ "CTRL ALT $mod , ${ws}, focusworkspaceoncurrentmonitor, ${toString (x + 1)}"
]
- )
- 10)
- ) ++ (
- # Monitor {0..4} --> Key {1..5}
- builtins.concatLists (builtins.genList (
- x: let
- mon = builtins.toString(x);
- key = builtins.toString(x + 1);
- in [
-
+ ) 10
+ )
+ )
+ ++ (
+ # Monitor {0..4} --> Key {1..5}
+ builtins.concatLists (
+ builtins.genList (
+ x:
+ let
+ mon = builtins.toString (x);
+ key = builtins.toString (x + 1);
+ in
+ [
+
# Move current workspace to a monitor {1..4}
"CTRL ALT SHIFT $mod, ${key}, movecurrentworkspacetomonitor, ${mon} "
- ]
- ) 4));
+ ]
+ ) 4
+ )
+ );
- bindm = [
- "$mod, mouse:272, movewindow"
- "$mod, mouse:273, resizewindow"
- ];
-
- bindl = [
- "$mod, O, exec, sleep 1 && hyprctl dispatch dpms toggle"
- ] ++ (lib.optionals config.homeapps.presets.multimedia.enable [
- # Playerctl binds if playerctl is enabled
- " , XF86AudioNext, exec, playerctl next"
- " , XF86AudioPause, exec, playerctl play-pause"
- " , XF86AudioPlay, exec, playerctl play-pause"
- " , XF86AudioPrev, exec, playerctl previous"
- ]);
+ bindm = [
+ "$mod, mouse:272, movewindow"
+ "$mod, mouse:273, resizewindow"
+ ];
- bindel = [
- # Laptop multimedia keys for volume and LCD brightness
- " ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
- " ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
- " ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
- " ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
- " ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+"
- " ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-"
- ];
+ bindl = [
+ "$mod, O, exec, sleep 1 && hyprctl dispatch dpms toggle"
+ ]
+ ++ (lib.optionals config.homeapps.presets.multimedia.enable [
+ # Playerctl binds if playerctl is enabled
+ " , XF86AudioNext, exec, playerctl next"
+ " , XF86AudioPause, exec, playerctl play-pause"
+ " , XF86AudioPlay, exec, playerctl play-pause"
+ " , XF86AudioPrev, exec, playerctl previous"
+ ]);
+ bindel = [
+ # Laptop multimedia keys for volume and LCD brightness
+ " ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
+ " ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
+ " ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
+ " ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
+ " ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+"
+ " ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-"
+ ];
- windowrulev2 = [
- "suppressevent maximize, class:.*" # You'll probably like this.
- ];
+ windowrulev2 = [
+ "suppressevent maximize, class:.*" # You'll probably like this.
+ ];
- source = [
- "~/.config/hypr/hypr_test.conf"
- ];
- };
- };
+ source = [
+ "~/.config/hypr/hypr_test.conf"
+ ];
+ };
+ };
services.hyprpaper = {
- enable = true;
+ enable = true;
settings = {
ipc = "on";
splash = false;
splash_offset = 2.0;
preload = [ "${./wallpaper.png}" ];
- wallpaper= [ ",${./wallpaper.png}" ];
+ wallpaper = [ ",${./wallpaper.png}" ];
};
- };
+ };
programs.hyprlock = {
- enable=true;
+ enable = true;
settings = {
general = {
disable_loading_bar = true;
@@ -283,25 +302,25 @@ with lib;
};
};
- services.hypridle.enable = true;
+ services.hypridle.enable = true;
services.hypridle.settings = {
general = {
- lock_cmd ="pidof hyprlock || hyprlock";
- before_sleep_cmd="loginctl lock-session";
- ignore_dbus_inhibit=false;
- after_sleep_cmd="hyprctl_dispatch dpms on";
+ lock_cmd = "pidof hyprlock || hyprlock";
+ before_sleep_cmd = "loginctl lock-session";
+ ignore_dbus_inhibit = false;
+ after_sleep_cmd = "hyprctl_dispatch dpms on";
};
listener = [
{
timeout = 120;
- on-timeout = "hyprlock";
- }
+ on-timeout = "hyprlock";
+ }
{
timeout = 300;
on-timeout = "hyprctl dispatch dpms off";
- on-resume = "hyprctl dispatch dpms on";
+ on-resume = "hyprctl dispatch dpms on";
}
];
};
- };
+ };
}