Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menambah imej latar belakang pada berbilang skrin dalam X11/Wayland menggunakan Go?
editor php Banana akan memperkenalkan anda cara menggunakan bahasa Go untuk menambah imej latar belakang pada berbilang skrin X11/Wayland. Dalam persekitaran berbilang skrin, menetapkan imej latar belakang yang berbeza untuk setiap skrin boleh meningkatkan pengalaman pengguna. Artikel ini akan menerangkan secara terperinci cara menggunakan perpustakaan berkaitan X11 dan Wayland untuk melaksanakan fungsi ini dalam bahasa Go. Sama ada anda menggunakan X11 atau Wayland, artikel ini akan memberikan anda penyelesaian yang berkenaan. Dengan mengikuti langkah-langkah dalam artikel ini, anda akan belajar dengan mudah cara menambah imej latar belakang dalam persekitaran berbilang skrin. Mari kita meneroka bersama-sama!
Saya membuat penetap kertas dinding tersuai dalam Go for a window manager. Pada masa ini saya menggunakan github.com/xyproto/wallutils
项目,该项目又依赖于feh
.
Untuk satu skrin saya boleh menggunakan dimensinya untuk mencipta imej bersaiz tepat dan semuanya berfungsi dengan baik, tetapi jika terdapat berbilang skrin dengan saiz berbeza yang disambungkan ke komputer kaedah ini tidak berfungsi.
Untuk imej yang tepat, saya menggunakan pilihan "isi" feh, yang hanya berfungsi pada salah satu monitor.
Apa yang saya mahu lakukan ialah mencipta imej bersaiz betul untuk setiap skrin dan menghantarnya sebagai imej latar belakang ke skrin yang sepadan dalam X11 atau Wayland. Bagaimanakah saya boleh mencapai ini dalam Go?
Keperluan:
feh
muro dan wallutils
wallutils
指定 wm
接口,该接口提供 setwallpaper
Kaedah, dsb. Terdapat pelaksanaan antara muka ini untuk banyak pengurus tetingkap yang berbeza.
go pakej muro
menggunakan wallutils
secara bergilir. Berdasarkan bendera withanywindowmanager
, ia akan menggunakan kaedah setwallpapercustom
wallutils, yang memilih pelaksanaan setwallpaper
tertentu berdasarkan pengurus tetingkap yang dikesan, atau terus Panggil muro
依次使用 wallutils
。基于 withanywindowmanager
标志,它将使用 wallutils 的 setwallpapercustom
方法,该方法根据检测到的窗口管理器选择具体的 setwallpaper
实现,或者直接调用 feh
变体的 setwallpaper
varian setwallpaper
.
wallutils dan feh
Mod paparan yang tepat bergantung pada cara ia dipanggil, tetapi setwallpaper
dalam wallutils feh.go pada asasnya akan memanggil setwallpaper
基本上会在您的情况下调用 feh
dalam kes anda, seperti ini:
feh --bg-fill <image file name>
Dua perkara yang perlu diberi perhatian:
feh
Tetapkan kertas dinding pada semua skrin kepada imej yang samaSelain itu, readme wallutils dengan jelas menyatakan:
Tetapkan kertas dinding untuk setiap monitor
Menetapkan kertas dinding untuk setiap monitor belum disokong lagi. Pada masa ini, semua monitor mempunyai kertas dinding yang ditetapkan.
Lihat https://github.com/xyproto/wallutils#Tetapkan kertas dinding untuk setiap monitor
Penyelesaian yang mungkin
Memandangkan anda boleh menentukan paparan dan peleraian, kami menumpukan pada menggunakan feh
untuk menghantar imej yang dipratentukan sebagai imej latar belakang ke skrin yang sepadan dalam susunan yang betul.
feh
本身支持为每个显示器设置不同的壁纸。您只需使用具有不同分辨率的不同图像调用 feh
即可。该顺序保证与调用 xrandr --listmonitors
Secara asli menyokong tetapan kertas dinding berbeza untuk setiap paparan. Anda hanya memanggil
xrandr --listmonitors
. ):
package main import ( "os/exec" ) func main() { args := []string{"--bg-fill", "1.png", "2.png"} cmd := exec.Command("feh", args...) if _, err := cmd.CombinedOutput(); err != nil { panic(err) } }
fluxbox
(diuji menggunakan pengurus tingkap)
feh
与适当的窗口管理器配合使用,并且 go 目录中有两个准备好的图像,这是最简单的情况。当然,也可以通过编程方式确定屏幕并动态调整feh
Ini adalah kes paling mudah jika
. feh
并不适用于所有环境,wallutils 为许多窗口管理器环境(cinnamon、deepin、gnome、mate、pekwm、plasma、sway、weston、xfce4)提供了 wm
wm
untuk banyak persekitaran pengurus tetingkap (kayu manis, deepin, gnome, mate, pekwm, plasma, sway, weston, xfce4) . Ini sudah tentu sangat keren. Walau bagaimanapun, jika anda ingin mencipta mr untuk wallutils, anda mungkin perlu melakukannya dalam semua varian, sekurang-kurangnya yang menyokongnya. 🎜Atas ialah kandungan terperinci Bagaimana untuk menambah imej latar belakang pada berbilang skrin dalam X11/Wayland menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!