핵심은 DBUS_SESSION_BUS_ADDRESS
환경 변수 를 설정하는 것입니다.
에 이 스레드 그 변수의 정확한 값을 얻을하는 데 도움이 다음과 같은 스크립트를 발견했다. dbus 설정을 변경하려는 데스크탑에서 실행중인 프로세스 이름이 필요합니다. (병렬로 실행중인 그래픽 세션이 둘 이상있을 수 있습니다). 전화합시다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
.