Ubuntuデスクトップ13.10には、rootとして実行されるセットアップスクリプトがあります。基本的には必要に応じてコンピューターを構成しますが、dconf
でいくつか設定する必要があります。スクリプトは、Sudo
の通常のユーザーの下のターミナルウィンドウで実行されます。コマンドdconf write /com/canonical/unity/launcher/favorites "['unity://expo-icon', <...>']"
を実行する必要があります。 (さまざまな設定で実行されます。)
ログインユーザーとしてコマンドをテストしましたが、問題なく動作します。ただし、rootとしてログインしていると、Sudo -u bitc dconf write <...>
を実行できません。 error: Could not connect: Connection refused
やunable to create directory '/root/.cache/conf'
のようなエラーが発生します。
スクリプトは、実行する他のタスクのためにrootとして実行する必要がありますが、スクリプトを構成するには、ユーザーだけでなく特定のログインセッションでdconf
を実行する必要があるようです。 dconf
用の個別のスクリプトは必要ありませんが、それは可能です。ログインセッションに接続する方法(またはそのユーザーのdconf
キーを設定する他の方法)はありますか?
(スクリプトはnode.jsを使用してjavascriptで記述されています。)
これを行うだけで十分ですか?
Sudo -u bitc HOME=/home/bitc dconf write <...>
^^^^^^^^^^^^^^^
私は似たようなことをしようとしていました。 SSH経由で接続し、rootとして実行するスクリプトがあります。ユーザーの設定を変更してほしい。これは私にとってはうまくいくようです:
Sudo -u vagrant HOME=/home/vagrant dbus-launch --exit-with-session gsettings set org.freedesktop.ibus.general use-system-keyboard-layout true
このセッションの間、新しいdbusデーモンが生成されるため、これは潜在的に悪いと思いますが、dbus-launchがないと、dbusエラーが発生しました。おそらくこれらはgsettingsに固有のものですが、役立つ場合に備えて言及したいと思います。
Gsettingを設定するPOST-Installスクリプトがあります。 EUIDが0のSudoとしてスクリプトを実行するため、$ RUID(実際のユーザーID)を見つける必要があります。
これが私のアプローチです:
#!/usr/bin/env bash
# Get the Real Username
RUID=$(who | awk 'FNR == 1 {print $1}')
# Translate Real Username to Real User ID
RUSER_UID=$(id -u ${RUID})
# Set gsettings for the Real User
Sudo -u ${RUID} DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUSER_UID}/bus" gsettings set org.gnome.desktop.interface clock-show-date false
exit