我正在使用带有双重状态补丁的dwm 。除了顶部的标准栏之外,这还会在屏幕底部添加一个状态栏。每个栏中的文本在 ~/.xinitrc 中设置(例如),如下所示:
xsetroot -name “top text;bottom text”
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
但是,这每秒更新一次。有没有更简单的方法来做到这一点?我能想到的想法是
也许是一种告诉 xsetroot 保留底部栏中的内容的方法?作为最后的手段,我可能会调整dualstatus
补丁中的一些代码,以允许它在xsetroot -name ';bottom text'
传递类似内容时保留顶部/底部栏的当前状态,但这并不理想,因为我的 C 已生锈,我仍在使用上述内容命令有时清除条形。
使用 cronjob 更新底部栏中文本的缓存,并每分钟运行一次。尽管顶部/底部栏会每秒显示一次,但实际上只有顶部栏会每秒更改一次。
还有其他方法吗?有没有一种简单的(r)方法可以在我错过的 bash 中做到这一点?
我建议让 bash 跟踪您之前的底部字符串,并且每分钟只更新一次(当此代码中当前时间模 60 的秒数等于 0 时)。
while true; do
(( 10#$(date +%s) % 60 )) || bottomdisp=$(date)
xsetroot -name "$(topbar);$bottomdisp";
sleep 1;
done &
Run Code Online (Sandbox Code Playgroud)
这种语法可以很容易地修改次要(或有多个)间隔的频率,例如,只需将 60 更改为 15 即可每分钟更新 4 次。
归档时间: |
|
查看次数: |
1816 次 |
最近记录: |