aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_local/bin/executable_zellij-inhibit-watcher
blob: 0af20dd3f03dfe4d42a700fce1944848a1018340 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh
# Block until no zellij sessions remain.
#
# Used as the ExecStart payload of zellij-inhibit-suspend.service: the
# service wraps this script with `systemd-inhibit`, so the inhibit lock
# is held for exactly the lifetime of this process. When the last zellij
# session ends, this script exits 0, the service stops, and the lock is
# released.
#
# A user-level `.path` unit re-activates the service whenever the zellij
# socket directory becomes non-empty again, so the lock is automatically
# reacquired on the next `zellij` invocation.
set -eu

poll=${ZELLIJ_INHIBIT_POLL:-15}

while sessions=$(zellij list-sessions --short 2>/dev/null) &&
  [ -n "$sessions" ]; do
  sleep "$poll"
done