From 80c395fc14832277e2689507381d5cadbd91ccf8 Mon Sep 17 00:00:00 2001 From: nevaforget Date: Tue, 7 Apr 2026 11:27:49 +0200 Subject: [PATCH] feat: add cliphist service, move user services to /etc/systemd/user/ - Add cliphist.service that wipes clipboard history on session start (crash-safe: cleans up at next boot, not at shutdown) - Move kanshi, walker, nautilus services from ~/.config/systemd/user/ to /etc/systemd/user/ (system-level defaults, consistent with moonarch's config philosophy) - Remove cliphist spawn-sh-at-startup from niri config (managed by systemd service now) - Add cliphist to USER_SERVICES in post-install.sh and transform.sh Closes #1 --- defaults/etc/systemd/user/cliphist.service | 16 ++++++++++++++++ .../{user => etc}/systemd/user/kanshi.service | 0 .../{user => etc}/systemd/user/nautilus.service | 0 .../{user => etc}/systemd/user/walker.service | 0 defaults/xdg/niri/config.kdl | 3 +-- scripts/post-install.sh | 1 + scripts/transform.sh | 1 + 7 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 defaults/etc/systemd/user/cliphist.service rename defaults/{user => etc}/systemd/user/kanshi.service (100%) rename defaults/{user => etc}/systemd/user/nautilus.service (100%) rename defaults/{user => etc}/systemd/user/walker.service (100%) diff --git a/defaults/etc/systemd/user/cliphist.service b/defaults/etc/systemd/user/cliphist.service new file mode 100644 index 0000000..a842aa3 --- /dev/null +++ b/defaults/etc/systemd/user/cliphist.service @@ -0,0 +1,16 @@ +# ABOUTME: systemd user service for clipboard history (cliphist + wl-paste). +# ABOUTME: Stores text and image clipboard entries, wipes history on session end. + +[Unit] +Description=Clipboard history manager +PartOf=graphical-session.target +After=graphical-session.target + +[Service] +Type=forking +ExecStartPre=/usr/bin/cliphist wipe +ExecStart=/bin/sh -c 'mkdir -p $XDG_RUNTIME_DIR/cliphist && wl-paste --watch cliphist -db-path $XDG_RUNTIME_DIR/cliphist/db store & wl-paste --type image --watch cliphist -db-path $XDG_RUNTIME_DIR/cliphist/db store &' +RemainAfterExit=yes + +[Install] +WantedBy=graphical-session.target diff --git a/defaults/user/systemd/user/kanshi.service b/defaults/etc/systemd/user/kanshi.service similarity index 100% rename from defaults/user/systemd/user/kanshi.service rename to defaults/etc/systemd/user/kanshi.service diff --git a/defaults/user/systemd/user/nautilus.service b/defaults/etc/systemd/user/nautilus.service similarity index 100% rename from defaults/user/systemd/user/nautilus.service rename to defaults/etc/systemd/user/nautilus.service diff --git a/defaults/user/systemd/user/walker.service b/defaults/etc/systemd/user/walker.service similarity index 100% rename from defaults/user/systemd/user/walker.service rename to defaults/etc/systemd/user/walker.service diff --git a/defaults/xdg/niri/config.kdl b/defaults/xdg/niri/config.kdl index ca32a7d..022062e 100644 --- a/defaults/xdg/niri/config.kdl +++ b/defaults/xdg/niri/config.kdl @@ -85,8 +85,7 @@ spawn-at-startup "nm-applet" "--indicator" spawn-sh-at-startup "waypaper --restore" // spawn-sh-at-startup "nemo . &> /dev/null &" spawn-sh-at-startup "foot --server" -spawn-sh-at-startup "mkdir -p $XDG_RUNTIME_DIR/cliphist && wl-paste --watch cliphist -db-path $XDG_RUNTIME_DIR/cliphist/db store" -spawn-sh-at-startup "mkdir -p $XDG_RUNTIME_DIR/cliphist && wl-paste --type image --watch cliphist -db-path $XDG_RUNTIME_DIR/cliphist/db store" +// Clipboard history managed by cliphist.service (systemd user service) hotkey-overlay { hide-not-bound diff --git a/scripts/post-install.sh b/scripts/post-install.sh index 5cb9264..d9b23ff 100755 --- a/scripts/post-install.sh +++ b/scripts/post-install.sh @@ -151,6 +151,7 @@ log "Enabling systemd user services..." USER_SERVICES=( "kanshi" "stasis" + "cliphist" ) for service in "${USER_SERVICES[@]}"; do diff --git a/scripts/transform.sh b/scripts/transform.sh index 5232c02..4dbf06a 100755 --- a/scripts/transform.sh +++ b/scripts/transform.sh @@ -344,6 +344,7 @@ log "Enabling systemd user services..." USER_SERVICES=( "kanshi" "stasis" + "cliphist" ) for service in "${USER_SERVICES[@]}"; do