summary refs log tree commit diff
path: root/bin
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2020-06-17 18:35:28 +0200
committerRobert Günzler <r@gnzler.io>2020-06-17 18:35:28 +0200
commitfb2252a396baccb77cdf7538e57f74d0292396fa (patch)
treecf88659df0cc99466f06fb283a3d504a7adcf90f /bin
parent7e9cccf2b1286b3444ff0e530289ba102b959d7a (diff)
bin/sway-run: add option to run in dbus-session
Diffstat (limited to 'bin')
-rwxr-xr-xbin/sway-run62
1 files changed, 30 insertions, 32 deletions
diff --git a/bin/sway-run b/bin/sway-run
index be60ae4..5e0bd1d 100755
--- a/bin/sway-run
+++ b/bin/sway-run
@@ -1,47 +1,45 @@
 #!/bin/sh
+set -e
 
-set -ex
+SWAY_BIN=${SWAY_BIN:-/usr/bin/sway}
+SWAY_ARGS=${SWAY_ARGS:-}
+SWAY_USER=${SWAY_USER:-robert}
+sway_user_id=$(id -u "${SWAY_USER}")
+SWAY_TTY=${SWAY_TTY:-7}
+MANUAL=
 
-if [ "$XDG_RUNTIME_DIR" == "" ]; then
-    export XDG_RUNTIME_DIR=/tmp
-fi
-
-LOCKED=0
-SWAY_BIN=/usr/bin/sway
-SWAY_ARGS=
+export XDG_RUNTIME_DIR=/run/user/"${sway_user_id}"
+source /home/"${SWAY_USER}"/.config/sway/env
 
-while getopts ":dcDL" o; do
+while getopts ":dcDmh" o; do
     case $o in
         d) SWAY_ARGS="$SWAY_ARGS --debug" ;;
         D)
             export XDG_RUNTIME_DIR=/tmp/sway-run-debug
-            [ ! -d "$XDG_RUNTIME_DIR" ] && mkdir -p "$XDG_RUNTIME_DIR"
+            [ ! -d "${XDG_RUNTIME_DIR}" ] && mkdir "${XDG_RUNTIME_DIR}" && chmod 700 "${XDG_RUNTIME_DIR}"
             ;;
-        c) SWAY_ARGS="$SWAY_ARGS --config $XDG_CONFIG_HOME/sway/simple.conf" ;;
-        L) LOCKED=1 ;;
+        c) SWAY_ARGS="${SWAY_ARGS} --config /home/${SWAY_USER}/.config/sway/simple.conf --debug" ;;
+        m) MANUAL=1 ;;
+        h) echo "usage: $0 [-dcDLh]"; exit 0 ;;
         *) echo "unknown flag: $o" 1>&2
     esac
 done
 shift $((OPTIND-1))
 
-if [ $LOCKED -eq 1 ]; then
-    sh -c 'sleep 1; $HOME/.dotfiles/bin/lock' & disown
-    exec "$0" $@
+ts="$(date -u --rfc-3339=seconds | tr ' ' 'T')"
+log=/var/log/sway/${ts}.log
+
+if [ -n "${MANUAL}" ]; then
+    cat <<EOF | doas sh -s
+# prepare tty
+chown "$SWAY_USER" "/dev/tty${SWAY_TTY}"
+chmod 600 "/dev/tty${SWAY_TTY}"
+# launch sway on new tty
+su --preserve-environment --login --command \
+    "openvt --switch --console ${SWAY_TTY} -- dbus-run-session ${SWAY_BIN} -Ddamage=rerender ${SWAY_ARGS} 1>&2 2>${log}" \
+    "${SWAY_USER}"
+EOF
+else
+    exec dbus-run-session "${SWAY_BIN}" -Ddamage=rerender ${SWAY_ARGS} $@ 1>&2 2>"${log}"
+    # exec "${SWAY_BIN}" -Ddamage=rerender ${SWAY_ARGS} $@ 1>&2 2>"${log}"
 fi
-
-case $1 in
-    locked)     shift; exec $0 -L ;;
-    git)        shift; 
-        SWAY_SRC="$HOME/devel/upstream/github.com/swaywm/sway"
-        SWAY_BIN="$SWAY_SRC/build/sway/sway";
-        export PATH="$SWAY_SRC/build/sway:$PATH"
-        export LD_LIBRARY_PATH="$SWAY_SRC/build/subprojects/wlroots:$LD_LIBRARY_PATH"
-        ;;
-    system)     shift; exec $0 ;;
-    clean)      shift; exec $0 -c ;;
-esac
-
-TS="$(date -u --rfc-3339=seconds | tr ' ' 'T')"
-LOG=/var/log/sway/"$TS".log
-
-exec $SWAY_BIN -Ddamage=rerender $SWAY_ARGS $@ 1>&2 2>"$LOG"