From be93f5638836af774eeab23f97ee9e32939a3844 Mon Sep 17 00:00:00 2001 From: Aly Raffauf Date: Sun, 14 Apr 2024 14:07:37 -0400 Subject: [PATCH] hyprland: cleaned config and added window workspace rules --- .../desktopEnv/hypr/default.nix | 371 +++++++++--------- 1 file changed, 189 insertions(+), 182 deletions(-) diff --git a/homeManagerModules/desktopEnv/hypr/default.nix b/homeManagerModules/desktopEnv/hypr/default.nix index ca240a78..01be4741 100644 --- a/homeManagerModules/desktopEnv/hypr/default.nix +++ b/homeManagerModules/desktopEnv/hypr/default.nix @@ -41,8 +41,6 @@ hyprshot kdePackages.polkit-kde-agent-1 networkmanagerapplet - playerctl - swayosd trayscale xfce.exo xfce.thunar @@ -136,221 +134,230 @@ monitor = desc:HP Inc. HP 24mh 3CM037248S,preferred,-1920x0,auto monitor = ,preferred,auto,auto - # unscale XWayland apps - xwayland { - force_zero_scaling = true - } + # unscale XWayland apps + xwayland { + force_zero_scaling = true + } - # toolkit-specific scale - env = GDK_SCALE,${gdk_scale} + # toolkit-specific scale + env = GDK_SCALE,${gdk_scale} - # Some default env vars. - env = XCURSOR_SIZE,${cursor_size} - env = QT_QPA_PLATFORMTHEME,${qt_platform_theme} + # Some default env vars. + env = XCURSOR_SIZE,${cursor_size} + env = QT_QPA_PLATFORMTHEME,${qt_platform_theme} - # Execute necessary apps - exec-once = ${wallpaperd} - exec-once = ${bar} - exec-once = ${notifyd} - exec-once = ${pkgs.wl-clipboard}/bin/wl-paste --type text --watch cliphist store - exec-once = ${pkgs.wl-clipboard}/bin/wl-paste --type image --watch cliphist store - exec-once = ${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1 - exec-once = ${fileManager} --daemon - exec-once = ${pkgs.hyprshade}/bin/hyprshade auto - exec-once = ${pkgs.hypridle}/bin/hypridle - exec-once = ${pkgs.swayosd}/bin/swayosd-server - exec-once = ${pkgs.networkmanagerapplet}/bin/nm-applet + # Execute necessary apps + exec-once = ${wallpaperd} + exec-once = ${bar} + exec-once = ${notifyd} + exec-once = ${pkgs.wl-clipboard}/bin/wl-paste --type text --watch cliphist store + exec-once = ${pkgs.wl-clipboard}/bin/wl-paste --type image --watch cliphist store + exec-once = ${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1 + exec-once = ${fileManager} --daemon + exec-once = ${pkgs.hyprshade}/bin/hyprshade auto + exec-once = ${pkgs.hypridle}/bin/hypridle + exec-once = ${pkgs.swayosd}/bin/swayosd-server + exec-once = ${pkgs.networkmanagerapplet}/bin/nm-applet - # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ - input { - kb_layout = us - follow_mouse = 1 - sensitivity = 0 # -1.0 to 1.0, 0 means no modification. - touchpad { - clickfinger_behavior = true - drag_lock = true - middle_button_emulation = true - natural_scroll = yes - tap-to-click = true - } - } + # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ + input { + kb_layout = us + follow_mouse = 1 + sensitivity = 0 # -1.0 to 1.0, 0 means no modification. + touchpad { + clickfinger_behavior = true + drag_lock = true + middle_button_emulation = true + natural_scroll = yes + tap-to-click = true + } + } - gestures { - workspace_swipe = true - } + gestures { + workspace_swipe = true + } - general { - gaps_in = 5 - gaps_out = 10 - border_size = 2 - col.active_border = rgba(${border_secondary}) rgba(${border_primary}) 45deg - col.inactive_border = rgba(${border_inactive}) + general { + gaps_in = 5 + gaps_out = 10 + border_size = 2 + col.active_border = rgba(${border_secondary}) rgba(${border_primary}) 45deg + col.inactive_border = rgba(${border_inactive}) - layout = dwindle + layout = dwindle - allow_tearing = false - } + allow_tearing = false + } - decoration { - rounding = 10 - blur { - enabled = true - size = 8 - passes = 1 - } - drop_shadow = yes - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba(${drop_shadow}) + decoration { + rounding = 10 + blur { + enabled = true + size = 8 + passes = 1 + } + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(${drop_shadow}) - dim_special = 0.5 + dim_special = 0.5 - # Window-specific rules - layerrule = blur, waybar - layerrule = ignorezero, waybar - layerrule = blur, launcher - layerrule = blur, notifications - layerrule = ignorezero, notifications - layerrule = blur, logout_dialog - } + # Window-specific rules + layerrule = blur, waybar + layerrule = ignorezero, waybar + layerrule = blur, launcher + layerrule = blur, notifications + layerrule = ignorezero, notifications + layerrule = blur, logout_dialog + } - animations { - enabled = yes - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + animations { + enabled = yes + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = specialWorkspace, 1, 6, default, slidevert - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = workspaces, 1, 6, default - } + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = specialWorkspace, 1, 6, default, slidevert + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = workspaces, 1, 6, default + } - dwindle { - preserve_split = yes # you probably want this - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - } + dwindle { + preserve_split = yes # you probably want this + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + } - master { - always_center_master = true - new_is_master = false - } + master { + always_center_master = true + new_is_master = false + } - misc { - disable_hyprland_logo = true - disable_splash_rendering = true - focus_on_activate = true - vfr = true - } + misc { + disable_hyprland_logo = true + disable_splash_rendering = true + focus_on_activate = true + vfr = true + } - # Window Rules - windowrulev2 = center(1),class:(blueberry.py) - windowrulev2 = center(1),class:(nmtui) - windowrulev2 = center(1),class:(pavucontrol) - windowrulev2 = center(1),class:(com.github.wwmm.easyeffects) + # Window Rules + windowrulev2 = center(1),class:(blueberry.py) + windowrulev2 = center(1),class:(nmtui) + windowrulev2 = center(1),class:(pavucontrol) + windowrulev2 = center(1),class:(com.github.wwmm.easyeffects) - windowrulev2 = float,class:(blueberry.py) - windowrulev2 = float,class:(nmtui) - windowrulev2 = float,class:(pavucontrol) - windowrulev2 = float,class:(com.github.wwmm.easyeffects) + windowrulev2 = float,class:(blueberry.py) + windowrulev2 = float,class:(nmtui) + windowrulev2 = float,class:(pavucontrol) + windowrulev2 = float,class:(com.github.wwmm.easyeffects) - windowrulev2 = size 40% 60%,class:(blueberry.py) - windowrulev2 = size 40% 60%,class:(nmtui) - windowrulev2 = size 40% 60%,class:(pavucontrol) - windowrulev2 = size 40% 60%,class:(com.github.wwmm.easyeffects) + windowrulev2 = size 40% 60%,class:(blueberry.py) + windowrulev2 = size 40% 60%,class:(nmtui) + windowrulev2 = size 40% 60%,class:(pavucontrol) + windowrulev2 = size 40% 60%,class:(com.github.wwmm.easyeffects) - windowrulev2 = suppressevent maximize, class:.* + windowrulev2 = workspace 1,class:(firefox) - # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more - bind = ${modifier}, T, exec, ${terminal} - bind = ${modifier}, F, exec, ${fileManager} - bind = ${modifier}, B, exec, ${browser} - bind = ${modifier}, E, exec, ${editor} - bind = ${modifier}, R, exec, ${launcher} + windowrulev2 = workspace 2,class:(codium-url-handler) - # Manage session. - bind = ${modifier}, C, killactive, - bind = ${modifier}, M, exec, ${logout} - bind = ${modifier}, L, exec, ${lock} + windowrulev2 = workspace 4,class:(google-chrome) - # Basic window management. - bind = ${modifier} SHIFT, W, fullscreen - bind = ${modifier} SHIFT, V, togglefloating, - bind = ${modifier} SHIFT, P, pseudo, # dwindle - bind = ${modifier} SHIFT, J, togglesplit, # dwindle + windowrulev2 = workspace special:magic,class:(org.gnome.Fractal) + windowrulev2 = workspace special:magic,class:(WebCord) - # Move focus with mainMod + arrow keys - bind = ${modifier}, left, movefocus, l - bind = ${modifier}, right, movefocus, r - bind = ${modifier}, up, movefocus, u - bind = ${modifier}, down, movefocus, d + windowrulev2 = suppressevent maximize, class:.* - # Gnome-like workspaces. - # bind = ${modifier}, 1, exec, ${hyprnome} --previous - # bind = ${modifier}, 2, exec, ${hyprnome} - # bind = ${modifier} SHIFT, 1, exec, ${hyprnome} --previous --move - # bind = ${modifier} SHIFT, 2, exec, ${hyprnome} --move + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + bind = ${modifier}, T, exec, ${terminal} + bind = ${modifier}, F, exec, ${fileManager} + bind = ${modifier}, B, exec, ${browser} + bind = ${modifier}, E, exec, ${editor} + bind = ${modifier}, R, exec, ${launcher} - # Switch workspaces with mainMod + [0-9] - bind = ${modifier}, 1, workspace, 1 - bind = ${modifier}, 2, workspace, 2 - bind = ${modifier}, 3, workspace, 3 - bind = ${modifier}, 4, workspace, 4 - bind = ${modifier}, 5, workspace, 5 - bind = ${modifier}, 6, workspace, 6 - bind = ${modifier}, 7, workspace, 7 - bind = ${modifier}, 8, workspace, 8 - bind = ${modifier}, 9, workspace, 9 - bind = ${modifier}, 0, workspace, 10 + # Manage session. + bind = ${modifier}, C, killactive, + bind = ${modifier}, M, exec, ${logout} + bind = ${modifier}, L, exec, ${lock} - # Move active window to a workspace with mainMod + SHIFT + [0-9] - bind = ${modifier} SHIFT, 1, movetoworkspace, 1 - bind = ${modifier} SHIFT, 2, movetoworkspace, 2 - bind = ${modifier} SHIFT, 3, movetoworkspace, 3 - bind = ${modifier} SHIFT, 4, movetoworkspace, 4 - bind = ${modifier} SHIFT, 5, movetoworkspace, 5 - bind = ${modifier} SHIFT, 6, movetoworkspace, 6 - bind = ${modifier} SHIFT, 7, movetoworkspace, 7 - bind = ${modifier} SHIFT, 8, movetoworkspace, 8 - bind = ${modifier} SHIFT, 9, movetoworkspace, 9 - bind = ${modifier} SHIFT, 0, movetoworkspace, 10 + # Basic window management. + bind = ${modifier} SHIFT, W, fullscreen + bind = ${modifier} SHIFT, V, togglefloating, + bind = ${modifier} SHIFT, P, pseudo, # dwindle + bind = ${modifier} SHIFT, J, togglesplit, # dwindle - # Example special workspace (scratchpad) - bind = ${modifier}, S, togglespecialworkspace, magic - bind = ${modifier} SHIFT, S, movetoworkspace, special:magic + # Move focus with mainMod + arrow keys + bind = ${modifier}, left, movefocus, l + bind = ${modifier}, right, movefocus, r + bind = ${modifier}, up, movefocus, u + bind = ${modifier}, down, movefocus, d - # Scroll through existing workspaces with mainMod + scroll - bind = ${modifier}, mouse_down, workspace, +1 - bind = ${modifier}, mouse_up, workspace, -1 + # Gnome-like workspaces. + # bind = ${modifier}, 1, exec, ${hyprnome} --previous + # bind = ${modifier}, 2, exec, ${hyprnome} + # bind = ${modifier} SHIFT, 1, exec, ${hyprnome} --previous --move + # bind = ${modifier} SHIFT, 2, exec, ${hyprnome} --move - # Move/resize windows with mainMod + LMB/RMB and dragging - bindm = ${modifier}, mouse:272, movewindow - bindm = ${modifier}, mouse:273, resizewindow + # Switch workspaces with mainMod + [0-9] + bind = ${modifier}, 1, workspace, 1 + bind = ${modifier}, 2, workspace, 2 + bind = ${modifier}, 3, workspace, 3 + bind = ${modifier}, 4, workspace, 4 + bind = ${modifier}, 5, workspace, 5 + bind = ${modifier}, 6, workspace, 6 + bind = ${modifier}, 7, workspace, 7 + bind = ${modifier}, 8, workspace, 8 + bind = ${modifier}, 9, workspace, 9 + bind = ${modifier}, 0, workspace, 10 - # Display, volume, microphone, and media keys. - bindle = , xf86monbrightnessup, exec, ${brightness_up} - bindle = , xf86monbrightnessdown, exec, ${brightness_down} - bindle = , xf86audioraisevolume, exec, ${volume_up}; - bindle = , xf86audiolowervolume, exec, ${volume_down}; - bindl = , xf86audiomute, exec, ${volume_mute} - bindl = , xf86audiomicmute, exec, ${mic_mute} - bindl = , xf86audioplay, exec, ${media_play} - bindl = , xf86audioprev, exec, ${media_previous} - bindl = , xf86audionext, exec, ${media_next} + # Move active window to a workspace with mainMod + SHIFT + [0-9] + bind = ${modifier} SHIFT, 1, movetoworkspace, 1 + bind = ${modifier} SHIFT, 2, movetoworkspace, 2 + bind = ${modifier} SHIFT, 3, movetoworkspace, 3 + bind = ${modifier} SHIFT, 4, movetoworkspace, 4 + bind = ${modifier} SHIFT, 5, movetoworkspace, 5 + bind = ${modifier} SHIFT, 6, movetoworkspace, 6 + bind = ${modifier} SHIFT, 7, movetoworkspace, 7 + bind = ${modifier} SHIFT, 8, movetoworkspace, 8 + bind = ${modifier} SHIFT, 9, movetoworkspace, 9 + bind = ${modifier} SHIFT, 0, movetoworkspace, 10 - # Extra bindings for petalburg. - bind = , xf86launch4, exec, pp-adjuster - bind = , xf86launch1, exec, ${pkgs.hyprshade}/bin/hyprshade toggle - bind = , xf86launch2, exec, ${media_play} + # Example special workspace (scratchpad) + bind = ${modifier}, S, togglespecialworkspace, magic + bind = ${modifier} SHIFT, S, movetoworkspace, special:magic - # Screenshot with hyprshot. - bind = , PRINT, exec, ${screenshot_screen} - bind = ${modifier}, PRINT, exec, ${screenshot_region} + # Scroll through existing workspaces with mainMod + scroll + bind = ${modifier}, mouse_down, workspace, +1 + bind = ${modifier}, mouse_up, workspace, -1 - # Show/hide waybar. - bind = ${modifier}, F11, exec, pkill -SIGUSR1 waybar + # Move/resize windows with mainMod + LMB/RMB and dragging + bindm = ${modifier}, mouse:272, movewindow + bindm = ${modifier}, mouse:273, resizewindow + + # Display, volume, microphone, and media keys. + bindle = , xf86monbrightnessup, exec, ${brightness_up} + bindle = , xf86monbrightnessdown, exec, ${brightness_down} + bindle = , xf86audioraisevolume, exec, ${volume_up}; + bindle = , xf86audiolowervolume, exec, ${volume_down}; + bindl = , xf86audiomute, exec, ${volume_mute} + bindl = , xf86audiomicmute, exec, ${mic_mute} + bindl = , xf86audioplay, exec, ${media_play} + bindl = , xf86audioprev, exec, ${media_previous} + bindl = , xf86audionext, exec, ${media_next} + + # Extra bindings for petalburg. + bind = , xf86launch4, exec, pp-adjuster + bind = , xf86launch1, exec, ${pkgs.hyprshade}/bin/hyprshade toggle + bind = , xf86launch2, exec, ${media_play} + + # Screenshot with hyprshot. + bind = , PRINT, exec, ${screenshot_screen} + bind = ${modifier}, PRINT, exec, ${screenshot_region} + + # Show/hide waybar. + bind = ${modifier}, F11, exec, pkill -SIGUSR1 waybar ''; }; }