php Xiaobian Banana は、Go 言語を使用して X11/Wayland の複数の画面に背景画像を追加する方法を紹介します。マルチスクリーン環境では、各画面に異なる背景画像を設定すると、ユーザー エクスペリエンスが向上します。この記事では、X11 および Wayland 関連ライブラリを使用してこの関数を Go 言語で実装する方法を詳しく説明します。 X11 と Wayland のどちらを使用している場合でも、この記事では該当する解決策を提供します。この記事の手順に従えば、マルチスクリーン環境で背景画像を追加する方法を簡単にマスターできます。一緒に探検しましょう!
ウィンドウマネージャー用にGoでカスタム壁紙セッターを作りました。現在、github.com/xyproto/wallutils
プロジェクトを使用していますが、これは feh
に依存しています。
1 つの画面の場合、その寸法を使用して正確なサイズの画像を作成でき、すべてが正常に機能しますが、サイズの異なる複数の画面がコンピュータに接続されている場合、この方法は機能しません。
正確な画像を得るために、feh の「fill」オプションを使用しましたが、これはモニターの 1 つでのみ機能します。
私がやりたいのは、各画面に正しいサイズの画像を作成し、それらを背景画像として X11 または Wayland の対応する画面に送信することです。 Go でこれを実現するにはどうすればよいでしょうか?
要件:
feh
ムロとwallutils
wallutils
setwallpaper
メソッドなどを提供する wm
インターフェイスを指定します。さまざまなウィンドウ マネージャー用にこのインターフェイスが実装されています。
go パッケージ muro
は、wallutils
を使用します。 withanywindowmanager
フラグに基づいて、wallutils の setwallpapercustom
メソッドを使用します。このメソッドは、検出されたウィンドウ マネージャーに基づいて特定の setwallpaper
実装を選択するか、## を直接呼び出します。 #feh
setwallpaper のバリアント。
wallutils と feh
正確な表示モードは呼び出し方法によって異なりますが、wallutils feh.go のsetwallpaper は、基本的にあなたの場合、次のように
feh を呼び出します。
リーリー
2 つのメモ:
ここ
したがって、異なる画像を使用することは直接サポートされていません各モニターの壁紙を設定します
モニターごとの壁紙の設定はまだサポートされていません。現在、すべてのモニターに壁紙が設定されています。
参照https://github.com/xyproto/wallutils#各ディスプレイの壁紙の設定
######可能な解決策###### ディスプレイと解像度を決定できるため、feh
を使用して、事前定義された画像を背景画像として適切な画面に正しい順序で送信することに重点を置きます。feh
自体は、ディスプレイごとに異なる壁紙の設定をサポートしています。異なる解像度の異なる画像を使用してfeh を呼び出すだけです。この順序は、
xrandr --listmonitors
順序が決定され、与えられたものとして解釈されると、最も単純な go プログラムは次のようになります (wallutil のユーティリティ関数
Run も参照):
リーリー
(
fluxbox
これは、feh
が適切なウィンドウ マネージャーで使用され、go ディレクトリに 2 つの準備されたイメージがある場合の最も単純なケースです。もちろん、プログラムで画面を決定し、feh 呼び出しを動的に調整することもできます。
はすべての環境で動作するとは限らないため、wallutils は多くのウィンドウ マネージャー環境 (cinnamon、deepin、gnome、mate、pekwm、plasma、sway、weston、xfce4) 用に wm を提供します
インターフェイスの特定の実装。これはもちろんとてもクールです。ただし、wallutils の mr を作成したい場合は、おそらくすべてのバリアント (少なくともそれをサポートするバリアント) で作成する必要があります。
以上がGo を使用して X11/Wayland の複数の画面に背景画像を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。