我有一个 bash 脚本,可以在一定时间后锁定屏幕(Ubuntu 中在一定时间后锁定屏幕的应用程序)。我想在 Ubuntu 的系统托盘/应用程序指示栏中显示剩余时间。
答案1
系统监控指示器
我发现最好的方法是Sysmonitor 指标摘自这篇文章WEB UPD8网站:
它在 Ubuntu 系统托盘 (Systray) / 应用程序指示栏上显示您的 bash 脚本使用单个echo
命令更新的文本。
不同的桌面环境
以上文章针对的是 Ubuntu 14.04 至 20.04,Unity 桌面。如果你没有为 Ubuntu 20.04 安装 Unity Desktop,请参阅这些说明。
有关 Xubuntu、Gnome-Shell + app-indicator 扩展和 Budgie 的更多信息,请访问开发者网站:fossfreedom / 指标系统监控。还可访问网站获取更详细的安装和配置说明。
安装和配置indicator-sysmonitor
安装系统监控指示器您需要首先指定indicator-sysmonitor
可以找到的 PPA:
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt-get update
sudo apt-get install indicator-sysmonitor
Alt现在从 Unity Dash( +F2或⊞ Superaka键)运行“indicator-sysmonitor”GUI ⊞ Win。如果您使用的是 GNOME,请使用⊞ Super+A打开“显示应用程序”而不是 Dash。
- 单击显示“cpu: 99% mem: 99%”的系统托盘区域
- 选择“偏好设置”
- “常规”选项卡最初处于活动状态,单击“启动时运行”框
- 选择“高级”选项卡
- 单击New按钮添加新控件
- 在传感器字段中输入
custom
- 在描述字段中输入
Bash Indicator
_ 在命令字段中输入你的 bash 脚本的名称,即/mnt/e/bin/indicator-sysmonitor-display
- 保存您的新自定义指标
- 突出显示该
custom
行并单击Add按钮以激活它。 - 您可以删除可能对您没有帮助的“CPU”和“Mem”的默认变量。
- 我将刷新时间间隔从
2
秒改为.3
秒。为了支持下面解释的“旋转披萨”。 - 现在单击Save按钮。
Sysmonitor 指标运行情况
这.gif
显示了 Ubuntu 的 Unity 系统托盘更新时的样子。
- 在动画的开始处,系统托盘输出包含“亮度:3000”。笔记:
eyesome
自 2020 年 7 月 6 日起,脚本已更改为显示“eyesome: 99%”,其中 99 是基于一天中的时间的阳光百分比。下面提供了链接。 - 然后
multi-timer
(下面的链接)启动并逐步执行多个计时器。 - 出现一个旋转的披萨,同时出现当前计时器剩余时间的倒计时。
Sysmonitor 指标 BASH 脚本
创建类似于以下脚本的脚本,名为indicator-sysmonitor-display
。将脚本的文件名分配给{Custom}
变量Sysmonitor 指标:
#!/bin/bash
# UPDT: May 30 2018 - Cohesion with new multi-timer and old lock-screen-timer.
# July 6 2020 - New eyesome sunlight percentage.
if [ -f ~/.lock-screen-timer-remaining ]; then
text-spinner
Spinner=$(cat ~/.last-text-spinner) # read last text spinner used
String=$(cat ~/.lock-screen-timer-remaining)
systray="$Spinner $String"
else
systray=""
fi
if [ -f /usr/local/bin/.eyesome-percent ]; then
Brightness=$(cat /usr/local/bin/.eyesome-percent)
systray="$systray eyesome: $Brightness"
else
systray="$systray eyesome: OFF"
fi
# Below for AU answer: https://askubuntu.com/questions/1024866/is-it-possible-to-show-ip-address-on-top-bar-near-the-time
# default_interface=$(route -n | awk '$1 == "0.0.0.0" {print $8; exit}')
# ip_address=$(ifconfig "$default_interface" | awk 'sub(/.* inet addr:/, "") {print $1}')
# systray="$systray $ip_address"
echo "$systray" # sysmon-indidicator will put echo string into systray for us.
exit 0
告诉之后Sysmonitor 指标{Custom}
通过设置它在每个刷新间隔运行的变量来设置您的 bash 脚本的名称。您的 bash 脚本通过echo
命令输出的任何内容都会出现在 Ubuntu 的系统托盘中。
三个输出到 Systray 的 bash 脚本
脚本indicator-sysmonitor-display
显示剩余时间和显示亮度级别值。这些值由记录在询问 Ubuntu:
这三个 bash 脚本说明了多个脚本如何同时输出到 Systray,并共享indicator-sysmonitor-display
更新显示的同一个脚本文件 ()。
旋转披萨text-spinner
--BASH 脚本
bashtext-spinner
脚本通过循环显示字符 、 和 来创建旋转披萨效果|
。/
此─
效果\
突出显示某物正在“工作”或“思考”。要获得“旋转效果”,您需要更改Sysmonitor 指标刷新间隔从默认的2
秒变为约0.30
秒。
以下是text-spinner
Bash 脚本:
#!/bin/bash
# return '|', '/', '─', '\' sequentially with each call to this script.
# Use ~/.last-text-spinner to store last used
FILE=~/.last-text-spinner
if ! [ -f $FILE ]; then
echo '|' > $FILE
exit 124 # ASCII equivalent for '|'. Bash doesn't allow character return codes
fi
LAST=$(cat $FILE) # read last character used
if [[ $LAST == '|' ]]; then
echo '/' > $FILE
exit 47 # ASCII equivalent of "/"
elif [[ $LAST == '/' ]]; then # NOTE: you must have spaces around " == " else code breaks
echo '─' > $FILE
exit 9472 # ASCII equivalent
elif [[ $LAST == '─' ]]; then
echo '\' > $FILE # NOTE: must use single quote because double quote BASH reinterprets
exit 92 # ASCII
else
echo '|' > $FILE
exit 124 # ASCII
fi