ホームページ  >  記事  >  バックエンド開発  >  Go を使用して X11/Wayland の複数の画面に背景画像を追加するにはどうすればよいですか?

Go を使用して X11/Wayland の複数の画面に背景画像を追加するにはどうすればよいですか?

王林
王林転載
2024-02-13 08:54:09741ブラウズ

如何使用 Go 将背景图像添加到 X11/Wayland 的多个屏幕?

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 つのメモ:

ここ
    feh
  • すべての画面の壁紙をまったく同じ画像に設定します したがって、異なる画像を使用することは直接サポートされていません
  • さらに、wallutils の Readme には次のように明確に記載されています。

各モニターの壁紙を設定します

モニターごとの壁紙の設定はまだサポートされていません。現在、すべてのモニターに壁紙が設定されています。

参照

https://github.com/xyproto/wallutils#各ディスプレイの壁紙の設定

######可能な解決策###### ディスプレイと解像度を決定できるため、feh

を使用して、事前定義された画像を背景画像として適切な画面に正しい順序で送信することに重点を置きます。

feh

自体は、ディスプレイごとに異なる壁紙の設定をサポートしています。異なる解像度の異なる画像を使用して

feh を呼び出すだけです。この順序は、xrandr --listmonitors

の呼び出しによって決定された順序と同じであることが保証されます。

順序が決定され、与えられたものとして解釈されると、最も単純な go プログラムは次のようになります (wallutil のユーティリティ関数 Run も参照): リーリー (fluxbox

ウィンドウ マネージャーを使用してテスト)

これは、feh

が適切なウィンドウ マネージャーで使用され、go ディレクトリに 2 つの準備されたイメージがある場合の最も単純なケースです。もちろん、プログラムで画面を決定し、

feh 呼び出しを動的に調整することもできます。

feh

はすべての環境で動作するとは限らないため、wallutils は多くのウィンドウ マネージャー環境 (cinnamon、deepin、gnome、mate、pekwm、plasma、sway、weston、xfce4) 用に wm を提供します インターフェイスの特定の実装。これはもちろんとてもクールです。ただし、wallutils の mr を作成したい場合は、おそらくすべてのバリアント (少なくともそれをサポートするバリアント) で作成する必要があります。

以上がGo を使用して X11/Wayland の複数の画面に背景画像を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。