
正確な画像を壁紙に設定するスクリプトがあり、実行されるたびにまだ同じ画像であることを確認したいと思います。そうでない場合は、壁紙をその画像に戻すかどうかを尋ねるメッセージが表示されます。これは大きなプロジェクトの一部であり、現在次のように動作します。
- スクリプトは、ユーザーディレクトリに.config.txtファイルがあるかどうかを検出します。
- それ以外の場合は、背景を変更するかどうかを尋ねるメッセージが表示されます。
- この処理中に .config.txt が生成されます。
私はこの質問に対する答えを見つけるためにインターネットを検索しました。残念ながら、ほとんどのトピックはUbuntuに関連しており、まったく役に立ちません。 「背景を探す」コマンドを試しましたが、正当な項目は何も見えません。そして、マブソサ、リストされているほとんどのディレクトリを検索しました。 .cacheでも検索しましたが、まだ何も見つかりませんでした。
答え1
Stock Kaliの壁紙画像は、次の場所に保存されます。
/usr/share/images/desktop-base/
現在の壁紙は、/etc/alternatives/desktop-background
必要な他の.pngファイルに接続して設定されます。/usr/share/images/desktop-base/
選択した他のフォルダの.pngファイルに接続することもできます。
答え2
ファイルを設定できる場合
gsettings set org.gnome.desktop.background picture-uri file:///path/to/the/file
それではあなたはできます。得るこのファイルは以下に関連しています。
gsettings get org.gnome.desktop.background picture-uri
これにより、同様の文字列が提供されます'file:///usr/share/images/desktop-base/desktop-background.xml'
。大丈夫ですが、他のシェルコマンドの引数として直接使用するには、まず解析する必要があります。したがって、引用符とfile://
部分を簡単に削除できますcut
。たとえば、次のようになります。
gsettings get org.gnome.desktop.background picture-uri | cut -d/ -f3- | cut -d\' -f1
(注:返されたファイルは実際に私にXMLファイルですが、私はGNOMEを使用していないので、これが実際のシステムでどのように機能するかわかりません。比較を開始する前にここで実行する必要がある別の処理ステップがあるかもしれません。ドキュメント。 )
比較するファイルの名前が既にわかっているので、次のようにcmp
2つのファイルを比較できます。
cmp my/file.jpg "$(gsettings get org.gnome.desktop.background picture-uri | cut -d/ -f3- | cut -d\' -f1)"
cmp
0
ファイルが同じ場合は戻り値(true)を設定し、ファイルが異なる場合、または問題がある場合はゼロ以外の値(false)を設定します。これを使用して、次に何をすべきかを決定できます。おそらく、||
前のコマンドがゼロ以外の値(false)を返す場合にのみ、コマンドを実行する演算子を使用できます。cmp
スイッチを介して出力を抑制することもできます-s
。これにより、通常のクローンジョブとして実行できる次のコマンドが提供されます。たとえば、次のようになります。
cmp -s my/file.jpg "$(gsettings get org.gnome.desktop.background picture-uri | cut -d/ -f3- | cut -d\' -f1)" || gsettings set org.gnome.desktop.background picture-uri file:///full/path/to/my/file.jpg