X-Server
是否可以使用 xsetroot 和 dwm 以不同的時間間隔設置頂部和底部條?
我正在使用帶有雙重狀態更新檔的dwm。除了頂部的標準欄外,這還會在螢幕底部添加一個狀態欄。每個欄中的文本在 ~/.xinitrc 中設置(例如),如下所示:
xsetroot -name “top text;bottom text”
bash 中有沒有辦法以不同的間隔設置頂部文本和底部文本?例如,我有一個
topbar
顯示系統資訊的腳本,例如 uptime 命令的輸出,以及一個bottombar
顯示天氣、電池狀態等資訊的腳本。目標是讓頂部欄每秒更新一次,而底部欄每分鐘更新一次,因為它的資訊來自更昂貴的程序(例如查詢我的音樂播放器、檢查電池狀態等)。現在我的 ~/.xinitrc看起來像這樣:
while true; do bottomdisp=$(bottombar) for s in {1..60} do xsetroot -name "$(topbar);$bottomdisp"; sleep 1; done done & xbindkeys ( ( sleep 5 && /usr/bin/xscreensaver -no-splash -display :0.0 ) & ) exec rundwm
不過,這會每秒更新一次。有沒有更簡單的方法來做到這一點?我能想到的想法是
- 也許是一種告訴 xsetroot 保留底欄中的內容的方法?作為最後的手段,我可能會調整
dualstatus
更新檔中的一些程式碼,以允許它在通過類似的東西時保留頂部/底部欄的目前狀態xsetroot -name ';bottom text'
,但這並不理想,因為我的 C 生鏽了,我仍然使用上面的命令有時清除酒吧。- 使用 cronjob 更新底部欄中的文本記憶體,並每分鐘執行一次。即使頂部/底部欄會每秒顯示一次,但實際上只有頂部欄會每秒發生變化。
還有其他方法嗎?在我錯過的bash中是否有一種簡單的(r)方法可以做到這一點?
我建議讓 bash 跟踪您之前的底部字元串,並且每分鐘僅更新一次(噹噹前時間模 60 的秒數在此程式碼中等於 0 時)。
while true; do (( 10#$(date +%s) % 60 )) || bottomdisp=$(date) xsetroot -name "$(topbar);$bottomdisp"; sleep 1; done &
這種語法可以很容易地修改次要(或具有多個)間隔的頻率,例如,只需將 60 更改為 15 即可每分鐘更新 4 次。