web-dev-qa-db-ja.com

スクリプトのdconfの変更

大学のUbuntuマシン用に、テーマや背景などを設定するためにいくつかのdconfオーバーライドを設定する簡単なスクリプトを作成しました。しかし、ログイン画面の背景を正しく設定するように設定できないようです。

この目的のためのスクリプトのセクション:

#Set login background and remove dots
echo "Setting lightdm dconf settings"
xhost +SI:localuser:lightdm
su lightdm -c "gsettings set com.canonical.unity-greeter background '/background.png'"
su lightdm -c "gsettings set com.canonical.unity-greeter draw-grid false"

これらの同じコマンドは、lightdmユーザーとしてログインしている端末に直接入力した場合に機能します。次に例を示します。

Sudo su lightdm -s /bin/bash
gsettings set com.canonical.unity-greeter background '/background.png'
gsettings set com.canonical.unity-greeter draw-grid false

壁紙をきれいに設定します

コマンドは機能するがスクリプトは機能しない理由について何か考えはありますか?

ありがとう

1
Jake Charman

これが私がそれを解決した方法です。「Sudobash」を実行する代わりに、またはあなたの場合は「Sudo -c」(ユーザーを変更するとスクリプトが一時停止するか、単に機能しない)を実行する代わりに、3つの小さなスクリプトを実行します。

(「chmod + xscript_name.sh」を使用して各スクリプトを実行可能にすることを忘れないでください)

最初のスクリプトは私のinstall.shです:

Sudo cp third_script.sh /tmp         # Copy third_script to tmp for easier access
Sudo chmod 0755 /tmp/third_script.sh # This needs to be executable by lightdm
Sudo bash second_script.sh           # Runs next file
Sudo rm /tmp/third_script.sh         # Now we can remove the third script

次に、second_script.shでlightdmをxhostに追加し、3番目のスクリプトファイルをlightdm-userとして実行します。

#!/bin/bash
echo "$USER"                         # To see if root is running the script
xhost +SI:localuser:lightdm
su lightdm -s /tmp/third_script.sh

そして、third_scriptは魔法が起こる場所です:

#!/bin/bash
echo "$USER"                         # To see if lightdm is running the script
gsettings set com.canonical.unity-greeter background '/background.png'
gsettings set com.canonical.unity-greeter draw-grid false

これは私のために働きます!もっと簡単な方法があれば教えてください。

1
Tuxedo Joe