(Xubuntu)コマンドラインを使用して壁紙を設定する方法


11

私は多くのグーグルをしましたが、私の問題の解決策を見つけることができませんでした。

私は教師で、学生のコンピューターでXubuntuを使用しています。すべてがうまくロックされていますが、キオスクモードでマシン全体を外に出さずに、ユーザーが壁紙を変更できないように制限する方法はわかりません。作業中に変更しても構いませんが、再起動時に元の.pngにリセットするcrontabを作成したいと思います。

単純なcronエントリを望んでいますが、それが必要な場合はシェルスクリプトの世界に気軽に進んでください。

何か案は?

回答:


10

Xfceの土地では、それは

xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg

(もちろん、必要なファイルパスに置き換えてください。)

xfconf-query --channel xfce4-desktop --list

screen0 / monitor0が1つではない場合、関連するすべてのプロパティをリストします。


コマンドラインでそれを実行すると、チャームのように機能します。cronに追加しようとしても、何もしません。何か案は?`
ジョン

全体をシェルスクリプトで囲み、cron代わりにシェルスクリプトを実行してみませんか?
チェスター

シェルスクリプトを作成し、実行可能にしました。ダブルクリックすると実行され、コマンドラインで実行できます。@rebootを時間としてcronに追加しようとしましたが、機能していないようです。スクリプトへのパス以外のものをcronに追加する必要がありますか?
ジョン

@John cronでは機能しません。これは、cronがroot権限の下で機能するためであり、これはユーザー固有の背景です。あなたのユーザーとして実行するコマンドを変更してみてください
カミル

1
私のために--property /backdrop/screen0/monitorLVDS1/workspace0/last-image、トリックをしました。
イルマリカロネン

9

Xubuntu 14.04のxfce4の場合、/ backdrop / screen0 / monitor0 / image-pathの代わりにプロパティ/ backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-imageを使用します。

また、DBUS_SESSION_BUS_ADDRESS環境変数を次のように設定する必要があります。

PID=$(pgrep xfce4-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

私の場合、壁紙(選択したフォルダーからのランダムな画像)を1日に1回回転させたいのですが、PCの電源を不規則にオンにしたので、30分ごとにcronからスクリプトを実行して解決しましたが、有効になるのは1回だけです一日。

crontabのエントリ(crontab -eコマンドで追加):

0,30 * * * * /home/lucifer/scripts/rotate-wallpaper.sh

rotate-wallpaper.sh:

#!/bin/bash
wallpaperdir="/home/lucifer/Pictures/wallpapers"
datefile="/home/lucifer/.wallsw"
thisday=$( date +%j )
wallfiles=($wallpaperdir/*)
randompic=`printf "%s\n" "${wallfiles[RANDOM % ${#wallfiles[@]}]}"`
PID=$(pgrep xfce4-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

if [ -f "$datefile" ]
then
    lastday=$( cat "$datefile" )
    if [ "$lastday" != "$thisday" ]
    then    
        date +%j > "$datefile"
        xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic 
    fi
else
    date +%j > "$datefile"
    xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic
fi

注:-英語以外のシステムロケールを使用している場合、プロパティに別の名前を付けることができます。プロパティ名を見つけ、ターミナルウィンドウを開き、次のコマンドを実行する最良の方法:

xfconf-query -c xfce4-desktop -m

これにより、xfce4-desktopプロパティの監視が有効になります。次に、背景を手動で変更します。この変更の影響を受けたプロパティ名がターミナルウィンドウに表示されます。/ backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-imageと異なる場合は、このプロパティ名を使用します


2

image-path私のシステムでは設定は効果がありません(XFCE 4.12、Debian buster / sid)。

すべてのワークスペースの背景画像を設定するには、次を使用します。

xfconf-query --channel xfce4-desktop --list | grep last-image | while read path; do
    xfconf-query --channel xfce4-desktop --property $path --set <path>
done

0

試してみる

gsettings set org.gnome.desktop.background picture-uri file:///your/picture/location.jpg

file://必要とされます。


運もなく試してみました。XFCEを実行しているので、gsettingsもありますか?コマンドの構文は理にかなっていますが、Xubuntuに適用する方法がわかりません。
ジョン

0

cronを使用しないでください。代わりに、起動スクリプトを使用してください。cronを使用できますが、ユーザー固有であるため、このような状況ではcronの使用は好ましくありません。

次のようにしてください:

sudo vi /etc/rc.local

ファイルの最後に以下を追加します

sudo -u YOURUSERNAME -g $( id -g YOURUSERNAME ) xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg

YOURUSERNAMEを現在のユーザーに置き換えてください。/usr/share/backgrounds/xfce/xfce-blue.jpgを新しい背景画像の実際のパスに置き換え、ユーザーに画像の読み取り権限があることを確認します


1
なぜこれがダウン投票されたのですか?OPは、再起動時に影響する方法を要求しました。おそらく、OPはそれを複数のユーザーに適用する必要がありますが、明示的には述べていません。この答えは大丈夫のようです(ただし、テストしていません)。それでは、なぜ下票ですか?
ステファンゴーリチョン

0

bashスクリプトでxfceの背景色を設定するには:

d=0; r=$d; g=$d; b=$d; \
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/color1 \
-s $r -s $g -s $b -s 65535

色:

black: d=0;
white: d=65535;
red:   r=65535; g=0; b=0;

rgbは16ビットの10進数RGBコンポーネントです。

65535 = 255 * 257。255 = 0xFF(16進数)。

8ビットの16進カラーコードから16ビットの10進RGBコンポーネントに変換するには:

x='C31717' # dark red
r=$((16#${x:0:2} * 257))
g=$((16#${x:2:2} * 257))
b=$((16#${x:4:2} * 257))

背景色が変わらない場合は、画像スタイルをなしに設定します

xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/image-style \
-s 0

....および塗りつぶしスタイルをソリッドに設定

xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/color-style \
-s 0

ワークスペースごとに異なる色を設定するには:

xfconf-query -c xfce4-desktop \
-p /backdrop/single-workspace-mode \
-s false

i=1; # workspace id
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/image-style \
-s 0
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/color-style \
-s 0
x=0; r=$x; g=$x; b=$x; \
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/color1 \
-s $r -s $g -s $b -s 65535

ナフは言った^^

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.