web-dev-qa-db-ja.com

XUbuntuの壁紙を変更するコマンド

Google検索を行うと、コマンドが明らかになります

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>

このコマンドを初めて実行すると、チャンネルxfce4-desktopにプロパティ/ backdrop/screen0/monitor0/image-pathが存在しないというメッセージが表示されました。

そこで、このプロパティを作成しました:

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>

しかし、それでも背景は変わりませんでした。

次に、XUbuntuのデスクトップ設定アプリケーションから、通常は背景をspace-03.jpgからspace-04.jpgに変更しました。次に実行します:

$ xfconf-query -c xfce4-desktop -p /backdrop -lv
/backdrop/screen0/image-path                           /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-show                  true
/backdrop/screen0/monitor1/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor1/image-show                  true
/backdrop/screen0/monitorLVDS1/workspace0/color-style  0
/backdrop/screen0/monitorLVDS1/workspace0/image-style  5
/backdrop/screen0/monitorLVDS1/workspace0/last-image   /usr/share/backgrounds/space-04.jpg

ご覧のとおり、プロパティ/backdrop/screen0/monitorLVDS1/workspace0/last-imageが変更されました(!)。

このプロパティを変更すると問題なく動作しますが、問題は、プログラムにそれを実装するための一般的な方法を見つける必要があることです(Wallch)。

Variety(ちなみに非常に素晴らしいプログラムです)でさえ、私のマシンでは正しく動作せず、何もしない/backdrop/screen0/monitor0/image-pathプロパティを変更することを選択します。

1つの方法は、可能なすべてのプロパティを作成し、必要に応じてそれらをすべて同時に変更することです。次の2つの理由により、このソリューションが好きではありません。

  1. 必要になるいくつかのシステムコール
  2. ある時点で、現在の画像のパスを取得する必要があります(フォルダを開いて、パスをコピーし、削除し、プログラムが提供するその他の機能を使用するため)。プログラムで使用できるようにするために、真に設定されたイメージのパスを保持しているプロパティはわかりません。

また、なぜXFCEがそれほど複雑なのか理解していません。 gsettingsのように1つのプロパティで十分ではないのはなぜですか?

13
hytromo

私はそれが仕事をするべきだと思う

次のコードを使用して、接続されたデバイスを取得してカウントします。

connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
activeOutput=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") 
connected=$(echo $connectedOutputs | wc -w)

次に、それらを操作して、image-pathまたはlast-imageの値を設定するかどうかを選択する必要があります

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s  ~/Pictures/1.jpeg
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorLVDS1/workspace0/last-image -n -t string -s  ~/Pictures/1.jpeg

for i in $(xfconf-query -c xfce4-desktop -p /backdrop -l|egrep -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$"); do
    xfconf-query -c xfce4-desktop -p $i -n -t string -s ~/Pictures/2.png  
    xfconf-query -c xfce4-desktop -p $i -s ~/Pictures/2.png

done

1.jpegは、デフォルトで文字列を作成するために必要なファイルであると仮定します。また、2.pngは設定する画像です。 xfce4-desktopが存在することを確認するために最初の行を追加しました。

このスクリプトは私のマシンでテストされ、うまく機能しています。

それが私の友人に役立つことを願っています

編集:ポート名のリストが見つかりました here のように:

出力ポート名

Intelドライバー-UMS

VGA-アナログVGA出力

LVDS-ラップトップパネル

DP1-DisplayPort出力

TV-統合されたTV出力

TMDS-1-最初のDVI SDVO出力

TMDS-2-2番目のDVI SDVO出力

現時点では、SDVOおよびDVO TV出力はドライバーでサポートされていません。

Intelドライバー-KMS

LVDS1-ラップトップパネル

VGA1-アナログVGA出力

DVI1-デジタルビデオ出力

radeonドライバー

VGA-0-アナログVGA出力

LVDS-ラップトップパネル

Sビデオ-統合されたTV出力

DVI-0-DVI出力

詳細情報については こちら

3
kamil