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"; diff --git a/modules/home/hyprland/config.nix b/modules/home/hyprland/config.nix index 500712a..ee91626 100644 --- a/modules/home/hyprland/config.nix +++ b/modules/home/hyprland/config.nix @@ -5,6 +5,90 @@ ... }: { + + 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; + } + ''; + + 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 = { @@ -37,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 = { @@ -51,11 +137,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,68,0"; border_size = 2; "col.active_border" = "rgb(ffffff) rgb(ffffff) 45deg"; "col.inactive_border" = "0x00000000"; @@ -157,11 +247,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 = [ @@ -282,11 +372,6 @@ "$mainMod, mouse:273, resizewindow" ]; - workspace = [ - "w[tv1], gapsout:0, gapsin:0" - "f[1], gapsout:0, gapsin:0" - ]; - # windowrule # windowrule = [ # "float,title:^(float_kitty)$" 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 = { 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 diff --git a/modules/home/scripts/scripts/unfuck.sh b/modules/home/scripts/scripts/unfuck.sh index 480bd72..f804f14 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-hyprl + setsid dock-on-all-monitors & +} + unfuck_networkmanager() { # sudo modprobe -r iwlwifi # sudo modprobe iwlwifi 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";