wal
là một shell script mà mình viết ra trong một lần muốn thay hình nền X11.
Mọi người thường dùng nitrogen
, feh
hoặc tùy chọn trong menu cài đặt của desktop environment mà họ đang dùng.
Những phương pháp trên đối với mình là hơi phức tạp và không cần thiết, vì quy cho cùng chúng ta chỉ cần một vài lệnh đơn giản mà thôi.
Ngược lại dùng lệnh feh
thôi thì hơi ít chức năng.
Bạn có thể tải wal
về tại repo dotfiles của mình. Hoặc bằng lệnh dưới đây:
curl "https://gitlab.com/khiemtu27/dotfiles/-/raw/master/bin/wal" -o wal
chmod +x ./wal
Yêu cầu
Đầu tiên bạn cần một thư mục chứa hình nền, lưu ý là thư mục này chỉ được chứa hình ảnh thôi nhé.
Vì không muốn wal
bị phức tạp, mình đã không viết chức năng lọc các file không phải hình ảnh.
Thứ hai là bạn cần xwallpaper
, một tool cực kì đơn giản để đặt hình nền môi trường X11.
wal
cũng có thể dùng với Wayland, với điều kiện phải dùng lệnh wbg
thay cho xwallpaper
.
Với Void Linux, lệnh xwallpaper
có thể được cài đặt như sau.
sudo xbps-install -S xwallpaper
Cuối cùng hãy mở wal
bằng một trình sửa văn bản, thay thế các biến WALL_DIR
, CURRENT_WALL
, WALL_LIST
theo ý bạn.
Cơ chế hoạt động
Lệnh hay dùng nhất là wal change
.
Khi chạy lệnh này lần đầu, wal
sẽ tạo một file danh sách hình nền (mặc định lưu tại $HOME/.local/share/wall_list
).
File này là danh sách xáo trộn (shuffle) các file có trong $WALL_DIR
.
Sao lại phải tạo file danh sách?
Lúc đầu mình chỉ dùng lệnh xwallpaper
phối hợp với kết quả trả ra từ shuf
trông như sau:
xwallpaper --zoom "$(shuf -n1 -e $HOME/pictures/wallpapers/*)"
Lệnh shuf nhận các tùy chọn:
-n1
: chỉ chọn một trong các file-e
: in kết quả ra terminal
Ban đầu thì thấy cũng vừa ý, nhưng sau một thời gian mình nhận ra khi thư mục chứa ít hình, lệnh shuf
thường xuyên lặp lại kết quả.
Khiến lệnh này nhiều khi không có tác dụng như ý (đổi hình nền).
Do đó để đảm bảo mọi file chỉ được đặt làm hình nền một lần, mình đã dùng lệnh shuf
để tạo ra một bản xáo trộn tên các file và sẽ xóa khỏi danh sách sau khi đặt làm hình nền, đảm bảo chúng chỉ nhắc đến một lần.
Tại sao phải dùng ln -sf
?
Tương tự như trên, chúng ta có thể dùng lệnh xwallpaper
và shuf
để thực hiện việc thay đổi hình nền ngẫu nhiên.
Thế nhưng một vài trường hợp, mình chỉ muốn đặt lại hình nền cũ thay vì thay đổi.
Việc tạo một link thay vì đặt hình nền trực tiếp giúp mình khôi phục hình nền cũ dễ dàng, thay vì mất công lục lại tấm hình mình ưng ý.
Ví dụ sau khi dạo qua các hình nền bằng lệnh wal change
, mình tìm được tấm ưng ý và muốn lần tới khởi động, tấm này vẫn sẽ được đặt làm hình nền.
Chả lẽ phải lục xem file tên gì, rồi dùng xwallpaper
đặt hình nền một cách thủ công?
Tạo link như thế này giúp file hình nền lúc nào cũng chỉ có một ($HOME/.local/share/wallpaper
), khi đã tìm được hình nền ưng ý thì chỉ cần dùng lệnh wal restore
để đặt lại hình nền cũ.
Dùng ở đâu?
Trong sxrc
, trình khởi động X11, mình có một dòng lệnh wal restore
để đặt hình nền ngay khi khởi chạy X11.
Ngoài ra mình còn gán wal change
vào phím Super+Crtl+w.