La clé est de définir le DBUS_SESSION_BUS_ADDRESS
variable d'environnement.
Sur ce fil J'ai trouvé le script suivant, qui aide à obtenir la valeur correcte de cette variable. Il nécessite le nom du processus, qui est en cours d'exécution sur le bureau, sur lequel nous voulons changer les paramètres du dbus. (Il peut y avoir plus d'une session graphique en cours d'exécution en parallèle). Appelons-le 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
Avec ce script nous pouvons faire ce qui suit, en supposant que unity
est en cours d'exécution sur le bureau, sur lequel nous voulons appliquer nos paramètres :
. ./discover_session_bus_address.sh unity
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
Et les choses devraient fonctionner correctement.