diff --git a/misc/.config/hypr/hyprland.conf b/misc/.config/hypr/hyprland.conf index c98e8e1..ce77c05 100644 --- a/misc/.config/hypr/hyprland.conf +++ b/misc/.config/hypr/hyprland.conf @@ -1,14 +1,14 @@ # See https://wiki.hyprland.org/Configuring/Monitors/ -monitor=,highrr,auto,auto -monitor=eDP-1, 1920x1080@60Hz, 1280x1480, 1 -monitor=DP-5, 1920x1080@60Hz, 1920x400, 1 -monitor=DP-7, 2560x1440@60Hz, 3840x0, 1, transform, 3 -monitor=DP-6, disable + +# Source monitor config for machine +source = ./monitors.conf # Wayland related environment variables. -env = XCURSOR_SIZE,24 +env = HYPRCURSOR_THEME,McMojave +env = HYPRCURSOR_SIZE,30 env = WLR_NO_HARDWARE_CURSORS,1 env = TERMINAL,foot +env = QT_QPA_PLATFORM,wayland # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { @@ -40,7 +40,9 @@ general { gaps_out = 12 border_size = 2 # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg - col.active_border = rgba(ffffffff) rgba(ffffffff) 45deg + col.active_border = rgba(83a598ff) rgba(acc3baff) 45deg + # col.active_border = rgba(fc8577ff) rgba(fb4934ff) 45deg + # col.active_border = rgba(b3d5a7ff) rgba(8ec07cff) 45deg col.inactive_border = rgba(595959aa) layout = master @@ -92,7 +94,7 @@ dwindle { master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_on_top = true - new_is_master = true + new_status = master no_gaps_when_only = true } @@ -112,7 +114,8 @@ misc { # Window rules windowrule = tile,title:^(VRChat)$ windowrule = tile,title:^(nsxiv)$ -windowrule = bordercolor rgb(FF0000) rgb(880808),title:^(rofi.*)$ + +windowrulev2 = suppressevent maximize, class:.* # Some windows try to maximize themselves instantly $mainMod = SUPER @@ -129,10 +132,10 @@ bind = $mainMod, M, exec, foot -e zsh -c 'neomutt' bind = $mainMod, R, exec, fuzzel # System control keybinds -binde = $mainMod, MINUS, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" -binde = $mainMod SHIFT, MINUS, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" -binde = $mainMod, EQUAL, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" -binde = $mainMod SHIFT, EQUAL, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" +binde = $mainMod, MINUS, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-; test -z "$(pidof waybar)" && notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" +binde = $mainMod SHIFT, MINUS, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; test -z "$(pidof waybar)" && notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" +binde = $mainMod, EQUAL, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+; test -z "$(pidof waybar)" && notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" +binde = $mainMod SHIFT, EQUAL, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; test -z "$(pidof waybar)" && notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" binde = ,F7, exec, change-brightness up binde = ,XF86MonBrightnessUp, exec, change-brightness up binde = ,F6, exec, change-brightness down @@ -195,7 +198,7 @@ bind = $mainMod SHIFT, T, layoutmsg, orientationtop # Special windows bind = $mainMod, F, togglefloating, -bind = $mainMod SHIFT, F, fakefullscreen +bind = $mainMod SHIFT, F, fullscreenstate, 1 bind = $mainMod, S, togglespecialworkspace, magic bind = $mainMod SHIFT, S, movetoworkspace, special:magic @@ -221,7 +224,7 @@ bind = $mainMod SHIFT, 6, exec, hyprdwm moveto 6 bind = $mainMod SHIFT, 7, exec, hyprdwm moveto 7 bind = $mainMod SHIFT, 8, exec, hyprdwm moveto 8 bind = $mainMod SHIFT, 9, exec, hyprdwm moveto 9 -bind = $mainMod SHIFT, 9, exec, hyprdwm moveto 10 +bind = $mainMod SHIFT, 0, exec, hyprdwm moveto 10 # Moving windows between monitors bind = $mainMod SHIFT, COMMA, movewindow, mon:-1 diff --git a/nixos/.config/nixos/profiles/wm/hyprland.nix b/nixos/.config/nixos/profiles/wm/hyprland.nix index 73b91f8..ef0f547 100644 --- a/nixos/.config/nixos/profiles/wm/hyprland.nix +++ b/nixos/.config/nixos/profiles/wm/hyprland.nix @@ -8,14 +8,15 @@ let nixos-unstable = (import {}); flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz"; - hyprland = (import flake-compat { - src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz"; + + hyprland_nightly = (import flake-compat { + # we're not using pkgs.fetchgit as that requires a hash to be provided + src = builtins.fetchGit { + url = "https://github.com/hyprwm/Hyprland.git"; + submodules = true; + }; }).defaultNix; in { - imports = [ - hyprland.nixosModules.default - ]; - # Trusted Hyprland cache, as to not have to rebuild nightly nix.settings = { substituters = ["https://hyprland.cachix.org"]; @@ -29,23 +30,26 @@ in { hyprland = { # Dynamic tiling window manager enable = true; xwayland.enable = true; - # package = ((hyprland.packages.${pkgs.system}.default).override (o: { - # }); + # package = nixos-unstable.hyprland; + package = hyprland_nightly.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; }; }; systemd.user.services = { hyprland-autoname-workspaces = { description = "Hyprland-autoname-workspaces as systemd service"; + after = [ "graphical-session.target" ]; + requires = [ "graphical-session.target" ]; wantedBy = [ "graphical-session.target" ]; - partOf = [ "graphical-session.target" ]; script = "${pkgs.hyprland-autoname-workspaces}/bin/hyprland-autoname-workspaces"; serviceConfig.Restart = "always"; serviceConfig.RestartSec = 1; }; network-manager-applet = { description = "Start the network manager applet"; - wantedBy = [ "default.target" ]; + after = [ "graphical-session.target" ]; + requires = [ "graphical-session.target" ]; + wantedBy = [ "graphical-session.target" ]; serviceConfig.Type = "forking"; serviceConfig.Restart = "always"; serviceConfig.RestartSec = 1; @@ -56,7 +60,7 @@ in { environment.systemPackages = with pkgs; [ ags # GTK shell for status bar and widgets blueman # Bluetooth manager - # dunst # Notification daemon + dunst # Notification daemon firefox # My browser of choice foot # Wayland native terminal fuzzel # Fuzzy finding menuing program @@ -79,9 +83,11 @@ in { rofi-pass # Rofi frontend for password store sassc # SCSS interpreter slurp # Screen selection utility + sassc # Styling language for AGS swaylock # Wayland session locker swww # Sets background images texlive.combined.scheme-full # LaTeX to create documents + tor-browser # Onion network browser typst # Cool, minimal LaTeX alternative ungoogled-chromium # If I need a special chrome feature waybar # Status bar @@ -90,6 +96,7 @@ in { wl-clipboard # Copy/paste utility wlr-randr # Xrandr substitute xwaylandvideobridge # Allows screensharing from XWayland programs + xorg.xcursorthemes zathura # Minimalist PDF reader # GTK Themes @@ -99,6 +106,9 @@ in { nixpkgs.overlays = [ (self: super: { + hyprland-autoname-workspaces = nixos-unstable.hyprland-autoname-workspaces; + waybar = nixos-unstable.waybar; + typst = nixos-unstable.typst; hyprpicker = hyprpicker_0_1_1; grimblast = super.grimblast.override (o: { hyprpicker = hyprpicker_0_1_1;