diff --git a/modules/hm/hyprland.nix b/modules/hm/hyprland.nix index 4e0fb41..0477b14 100644 --- a/modules/hm/hyprland.nix +++ b/modules/hm/hyprland.nix @@ -1,4 +1,4 @@ -{ nixosConfig, pkgs, ... }: +{ nixosConfig, lib, pkgs, ... }: with nixosConfig.nix-rice.lib; let strPalette = palette.toRgbaShortHex nixosConfig.nix-rice.rice.colorPalette; @@ -40,268 +40,221 @@ in ; }; - # wayland.windowManager.hyprland = { }; + services.network-manager-applet.enable = true; + services.blueman-applet.enable = true; - systemd.user.targets."hyprland-login".Unit = { - Description = "User Graphical Login"; - Requires = [ "graphical-session.target" ]; - After = [ "graphical-session.target" ]; - }; + wayland.windowManager.hyprland = { + enable = true; + settings = { + input = { + kb_layout = if nixosConfig.networking.hostName == "thor" then "us,it,us" else "it,us,us"; + kb_options = "grp:menu_toggle,compose:rctrl"; + kb_variant = ",,colemak"; + kb_model = ""; + kb_rules = ""; + numlock_by_default = true; + follow_mouse = 2; + touchpad.natural_scroll = true; + }; - systemd.user.services."swaynotificationcenter".Unit = { - Description = "Run "; - }; + exec = lib.lists.optionals (nixosConfig.networking.hostName == "thor") [ + "xrandr --output DP-3 --primary" + "noti -t 'Hyprland' -m 'New config loaded\!'" + ]; + exec-once = [ + "swww init" + ]; + # exec-shutdown = [ ]; - xdg.configFile."hypr/hyprland.conf" = { - text = '' - # - # Please note not all available settings / options are set here. - # For a full list, see the wiki - # + env = [ + "XCURSOR_SIZE,24" + ]; - # See https://wiki.hyprland.org/Configuring/Monitors/ - # monitor=name,resolution,position,scale - monitor=,preferred,auto,auto - monitor=Unknown-1,disable - ${ - if nixosConfig.networking.hostName == "thor" then - '' - monitor=DP-3,preferred,1080x420,auto - monitor=HDMI-A-1,preferred,0x0,auto,transform,3 - '' - else if nixosConfig.networking.hostName == "odin" then - '' - monitor=eDP-1,preferred,320x1440,1 - monitor=DP-1,preferred,0x0,1 - '' - else - "" - } + "$LAPTOP_KEYBOARD_ENABLED" = true; + device = [ + { name = "at-translated-set-2-keyboard"; enabled = "$LAPTOP_KEYBOARD_ENABLED"; } + { name = "keychron-k1-max-keyboard"; kb_layout = "us"; } + { name = "keychron-k1-max-keyboard-2"; kb_layout = "us"; } + ]; + general = { + gaps_in = 1; + gaps_out = 2; + border_size = 2; + "col.active_border" = "rgba(${strPalette.normal.yellow}) rgba(${strPalette.normal.red}) 45deg"; + "col.inactive_border" = "rgba(${strPalette.bright.black})"; + layout = "dwindle"; + }; - # See https://wiki.hyprland.org/Configuring/Keywords/ for more + monitor = [ + ",preferred,auto,auto" + "Unknown-1,disable" + ] ++ lib.lists.optionals (nixosConfig.networking.hostName == "thor") [ + "DP-3,preferred,1080x420,auto" + "HDMI-A-1,preferred,0x0,auto,transform,3" + ] ++ lib.lists.optionals (nixosConfig.networking.hostName == "odin") [ + "eDP-1,preferred,320x1440,1" + "DP-1,preferred,0x0,1" + ]; - # Execute your favorite apps at launch - exec-once = ${ - if nixosConfig.networking.hostName == "thor" then "xrandr --output DP-2 --primary" else "true" - } & swww init & nm-applet & blueman-applet & systemctl --user start hyprland-login.target + misc.disable_hyprland_logo = true; - # Source a file (multi-file configs) - # source = ~/.config/hypr/myColors.conf + 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" + ]; + }; - # Some default env vars. - env = XCURSOR_SIZE,24 + dwindle = { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ + # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + pseudotile = true; + preserve_split = true; # you probably want this + }; - # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ - input { - kb_layout = ${if nixosConfig.networking.hostName == "thor" then "us,it,us" else "it,us,us"} - kb_variant = ,,colemak - kb_model = - kb_options = grp:menu_toggle,compose:rctrl - kb_rules = - numlock_by_default = true + master = { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_status = "master"; + }; - follow_mouse = 2 + gestures = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = true; + }; - touchpad { - natural_scroll = yes - } + decoration = { + rounding = 10; + blur = { + enabled = true; + size = 3; + passes = 1; + new_optimizations = true; + }; - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. - } + drop_shadow = true; + shadow_range = 4; + shadow_render_power = 3; + "col.shadow" = "rgba(1a1a1aee)"; + }; - $LAPTOP_KEYBOARD_ENABLED = true - device { - name = at-translated-set-2-keyboard - enabled = $LAPTOP_KEYBOARD_ENABLED - } + "$mod" = "SUPER"; - device { - name=keychron-k1-max-keyboard - kb_layout=us - } + bind = [ + "SUPER_SHIFT_L, L, exec, hyprctl keyword general:layout dwindle" + "SUPER_ALT_L, L, exec, hyprctl keyword general:layout master" - device { - name=keychron-k1-max-keyboard-2 - kb_layout=us - } + "SUPER, RETURN, exec, kitty" + "SUPER, W, killactive," + "SUPER, M, exec, wl-lockscreen" + "SUPER_ALT_L, Q, exit," + "SUPER, E, exec, nautilus" + "SUPER, L, exec, env -u WAYLAND_DISPLAY logseq" + "SUPER_SHIFT, E, exec, nemo" + "SUPER, V, togglefloating," + "SUPER, SPACE, exec, sirula" + "SUPER, F, fullscreen," + "SUPER, P, pseudo, # dwindle" + "SUPER, J, togglesplit, # dwindle" + "SUPER ALT, E, exec, wofi-emoji" + "SUPER ALT, P, exec, wl-clipedit" + "SUPER, B, exec, wl-update-background" + ",Print, exec, grimblast copy" + "SHIFT, Print, exec, grimblast copy area" - general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more + # Move focus to relative position + "SUPER, left, movefocus, l" + "SUPER, right, movefocus, r" + "SUPER, up, movefocus, u" + "SUPER, down, movefocus, d" - gaps_in = 1 - gaps_out = 2 - border_size = 2 - col.active_border = rgba(${strPalette.normal.yellow}) rgba(${strPalette.normal.red}) 45deg - col.inactive_border = rgba(${strPalette.bright.black}) + # Move window to relative position + "SUPER_SHIFT, left, movewindow, l" + "SUPER_SHIFT, right, movewindow, r" + "SUPER_SHIFT, up, movewindow, u" + "SUPER_SHIFT, down, movewindow, d" - layout = dwindle - } + # Switch workspaces with mainMod + [0-9] + "SUPER, 1, workspace, 1" + "SUPER, 2, workspace, 2" + "SUPER, 3, workspace, 3" + "SUPER, 4, workspace, 4" + "SUPER, 5, workspace, 5" + "SUPER, 6, workspace, 6" + "SUPER, 7, workspace, 7" + "SUPER, 8, workspace, 8" + "SUPER, 9, workspace, 9" + "SUPER, 0, workspace, 10" - misc { - disable_hyprland_logo = true - } + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "SUPER SHIFT, 1, movetoworkspace, 1" + "SUPER SHIFT, 2, movetoworkspace, 2" + "SUPER SHIFT, 3, movetoworkspace, 3" + "SUPER SHIFT, 4, movetoworkspace, 4" + "SUPER SHIFT, 5, movetoworkspace, 5" + "SUPER SHIFT, 6, movetoworkspace, 6" + "SUPER SHIFT, 7, movetoworkspace, 7" + "SUPER SHIFT, 8, movetoworkspace, 8" + "SUPER SHIFT, 9, movetoworkspace, 9" + "SUPER SHIFT, 0, movetoworkspace, 10" - decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more + # Move workspace to monitor with mainMod + SHIFT + CTRL + [0-9] + "SUPER SHIFT CTRL, 1, movecurrentworkspacetomonitor, 0" + "SUPER SHIFT CTRL, 2, movecurrentworkspacetomonitor, 1" + "SUPER SHIFT CTRL, 3, movecurrentworkspacetomonitor, 2" + "SUPER SHIFT CTRL, 4, movecurrentworkspacetomonitor, 3" + "SUPER SHIFT CTRL, 5, movecurrentworkspacetomonitor, 4" + "SUPER SHIFT CTRL, 6, movecurrentworkspacetomonitor, 5" + "SUPER SHIFT CTRL, 7, movecurrentworkspacetomonitor, 6" + "SUPER SHIFT CTRL, 8, movecurrentworkspacetomonitor, 7" + "SUPER SHIFT CTRL, 9, movecurrentworkspacetomonitor, 8" + "SUPER SHIFT CTRL, 0, movecurrentworkspacetomonitor, 9" - rounding = 10 + "ALT, Tab, cyclenext" + "ALT SHIFT, Tab, cyclenext, prev" - blur { - enabled = true - size = 3 - passes = 1 - new_optimizations = true - } + # Scroll through existing workspaces with mainMod + scroll + "SUPER, mouse_down, workspace, e+1" + "SUPER, mouse_up, workspace, e-1" + "SUPER ALT, M, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle" - drop_shadow = yes - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba(1a1a1aee) - } + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPrev, exec, playerctl previous" + "SUPER ALT, Right, exec, playerctl next" + "SUPER ALT, Down, exec, playerctl play-pause" + "SUPER ALT, Left, exec, playerctl previous" - animations { - enabled = yes + ", XF86PowerOff, exec, wlogout" + ]; - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + bindel = [ + ", XF86MonBrightnessUp, exec, brillo -A 10" + ", XF86MonBrightnessDown, exec, brillo -U 10" + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-" + ]; - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + bindl = [ + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ]; - 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 - } + bindm = [ + # mouse movements + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod ALT, mouse:272, resizewindow" - 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 - } - - master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_status = master - } - - gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = true - } - - # Example per-device config - # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more - # device:epic-mouse-v1 { - # sensitivity = -0.5 - # } - - # Example windowrule v1 - # windowrule = float, ^(kitty)$ - # Example windowrule v2 - # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ - # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more - - - # See https://wiki.hyprland.org/Configuring/Keywords/ for more - # $mainMod = SUPER - - # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more - bind = SUPER, RETURN, exec, kitty - bind = SUPER, W, killactive, - bind = SUPER, M, exec, wl-lockscreen - bind = SUPER_ALT_L, Q, exit, - bind = SUPER, E, exec, nautilus - bind = SUPER, L, exec, env -u WAYLAND_DISPLAY logseq - bind = SUPER_SHIFT, E, exec, nemo - bind = SUPER, V, togglefloating, - bind = SUPER, SPACE, exec, sirula - bind = SUPER, F, fullscreen, - bind = SUPER, P, pseudo, # dwindle - bind = SUPER, J, togglesplit, # dwindle - bind = SUPER ALT, E, exec, wofi-emoji - bind = SUPER ALT, P, exec, wl-clipedit - bind = SUPER, B, exec, wl-update-background - bind = ,Print, exec, grimblast copy - bind = SHIFT, Print, exec, grimblast copy area - - - # Move focus to relative position - bind = SUPER, left, movefocus, l - bind = SUPER, right, movefocus, r - bind = SUPER, up, movefocus, u - bind = SUPER, down, movefocus, d - - # Move window to relative position - bind = SUPER_SHIFT, left, movewindow, l - bind = SUPER_SHIFT, right, movewindow, r - bind = SUPER_SHIFT, up, movewindow, u - bind = SUPER_SHIFT, down, movewindow, d - - # Switch workspaces with mainMod + [0-9] - bind = SUPER, 1, workspace, 1 - bind = SUPER, 2, workspace, 2 - bind = SUPER, 3, workspace, 3 - bind = SUPER, 4, workspace, 4 - bind = SUPER, 5, workspace, 5 - bind = SUPER, 6, workspace, 6 - bind = SUPER, 7, workspace, 7 - bind = SUPER, 8, workspace, 8 - bind = SUPER, 9, workspace, 9 - bind = SUPER, 0, workspace, 10 - - # Move active window to a workspace with mainMod + SHIFT + [0-9] - bind = SUPER SHIFT, 1, movetoworkspace, 1 - bind = SUPER SHIFT, 2, movetoworkspace, 2 - bind = SUPER SHIFT, 3, movetoworkspace, 3 - bind = SUPER SHIFT, 4, movetoworkspace, 4 - bind = SUPER SHIFT, 5, movetoworkspace, 5 - bind = SUPER SHIFT, 6, movetoworkspace, 6 - bind = SUPER SHIFT, 7, movetoworkspace, 7 - bind = SUPER SHIFT, 8, movetoworkspace, 8 - bind = SUPER SHIFT, 9, movetoworkspace, 9 - bind = SUPER SHIFT, 0, movetoworkspace, 10 - - # Move workspace to monitor with mainMod + SHIFT + CTRL + [0-9] - bind = SUPER SHIFT CTRL, 1, movecurrentworkspacetomonitor, 0 - bind = SUPER SHIFT CTRL, 2, movecurrentworkspacetomonitor, 1 - bind = SUPER SHIFT CTRL, 3, movecurrentworkspacetomonitor, 2 - bind = SUPER SHIFT CTRL, 4, movecurrentworkspacetomonitor, 3 - bind = SUPER SHIFT CTRL, 5, movecurrentworkspacetomonitor, 4 - bind = SUPER SHIFT CTRL, 6, movecurrentworkspacetomonitor, 5 - bind = SUPER SHIFT CTRL, 7, movecurrentworkspacetomonitor, 6 - bind = SUPER SHIFT CTRL, 8, movecurrentworkspacetomonitor, 7 - bind = SUPER SHIFT CTRL, 9, movecurrentworkspacetomonitor, 8 - bind = SUPER SHIFT CTRL, 0, movecurrentworkspacetomonitor, 9 - - bind = ALT, Tab, cyclenext - bind = ALT SHIFT, Tab, cyclenext, prev - - # Scroll through existing workspaces with mainMod + scroll - bind = SUPER, mouse_down, workspace, e+1 - bind = SUPER, mouse_up, workspace, e-1 - - # Move/resize windows with mainMod + LMB/RMB and dragging - bindm = SUPER, mouse:272, movewindow - bindm = SUPER, mouse:273, resizewindow - - bindel=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ - bindel=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- - bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle - bind = SUPER ALT, M, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle - - bind = , XF86AudioNext, exec, playerctl next - bind = , XF86AudioPlay, exec, playerctl play-pause - bind = , XF86AudioPrev, exec, playerctl previous - bind = SUPER ALT, Right, exec, playerctl next - bind = SUPER ALT, Down, exec, playerctl play-pause - bind = SUPER ALT, Left, exec, playerctl previous - - bind = , XF86PowerOff, exec, wlogout - - bind = , XF86MonBrightnessUp, exec, brillo -A 10 - bind = , XF86MonBrightnessDown, exec, brillo -U 10 - ''; + # Move/resize windows with mainMod + LMB/RMB and dragging + "SUPER, mouse:272, movewindow" + "SUPER, mouse:273, resizewindow" + ]; + }; }; } diff --git a/modules/hm/waybar.nix b/modules/hm/waybar.nix index fbeb320..86ece57 100644 --- a/modules/hm/waybar.nix +++ b/modules/hm/waybar.nix @@ -21,6 +21,7 @@ in programs.waybar = { enable = true; systemd.enable = true; + systemd.target = "hyprland-session.target"; settings = { mainBar = { layer = "top";