summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xbin/gui-enter40
1 files changed, 40 insertions, 0 deletions
diff --git a/bin/gui-enter b/bin/gui-enter
new file mode 100755
index 0000000..e14bafb
--- /dev/null
+++ b/bin/gui-enter
@@ -0,0 +1,40 @@
+#!/bin/sh
+# this script is based on some assumptions that are made in the context
+# of my gentoo/swaywm setup
+
+set -e
+[ -n "$DEBUG" ] && set -x
+
+usage() {
+	printf "usage: %s USER [ARGS...]" "$(basename "$0")\n"
+	printf "\n"
+	printf "enter the desktop session of USER and run COMMAND.\n"
+	exit 1
+}
+
+case "$1" in
+-h)	usage && exit 0 ;;
+esac
+
+user="${1}"
+[ -z "${user}" ] && usage
+shift
+
+uid=$(id -u "${user}")
+
+marker_bins="
+	oguri
+	kanshi
+	waybar
+	gammastep
+	pipewire
+	swayidle
+"
+pid=
+for bin in ${marker_bins}; do
+	pid=$(cat "/run/user/"${uid}"/"${bin}".pid")
+	kill -0 "${pid}" && break
+done
+
+env=$(grep -zE '^(SWAY|I3|WAYLAND|DBUS|XDG|PATH)' /proc/"${pid}"/environ | tr '\0' ' ' || true)
+exec doas -u "${user}" env ${env} "${@}"