From e5007d68983867546b29d594634aa7ffffa626db Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 02:58:28 +0100 Subject: [PATCH 01/10] feat: update `hyprland` gestures --- modules/home/hyprland/config.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/home/hyprland/config.nix b/modules/home/hyprland/config.nix index 500712a..c117613 100644 --- a/modules/home/hyprland/config.nix +++ b/modules/home/hyprland/config.nix @@ -157,11 +157,11 @@ }; gesture = [ - "3, horizontal, workspace" - "4, up, dispatcher, playerctl -p mpd play-pause" - "4, left, dispatcher, playerctl -p mpd next" - "4, right, dispatcher, playerctl -p mpd previous" - # "4, horizontal, move" + "3, left, dispatcher, changegroupactive, b" + "3, right, dispatcher, changegroupactive, f" + "4, horizontal, workspace" + "4, pinchin, fullscreen" + "4, pinchout, float" ]; bind = [ From f7e2d8b1e0429b3ed1bdbe0ea82709573db40299 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 03:24:09 +0100 Subject: [PATCH 02/10] feat: make `hyprland` gaps compatible with `nwg-dock-hyprland` --- modules/home/hyprland/config.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/home/hyprland/config.nix b/modules/home/hyprland/config.nix index c117613..e906f3f 100644 --- a/modules/home/hyprland/config.nix +++ b/modules/home/hyprland/config.nix @@ -5,6 +5,8 @@ ... }: { + services.hypridle.enable = true; + wayland.windowManager.hyprland = { settings = { @@ -51,11 +53,15 @@ }; }; + #workspace = [ + # "w[tv1], gapsout:0, gapsin:0" + # "f[1], gapsout:0, gapsin:0" + #]; general = { "$mainMod" = "ALT"; layout = "dwindle"; gaps_in = 0; - gaps_out = 0; + gaps_out = "0,0,85,0"; border_size = 2; "col.active_border" = "rgb(ffffff) rgb(ffffff) 45deg"; "col.inactive_border" = "0x00000000"; @@ -282,11 +288,6 @@ "$mainMod, mouse:273, resizewindow" ]; - workspace = [ - "w[tv1], gapsout:0, gapsin:0" - "f[1], gapsout:0, gapsin:0" - ]; - # windowrule # windowrule = [ # "float,title:^(float_kitty)$" From d1b298d16fc02d03ebca03e6e42b66223ac11a18 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 11:11:45 +0100 Subject: [PATCH 03/10] feat: adds `nwg-dock-hyprland` --- modules/home/hyprland/config.nix | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/modules/home/hyprland/config.nix b/modules/home/hyprland/config.nix index e906f3f..073112d 100644 --- a/modules/home/hyprland/config.nix +++ b/modules/home/hyprland/config.nix @@ -5,6 +5,55 @@ ... }: { + + home.file.".config/nwg-dock-hyprland/style.css".text = '' + * { + border-radius: 0 + } + + window { + background: #000000; + border-style: none; + border-width: 1px; + border-radius: 0; + border-color: rgba(156, 142, 122, 0.7); + padding: 4em 6em; + background: rgba(0, 0, 0, 0.5); + -webkit-backdrop-filter: blur(25px); + margin: 7px; + } + + #box { + /* Define attributes of the box surrounding icons here */ + padding: 10px + } + + button, + image { + background: none; + border-style: none; + box-shadow: none; + color: #999 + } + + button { + padding: 4px; + margin-left: 4px; + margin-right: 4px; + color: #eee; + font-size: 12px + } + + button:hover { + background-color: rgba(255, 255, 255, 0.15); + border-radius: 2px; + } + + button:focus { + box-shadow: 0 0 2px; + } + ''; + services.hypridle.enable = true; wayland.windowManager.hyprland = { From 31a8c8194d439a2098bca17456f353d7eb2bbf16 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 11:12:23 +0100 Subject: [PATCH 04/10] flake: adds `hyprland-plugins` and make it follow `hyprland` --- flake.lock | 31 +++++++++++++++++++++++++++++++ flake.nix | 2 ++ 2 files changed, 33 insertions(+) diff --git a/flake.lock b/flake.lock index d309bd2..10beeda 100644 --- a/flake.lock +++ b/flake.lock @@ -421,6 +421,36 @@ "type": "github" } }, + "hyprland-plugins": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "hyprland-plugins", + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland-plugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1765207366, + "narHash": "sha256-s0jO2kEj5cLLTgTblKnAKjqt3MjYFnmyrQT3SxiUugM=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "e058ea23b80775cf20c675d064678416df2d9d04", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-plugins", + "type": "github" + } + }, "hyprland-protocols": { "inputs": { "nixpkgs": [ @@ -923,6 +953,7 @@ "home-manager": "home-manager", "hypr-contrib": "hypr-contrib", "hyprland": "hyprland", + "hyprland-plugins": "hyprland-plugins", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_5", "nixvim": "nixvim", diff --git a/flake.nix b/flake.nix index fe2fefa..2367a0e 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,8 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprland.inputs.nixpkgs.follows = "nixpkgs"; + hyprland-plugins.url = "github:hyprwm/hyprland-plugins"; + hyprland-plugins.inputs.hyprland.follows = "hyprland"; hypr-contrib.url = "github:hyprwm/contrib"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nur.url = "github:nix-community/NUR"; From dd0e95eb8090364b802901adf9ae30f276edfe0a Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 18:50:05 +0100 Subject: [PATCH 05/10] feat: adds dock to `unfuck` script --- modules/home/scripts/scripts/unfuck.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/home/scripts/scripts/unfuck.sh b/modules/home/scripts/scripts/unfuck.sh index 480bd72..b5c805b 100644 --- a/modules/home/scripts/scripts/unfuck.sh +++ b/modules/home/scripts/scripts/unfuck.sh @@ -36,6 +36,11 @@ unfuck_bar() { setsid waybar & } +unfuck_dock() { + pkill nwg-dock-hyprland + setsid nwg-dock-hyprland -l top & +} + unfuck_networkmanager() { # sudo modprobe -r iwlwifi # sudo modprobe iwlwifi From 11a489c5daaac0c195e093e3c8a3b3b015886167 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 18:52:39 +0100 Subject: [PATCH 06/10] feat: adds `hyprland-monitor-attached` as that is a dependency for `dock-on-all-monitors` --- modules/home/hyprland/hyprland.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/hyprland/hyprland.nix b/modules/home/hyprland/hyprland.nix index 57ea3cb..75c10ad 100644 --- a/modules/home/hyprland/hyprland.nix +++ b/modules/home/hyprland/hyprland.nix @@ -11,6 +11,7 @@ wayland direnv nwg-dock-hyprland + hyprland-monitor-attached ]; # systemd.user.targets.hyprland-session.Unit.Wants = [ "xdg-desktop-autostart.target" ]; wayland.windowManager.hyprland = { From 2060b91d54bcd87932288c038fdb7e708b13c428 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 18:53:00 +0100 Subject: [PATCH 07/10] fix: make `unfuck` script use `dock-on-all-monitors` --- modules/home/scripts/scripts/unfuck.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/scripts/scripts/unfuck.sh b/modules/home/scripts/scripts/unfuck.sh index b5c805b..f804f14 100644 --- a/modules/home/scripts/scripts/unfuck.sh +++ b/modules/home/scripts/scripts/unfuck.sh @@ -37,8 +37,8 @@ unfuck_bar() { } unfuck_dock() { - pkill nwg-dock-hyprland - setsid nwg-dock-hyprland -l top & + pkill .nwg-dock-hyprl + setsid dock-on-all-monitors & } unfuck_networkmanager() { From 0d5ee75dbad61b367ac6ef20e19099083b37736c Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 18:53:24 +0100 Subject: [PATCH 08/10] feat: write `dock-on-all-monitors` script and install as a package --- modules/home/scripts/scripts.nix | 4 ++++ .../scripts/scripts/dock-on-all-monitors.sh | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100755 modules/home/scripts/scripts/dock-on-all-monitors.sh diff --git a/modules/home/scripts/scripts.nix b/modules/home/scripts/scripts.nix index 4151d79..3ca810e 100644 --- a/modules/home/scripts/scripts.nix +++ b/modules/home/scripts/scripts.nix @@ -12,6 +12,9 @@ let builtins.readFile ./scripts/toggle_oppacity.sh ); ascii = pkgs.writeScriptBin "ascii" (builtins.readFile ./scripts/ascii.sh); + dock-on-all-monitors = pkgs.writeScriptBin "dock-on-all-monitors" ( + builtins.readFile ./scripts/dock-on-all-monitors.sh + ); in { home.packages = with pkgs; [ @@ -25,5 +28,6 @@ in toggle_blur toggle_oppacity ascii + dock-on-all-monitors ]; } diff --git a/modules/home/scripts/scripts/dock-on-all-monitors.sh b/modules/home/scripts/scripts/dock-on-all-monitors.sh new file mode 100755 index 0000000..1a05c31 --- /dev/null +++ b/modules/home/scripts/scripts/dock-on-all-monitors.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set -e +set -x + +last="$(hyprctl monitors | grep Monitor | sed 's/Monitor //g' | awk '{print $3}' | sed 's/)://g' | sed ':a;N;$!ba;s/\n/ /g' | awk '{print $NF}')" + +hyprctl dispatch focusmonitor 0 +setsid nwg-dock-hyprland -m -l top & + +sleep 0.5 + +((last = last + 1)) # make number be one higher so it also takes last window (this is required as we used `i < "$last"`) +for ((i = 0; i < "$last"; i++)); do + hyprctl dispatch focusmonitor "$i" + setsid nwg-dock-hyprland -m -l top -c 'bemenu-run -l 5' & + sleep 0.5 +done From 7458bae46ff13aae009468f7566c31c6206cae2c Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 18:53:33 +0100 Subject: [PATCH 09/10] feat: switch to `orchis` --- roles/gui.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/roles/gui.nix b/roles/gui.nix index 2c5b4fc..9c44843 100644 --- a/roles/gui.nix +++ b/roles/gui.nix @@ -33,12 +33,8 @@ in size = 14; }; theme = { - name = "Juno"; - package = pkgs.juno-theme; # .override { - # colorVariants = [ "dark" ]; - # themeVariants = [ "green" ]; - # tweakVariants = [ "macos" ]; - # }; + name = "Orchis-Purple-Dark-Compact"; + package = pkgs.orchis-theme; }; iconTheme = { name = "Papirus-Dark"; From 76e95a02b7ccc312488f7f31652c2351a6a35bd4 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 16 Dec 2025 18:54:29 +0100 Subject: [PATCH 10/10] feat: configure modules for dock; enable `hypridle` --- modules/home/hyprland/config.nix | 39 ++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/modules/home/hyprland/config.nix b/modules/home/hyprland/config.nix index 073112d..ee91626 100644 --- a/modules/home/hyprland/config.nix +++ b/modules/home/hyprland/config.nix @@ -54,8 +54,41 @@ } ''; + home.file.".cache/nwg-dock-pinned".text = '' + chromium-browser + thunar + ${if (host == "sakura") then "darktable" else ""} + ${if (host == "sakura") then "flstudio" else ""} + ${if (host == "iris") then "steam" else ""} + footclient + qutebrowser + librewolf + anki + virt-manager + Element + signal + spotify + thunderbird + ''; + services.hypridle.enable = true; + home.file.".config/hypr/hypridle.conf".text = '' + general { + lock_cmd = pgrep hyprlock || hyprlock + } + + listener { + timeout = 165 # in seconds + on-timeout = pgrep hyprlock || hyprlock + } + + listener { + timeout = 1800 # in seconds + on-timeout = systemctl suspend; hyprlock + } + ''; + wayland.windowManager.hyprland = { settings = { @@ -88,7 +121,9 @@ "foot --server &" "hyprfloat &" "gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' &" - "nwg-dock-hyprland &" + "nwg-dock-hyprland -l top &" + "nextcloud &" + "hyprland-monitor-attached dock-on-all-monitors dock-on-all-monitors &" ]; input = { @@ -110,7 +145,7 @@ "$mainMod" = "ALT"; layout = "dwindle"; gaps_in = 0; - gaps_out = "0,0,85,0"; + gaps_out = "0,0,68,0"; border_size = 2; "col.active_border" = "rgb(ffffff) rgb(ffffff) 45deg"; "col.inactive_border" = "0x00000000";