mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 15:39:58 +00:00
40 lines
1.1 KiB
Bash
40 lines
1.1 KiB
Bash
# Validate DBUS_SESSION_BUS_ADDRESS: a stale value (e.g. inherited from a
|
|
# dead X session) makes secret-tool, mbsync, msmtp fail with
|
|
# "Could not connect: No such file or directory".
|
|
# Fall back to ~/.dbus-session-bus-address (written by .xinitrc) or
|
|
# /run/user/$UID/bus, mirroring scripts/bootstrap_mail.sh.
|
|
|
|
_dbus_addr_socket_path() {
|
|
printf '%s' "${1#unix:path=}" | sed 's/,.*//'
|
|
}
|
|
|
|
_dbus_addr_is_live() {
|
|
case "$1" in
|
|
unix:path=*)
|
|
[ -S "$(_dbus_addr_socket_path "$1")" ]
|
|
;;
|
|
unix:abstract=*)
|
|
return 0
|
|
;;
|
|
*)
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
if ! _dbus_addr_is_live "${DBUS_SESSION_BUS_ADDRESS:-}"; then
|
|
unset DBUS_SESSION_BUS_ADDRESS
|
|
if [ -f "$HOME/.dbus-session-bus-address" ]; then
|
|
_saved=$(tr -d '\n' <"$HOME/.dbus-session-bus-address" 2>/dev/null)
|
|
if [ -n "$_saved" ] && _dbus_addr_is_live "$_saved"; then
|
|
export DBUS_SESSION_BUS_ADDRESS="$_saved"
|
|
fi
|
|
unset _saved
|
|
fi
|
|
if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ] && [ -S "/run/user/$(id -u)/bus" ]; then
|
|
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"
|
|
fi
|
|
fi
|
|
|
|
unset -f _dbus_addr_socket_path _dbus_addr_is_live
|