diff options
| author | Robert Günzler <r@gnzler.io> | 2021-04-22 13:25:55 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2021-04-26 02:09:49 +0200 |
| commit | eee42329290cf5892e53090538f402f6793de062 (patch) | |
| tree | d9036a0a43bab8e9d351bc2485bfb809b265fb72 | |
| parent | 88fc1db9a46b627f4715485351eca810fd274c8d (diff) | |
Add bin/gui-enter; allows spawning a process into my sway session
probably doesn't work outside my setup
| -rwxr-xr-x | bin/gui-enter | 40 |
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} "${@}" |