Điều quan trọng là đặt DBUS_SESSION_BUS_ADDRESS
biến môi trường.
Trong chủ đề này, tôi tìm thấy đoạn script sau, giúp lấy giá trị chính xác của biến đó. Nó yêu cầu tên của quá trình, đang chạy trên máy tính để bàn, trên đó chúng tôi muốn thay đổi cài đặt dbus. (Có thể có nhiều hơn 1 phiên chạy đồ họa song song). Hãy gọi nó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
Với tập lệnh này, chúng tôi có thể thực hiện các thao tác sau, giả sử unity
quy trình đó đang chạy trên máy tính để bàn, trên đó chúng tôi muốn áp dụng các cài đặt của mình:
. ./discover_session_bus_address.sh unity
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
Và mọi thứ sẽ hoạt động tốt.
DBUS_SESSION_BUS_ADDRESS
, mà cònXDG_RUNTIME_DIR
.