web-dev-qa-db-ja.com

リモートシェルを介してGset​​tingsを変更するには?

Puppet、仮想端末、またはsshを使用してデスクトップ構成を自動化する必要があります。

残念ながら、sshまたは仮想端末経由でgsettingsを呼び出すと、次の結果が得られます。

gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"

(process:29520): dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY

$DISPLAYexport DISPLAY=:0.0を設定すると、別のエラーが発生します。

(process:29862): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refused

私に何ができる?

23
Adam Ryczkowski

重要なのは、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"

そして、物事はうまくいくはずです。

23
Adam Ryczkowski

プロビジョニング中にSSH経由でvagrantイメージのgsettingsを変更しようとしたときに、同じ問題が発生していました。

この解決策 https://askubuntu.com/a/32677 は、アクティブな接続と環境のなりすましのためのすべての釣りなしで私のためにトリックをしました。 YMMV ...

4
JELaVallee