Ключ - встановити DBUS_SESSION_BUS_ADDRESS
змінну середовища.
У цій темі я знайшов наступний скрипт, який допомагає отримати правильне значення цієї змінної. Для цього потрібна назва процесу, що працює на робочому столі, на якому ми хочемо змінити параметри dbus. (Паралельно може бути більше 1 запущених графічних сесій). Давайте назвемо цеdiscover_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
За допомогою цього сценарію ми можемо зробити наступне, припускаючи, що unity
процес працює на робочому столі, на якому ми хочемо застосувати наші налаштування:
. ./discover_session_bus_address.sh unity
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
І все має працювати добре.
DBUS_SESSION_BUS_ADDRESS
, але іXDG_RUNTIME_DIR
.