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


15

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

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

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

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

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つのプロパティで十分ではないのはなぜですか?



試してみました、xfconf-query -c xfce4-desktop -p / backdrop / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpgは私のために機能します。以前の私の背景画像-設定はユーザー固有であるため、root権限なしでそれを行うように注意してください。
ウルフギャング

1
@hakermania-#9のこのスクリプトのようなものかもしれません-これにより、処理の進め方に関するアイデアが得られますか(または、少なくとも正しいモニターを識別できますか)。bugs.launchpad.net/variety/+bug/1064825
fossfreedom


@fossfreedomは、以下の回答で私が与えた答えを参照してください。
hytromo

回答:


4

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

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

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が存在することを確認するために、最初の行を追加しました。

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

私の友人を助けることを願っています

編集:ポート名のリストは次のようにここに見つかりまし

出力ポート名

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出力

詳細についてはこちらをご覧ください


なぜそれが仕事をするのですか?
セス

@Seth使用可能なすべてのモニターをループしており、見つかったモニターに適切な値を設定するためです。最後の画像又は画像のパスのどちらか
カミル

新しくインストールされたXFCEシステムでは、値は存在しません。デスクトップの背景を手動で変更すると、それらが作成されます。だから、これは私の意見では良い解決策ではありません。この回答を質問に含めます。私はそれらをすべて試すことができると明確に言います(毎回作成して変更します)が、これは問題の良い解決策とはほど遠いです。
hytromo 14

あなたがやったようにあなたは、プロパティを作成することができます
カミル

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