...
This commit is contained in:
1 parent
e44a2310b2
commit
b054309708
10 files changed
-26
No files matched your search
@@ -1765,76 +1765,58 @@ in
|
||||
** Workspace Wallpaper
|
||||
#+begin_src nix :tangle home/desktop/workspace_wallpaper.nix :noweb tangle :mkdirp yes
|
||||
{ config, lib, pkgs, flakeRoot, ... }:
|
||||
|
||||
let
|
||||
repoWallpaperDir = flakeRoot + "/assets/conf/desktop/wallpaper";
|
||||
|
||||
userRelRoot = "nixos_conf/wallpaperstuff";
|
||||
userAbsRoot = "${config.home.homeDirectory}/${userRelRoot}";
|
||||
picturesDir = "${userAbsRoot}/pictures";
|
||||
|
||||
repoWallpapersOnly = lib.cleanSourceWith {
|
||||
src = repoWallpaperDir;
|
||||
filter = path: type: true;
|
||||
};
|
||||
|
||||
wsScriptRel = "hypr/scripts/hyprpaper-workspace-1to9.sh";
|
||||
in
|
||||
{
|
||||
home.packages = [ pkgs.hyprpaper pkgs.socat pkgs.jq ];
|
||||
|
||||
home.file."${userRelRoot}" = {
|
||||
source = repoWallpapersOnly;
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
xdg.configFile."hypr/hyprpaper.conf".text = ''
|
||||
ipc = true
|
||||
splash = false
|
||||
'';
|
||||
|
||||
xdg.configFile."${wsScriptRel}" = {
|
||||
executable = true;
|
||||
text = ''
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
: "''${XDG_RUNTIME_DIR:?XDG_RUNTIME_DIR not set}"
|
||||
: "''${HYPRLAND_INSTANCE_SIGNATURE:?HYPRLAND_INSTANCE_SIGNATURE not set}"
|
||||
|
||||
SOCK="''${XDG_RUNTIME_DIR}/hypr/''${HYPRLAND_INSTANCE_SIGNATURE}/.socket2.sock"
|
||||
[[ -S "$SOCK" ]] || { echo "Hyprland socket not found: $SOCK" >&2; exit 1; }
|
||||
|
||||
# Allow overriding the pictures dir from argv; default to the Nix-provided one
|
||||
PICTURES_DIR="''${1:-${picturesDir}}"
|
||||
FIT_MODE="fill"
|
||||
|
||||
FOCUSED_MON=""
|
||||
|
||||
pick_wall_for_ws() {
|
||||
local ws="''${1}"
|
||||
local f
|
||||
f="$(ls -1 "''${PICTURES_DIR}/''${ws}."* 2>/dev/null | head -n 1 || true)"
|
||||
echo "''${f}"
|
||||
}
|
||||
|
||||
apply_wallpaper() {
|
||||
local mon="''${1}"
|
||||
local ws="''${2}"
|
||||
|
||||
local file
|
||||
file="$(pick_wall_for_ws "''${ws}")"
|
||||
[[ -n "''${file}" ]] || return 0
|
||||
|
||||
hyprctl hyprpaper wallpaper "''${mon}, ''${file}, ''${FIT_MODE}" >/dev/null
|
||||
}
|
||||
|
||||
FOCUSED_MON="$(hyprctl -j monitors | jq -r '.[] | select(.focused==true) | .name' | head -n 1 || true)"
|
||||
CUR_WS="$(hyprctl -j activeworkspace | jq -r '.name' | head -n 1 || true)"
|
||||
CUR_WS="''${CUR_WS%%:*}"
|
||||
|
||||
[[ -n "''${FOCUSED_MON}" && -n "''${CUR_WS}" ]] && apply_wallpaper "''${FOCUSED_MON}" "''${CUR_WS}"
|
||||
|
||||
handle() {
|
||||
case "''${1}" in
|
||||
focusedmon* )
|
||||
@@ -1849,13 +1831,11 @@ in
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
socat -U - UNIX-CONNECT:"''${SOCK}" | while read -r line; do
|
||||
handle "''${line}" || true
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.user.services.hyprpaper = {
|
||||
Unit = {
|
||||
Description = "hyprpaper wallpaper daemon";
|
||||
@@ -1869,7 +1849,6 @@ in
|
||||
};
|
||||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
||||
};
|
||||
|
||||
systemd.user.services.hyprpaper-workspace-wallpapers = {
|
||||
Unit = {
|
||||
Description = "Hyprpaper workspace wallpapers (socket2 listener)";
|
||||
@@ -1886,8 +1865,6 @@ in
|
||||
}
|
||||
#+end_src
|
||||
|
||||
|
||||
|
||||
** Waybar
|
||||
[[./.github/images/waybar.png]]
|
||||
|
||||
@@ -1899,20 +1876,17 @@ let
|
||||
in
|
||||
{
|
||||
programs.waybar.enable = true;
|
||||
|
||||
# Ensure config matches repo (HM-managed symlink, not user-editable)
|
||||
xdg.configFile."waybar/config" = {
|
||||
source = repoWaybarDir + "/config.jsonc";
|
||||
force = true;
|
||||
};
|
||||
|
||||
# Override HM's internally-generated waybar-style.css derivation
|
||||
# and use your repo file instead.
|
||||
xdg.configFile."waybar/style.css" = {
|
||||
source = lib.mkForce (repoWaybarDir + "/style.css");
|
||||
force = true;
|
||||
};
|
||||
|
||||
# Prevent HM from also trying to generate style content via programs.waybar.style
|
||||
# (not strictly required once mkForce is in place, but keeps intent clear)
|
||||
programs.waybar.style = "";
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Reference in new issue
Block a user