Kuncinya adalah mengatur DBUS_SESSION_BUS_ADDRESS
variabel lingkungan.
Di utas ini saya menemukan skrip berikut, yang membantu untuk mendapatkan nilai yang benar dari variabel itu. Itu membutuhkan nama proses, yang berjalan di desktop, di mana kami ingin mengubah pengaturan dbus. (Bisa ada lebih dari 1 sesi grafik berjalan secara paralel). Mari kita sebut sajadiscover_session_bus_address.sh
#!/bin/bash
# Remember to run this script using the command "source ./filename.sh"
# Search these processes for the session variable
# (they are run as the current user and have the DBUS session variable set)
compatiblePrograms=( nautilus kdeinit kded4 pulseaudio trackerd )
# Attempt to get a program pid
for index in ${compatiblePrograms[@]}; do
PID=$(pidof -s ${index})
if [[ "${PID}" != "" ]]; then
break
fi
done
if [[ "${PID}" == "" ]]; then
echo "Could not detect active login session"
return 1
fi
QUERY_ENVIRON="$(tr '\0' '\n' < /proc/${PID}/environ | grep "DBUS_SESSION_BUS_ADDRESS" | cut -d "=" -f 2-)"
if [[ "${QUERY_ENVIRON}" != "" ]]; then
export DBUS_SESSION_BUS_ADDRESS="${QUERY_ENVIRON}"
echo "Connected to session:"
echo "DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS}"
else
echo "Could not find dbus session ID in user environment."
return 1
fi
return 0
Dengan skrip ini kita dapat melakukan hal berikut, dengan asumsi unity
proses sedang berjalan di desktop, di mana kita ingin menerapkan pengaturan kita:
. ./discover_session_bus_address.sh unity
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
Dan semuanya akan beres.
DBUS_SESSION_BUS_ADDRESS
, tetapi jugaXDG_RUNTIME_DIR
.