Wayland環境自動切換壁紙

自從切換到 labwc 這個窗口管理器後,桌面組件都是自己定製,越用越喜歡。

但是有兩點不是很滿意:

    1. alt-tab 切換活動窗口是沒有縮略圖,不方便判斷後快捷選中;
    1. 壁紙軟件不能自動切換(嚴格來說,這個和 labwc 沒關係,壁紙軟件是自己選擇的 swaybg)。

第一個問題我一般是狀態欄鼠標點擊選擇,缺點是手離鍵盤,影響效率,勉強可以接受。

本文解決第二個問題,wayland 下面的壁紙程序其實很多,各個的側重點不一樣,作者設計初衷不同。

羅列如下:

  • swaybg 可選一個圖片當靜態壁紙

  • swww 標星多,功能略強大,能用色彩當壁紙,也能對單個圖片做各種操作,還能控制切換過程中的效果,但是想要自動切換得單獨整一個腳本。

     1➜  ~ swww --help
     2A Solution to your Wayland Wallpaper Woes
     3
     4Change what your monitors display as a background by controlling the swww daemon at runtime. Supports animated gifs and putting different stuff in different monitors. I also did my best to make it as resource
     5efficient as possible.
     6
     7Note `swww` will only work in a compositor that implements the layer-shell protocol. Typically, wlr-roots based compositors.
     8
     9Usage: swww <COMMAND>
    10
    11Commands:
    12clear Fills the specified outputs with the given color
    13img Sends an image (or animated gif) for the daemon to display
    14init Initializes the daemon
    15kill Kills the daemon
    16query Asks the daemon to print output information (names and dimensions)
    17help Print this message or the help of the given subcommand(s)
    18
    19Options:
    20-h, --help
    21Print help (see a summary with '-h')
    22
    23-V, --version
    24Print version
    
  • mpvpaper 這個就有點離譜,會用 mpv 播放視頻作爲壁紙,可能適合企業宣傳、特殊人羣使用。

  • wpaperd 還在開發中,個人選擇這個,邏輯簡單清晰。關鍵是能設置一個壁紙目錄(裏面放壁紙圖片),隔一段時間隨機更換壁紙,這正是我需要的功能,所以筆者推薦用這個 👍。

1. 安裝

  • 下載編譯
1$ git clone https://github.com/danyspin97/wpaperd
2$ cd wpaperd
3$ cargo build --release
  • 把程序放入目標 PATH 目錄

編譯後會有 2 個二進制程序 wpaperctlwpaperd,放入/usr/local/bin中, 方便調用執行。

前者爲控制程序,後者爲守護進程,符合套路,一切都是熟悉的感覺。

1cp target/release/wpaperctl target/release/wpaperd /usr/local/bin

2. 配置文件

創建配置文件目錄後,調整配置,我的示例如下:

 1mkdir /home/mephisto/.config/wpaperd/
 2➜  ~ cd .config/wpaperd
 3➜  wpaperd pwd
 4/home/mephisto/.config/wpaperd
 5➜  wpaperd cat wallpaper.toml
 6[default]
 7path = "/home/mephisto/Pictures/Wallpapers/"
 8duration = "30m"
 9sorting = "random"
10
11[eDP-1]
12path = "/home/mephisto/Pictures/Wallpapers/"
13duration = "30m"
14sorting = "random"
15
16[DP-2]
17path = "/home/mephisto/Pictures/Wallpapers/"
18duration = "30m"
19sorting = "random"

上述配置的意思,每 30 分鐘隨機切換壁紙,壁紙來源就是 path 中配置的目錄, sorting 還有非隨機的升序(ascending), 降序(descending),我喜歡隨機,博彩人生。

3. 設置開機啓動

在 labwc 環境中,很簡單,註釋掉 swaybg,切換成 wpaperd 守護進程

1➜  ~ head -n 5 ~/.config/labwc/autostart
2# Example autostart file
3
4# Set background color.
5# swaybg -i ~/Pictures/land.jpg >/dev/null 2>&1 &
6wpaperd >/dev/null 2>&1 &

最後,去網上找點好看的壁紙放入 path 中的壁紙目錄就好了,圖片格式支持 jpeg 、png 、webp 等。

最終效果就是,每個屏幕隨機展示不同壁紙,當然你也可以設置爲雙屏相同。

另外,可以查看當前真正顯示的圖片

1➜  ~ wpaperctl all-wallpapers
2eDP-1: "/home/mephisto/Pictures/Wallpapers/road.jpeg"
3DP-1: "/home/mephisto/Pictures/Wallpapers/th.jpeg"

更多玩法可查看文檔, 讀者自己試試,個人覺得這個作者是懂用戶的,該有的都有了,整個設計很簡潔方便。

4. 其它知識

好奇寶寶可能要問,你怎麼知道顯示器鏈接名叫什麼的?

  • X11 環境, 運行 xrandr

  • Wayland 環境,運行 wlr-randr

如果提示沒有這個命令,可能需要安裝相關軟件包。

例如下面所示 wayland 環境,顯示有 2 塊屏幕 eDP-1DP-1

1sudo apt install wlr-randr
2
3~ wlr-randr | grep -i dp
4DP-1 "Dell Inc. DELL P2417H C9G5D83N67HI (DP-1)"
5eDP-1 "Chimei Innolux Corporation 0x14C0 (eDP-1)"

eDP 意爲 embedded display, 電腦自帶屏幕。 DP 意爲 dispaly,外接顯示屏。

waybar 狀態欄、dunst 桌面通知等程序,都有類似讓你選擇屏幕的配置項,知道名字,就能配置在哪個屏幕顯示目標信息。

最後修改於: Friday, December 1, 2023

相關文章:

翻譯: