#!/bin/bash # This script ensures the dbus-daemon is killed when the session closes. # It's used by SSH sessions that have X forwarding (since the X display # may outlive the session in those cases) [ $# != 1 ] && exit 1 exec >& /dev/null MONITOR_READY_FILE=$(mktemp dbus-session-monitor.XXXXXX --tmpdir) trap 'rm -f "${MONITOR_READY_FILE}"; kill -TERM $1; kill -HUP $(jobs -p)' EXIT export GVFS_DISABLE_FUSE=1 coproc SESSION_MONITOR (gio monitor -f "/run/systemd/sessions/${XDG_SESSION_ID}" "${MONITOR_READY_FILE}") # Poll until the gio monitor command is actively monitoring until touch "${MONITOR_READY_FILE}" read -t 0.5 -u ${SESSION_MONITOR[0]} do continue done # Block until the session is closed while grep -q ^State=active <(loginctl show-session $XDG_SESSION_ID) do read -u ${SESSION_MONITOR[0]} done