{ config, pkgs, lib, inputs, ... }: let # inputs system = pkgs.stdenv.hostPlatform.system; hyprland = inputs.hyprland.packages.${system}; hyprland-plugins = inputs.hyprland-plugins.packages.${system}; hy3 = inputs.hy3.packages.${system}; browser = "firefox"; launcher = "wofi --show drun --prompt \"Search Program\""; lock_screen = "hyprlock"; terminal = "kitty"; in { config = lib.mkIf config.desktop.enable { home-manager.users.${config.user} = { wayland.windowManager.hyprland = { enable = true; package = hyprland.hyprland; # Plugins plugins = [ hyprland-plugins.hyprexpo hy3.hy3 ]; # Config settings = { # Monitors monitor = [ "${config.monitor.name}, highres, auto, ${toString config.monitor.scale}" ]; # Autostart exec-once = [ "waybar" "thunderbird" "discord --enable-features=UseOzonePlatform --ozone-platform=wayland" "element-desktop --enable-features=UseOzonePlatform --ozone-platform=wayland" ]; # General general = { gaps_in = config.theme.innerGap; gaps_out = config.theme.outerGap; layout = "hy3"; resize_on_border = "yes"; extend_border_grab_area = 20; border_size = config.theme.borderWidth; "col.active_border" = "rgb(${config.theme.accentColor})"; "col.inactive_border" = "rgb(${config.theme.colors.base04})"; }; # Gestures gestures = { workspace_swipe = true; workspace_swipe_fingers = 3; workspace_swipe_forever = true; workspace_swipe_cancel_ratio = 0.15; }; # Decoration decoration = { rounding = config.theme.outerRadius; shadow.enabled = false; blur = { enabled = true; size = 4; passes = 2; noise = 0.008; contrast = 0.8916; brightness = 0.8; }; }; # Animations animations = { enabled = true; bezier = [ "windowIn, 0.06, 0.71, 0.25, 1" "windowResize, 0.04, 0.67, 0.38, 1" ]; animation = [ "windowsIn, 1, 3, windowIn, slide #popin 20%" "windowsOut, 1, 3, windowIn, slide #popin 70%" "windowsMove, 1, 2.5, windowResize" "border, 1, 10, default" "borderangle, 1, 8, default" "fade, 1, 3, default" "workspaces, 1, 6, default" "layers, 1, 5, windowIn, slide" ]; }; # Environment env = [ "XDG_CURRENT_DESKTOP,Hyprland" "XDG_SESSION_DESKTOP,Hyprland" "XCURSOR_THEME,Adwaita" "XCURSOR_SIZE,24" "GTK_THEME,Orchis-Teal-Dark" "GDK_SCALE,${toString config.monitor.scale}" "MOZ_ENABLE_WAYLAND,1" "MOZ_USE_XINPUT,1" "_JAVA_AWT_WM_NONREPARENTING,1" ]; # Input input = { kb_layout = "us"; kb_variant = ""; kb_model = ""; kb_options = "gtp:alt_shit_toggle, compose:ralt"; kb_rules = ""; follow_mouse = 1; touchpad = { natural_scroll = "yes"; }; sensitivity = 0; }; # Keybinds "$mod" = "SUPER"; bind = [ # Launch programs "$mod, W, exec, ${browser}" "$mod, D, exec, ${launcher}" "$mod, L, exec, ${lock_screen}" "$mod, Return, exec, ${terminal}" # Misc "$mod SHIFT, L, exit" "$mod, tab, hyprexpo:expo, toggle" # Window operations "$mod SHIFT, Q, killactive" "$mod SHIFT, SPACE, togglefloating" "$mod, F, fullscreen" "$mod, J, togglesplit" # Move focus with mod + arrow keys "$mod, left, movefocus, l" "$mod, right, movefocus, r" "$mod, up, movefocus, u" "$mod, down, movefocus, d" # Move window across workspace with mod + arrow keys "$mod SHIFT, left, hy3:movewindow, l" "$mod SHIFT, right, hy3:movewindow, r" "$mod SHIFT, up, hy3:movewindow, u" "$mod SHIFT, down, hy3:movewindow, d" # Switch workspaces with mod + [0-9] "$mod, 1, workspace, 1" "$mod, 2, workspace, 2" "$mod, 3, workspace, 3" "$mod, 4, workspace, 4" "$mod, 5, workspace, 5" "$mod, 6, workspace, 6" "$mod, 7, workspace, 7" "$mod, 8, workspace, 8" "$mod, 9, workspace, 9" # Move active window to a workspace with mod + SHIFT + [0-9] "$mod SHIFT, 1, movetoworkspacesilent, 1" "$mod SHIFT, 2, movetoworkspacesilent, 2" "$mod SHIFT, 3, movetoworkspacesilent, 3" "$mod SHIFT, 4, movetoworkspacesilent, 4" "$mod SHIFT, 5, movetoworkspacesilent, 5" "$mod SHIFT, 6, movetoworkspacesilent, 6" "$mod SHIFT, 7, movetoworkspacesilent, 7" "$mod SHIFT, 8, movetoworkspacesilent, 8" "$mod SHIFT, 9, movetoworkspacesilent, 9" "$mod SHIFT, 0, movetoworkspacesilent, 10" # Move to tab "LALT, 1, hy3:focustab, index, 01" "LALT, 2, hy3:focustab, index, 02" "LALT, 3, hy3:focustab, index, 03" "LALT, 4, hy3:focustab, index, 04" "LALT, 5, hy3:focustab, index, 05" "LALT, 6, hy3:focustab, index, 06" "LALT, 7, hy3:focustab, index, 07" "LALT, 8, hy3:focustab, index, 08" "LALT, 9, hy3:focustab, index, 09" "LALT, 0, hy3:focustab, index, 10" "$mod SHIFT, B, hy3:makegroup, h" "$mod SHIFT, V, hy3:makegroup, v" "$mod SHIFT, C, hy3:changegroup, toggletab" # Scroll through existing workspaces with mod + scroll "$mod, mouse_down, workspace, e+1" "$mod, mouse_up, workspace, e-1" ]; bindn = [ # Focus windows with scroll wheel or middle click ", mouse:272, hy3:focustab, mouse" ", mouse_down, hy3:focustab, l, require_hovered" ", mouse_up, hy3:focustab, r, require_hovered" ]; bindm = [ # Move/resize windows with mod + LMB/RMB and dragging "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ]; binde = [ # Audio # raise volume ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" # lower volume ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" # mute speaker ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" # mute mic ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" # Media # play ", XF86AudioPlay, exec, playerctl play-pause" # next ", XF86AudioNext, exec, playerctl next" # prev ", XF86AudioPrev, exec, playerctl previous" # Backlight ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" ", XF86MonBrightnessUp, exec, brightnessctl set 5%+" ]; # Plugin configuration plugin = { # hy3 hy3 = { tabs = { height = 24; text_height = 9; text_padding = 10; padding = 2; render_text = true; text_font = "monospace"; radius = config.theme.outerRadius; "col.active" = "rgb(${config.theme.colors.base00})"; "col.inactive" = "rgb(${config.theme.colors.base00})"; "col.text.active" = "rgb(${config.theme.colors.base05})"; "col.text.inactive" = "rgb(${config.theme.colors.base05})"; "col.border.active" = "rgb(${config.theme.accentColor})"; "col.border.inactive" = "rgb(${config.theme.colors.base04})"; }; autotile = { enable = true; }; }; }; # XWayland xwayland = { force_zero_scaling = "true"; use_nearest_neighbor = "false"; }; # Misc misc = { disable_hyprland_logo = true; disable_splash_rendering = true; key_press_enables_dpms = true; mouse_move_enables_dpms = true; vrr = 1; }; }; }; }; }; }