我认为答案是不言而喻的。
我一直在寻找一个已经可以做到这一点的软件,但我一直没有任何运气。这要么不是在Zsh中完成的,要么是为另一个应用程序做的,例如tmux。重点是我还没能找到它。
所以我的问题是,是否已经有一个预先编写的脚本可以做到这一点?如果有,你能分享一个链接吗?
如果没有,我应该研究什么来制作这个脚本?我是Zsh脚本编程的新手,所以请记住这一点。
这个想法是,它沿着67%
的路线输出一些东西。你说对了。;)
发布于 2013-04-21 16:45:28
一个非常-非常简单的解决方案:
setopt promptsubst
PROMPT='$(acpi | grep -o "[0-9]*%)% '
发布于 2016-01-21 08:41:40
尽管这个帖子很老了,但我想我也在这里发布了我的版本:
我使用了steve losh's电池提示符的基本概念,但首先将其更改为不使用python,而使用shell,这要快得多,而且还将电池路径更改为我的arch linux发行版。此外,如果我的笔记本正在充电,我在末尾添加了一个绿色粗体'+‘:
我的电池功能如下所示:
function battery_charge {
b_now=$(cat /sys/class/power_supply/BAT1/energy_now)
b_full=$(cat /sys/class/power_supply/BAT1/energy_full)
b_status=$(cat /sys/class/power_supply/BAT1/status)
# I am displaying 10 chars -> charge is in {0..9}
charge=$(expr $(expr $b_now \* 10) / $b_full)
# choose the color according the charge or if we are charging then always green
if [[ charge -gt 5 || "Charging" == $b_status ]]; then
echo -n "%{$fg[green]%}"
elif [[ charge -gt 2 ]]; then
echo -n "%{$fg[yellow]%}"
else
echo -n "%{$fg[red]%}"
fi
# display charge * '▸' and (10 - charge) * '▹'
i=0;
while [[ i -lt $charge ]]
do
i=$(expr $i + 1)
echo -n "▸"
done
while [[ i -lt 10 ]]
do
i=$(expr $i + 1)
echo -n "▹"
done
# display a plus if we are charging
if [[ "Charging" == $b_status ]]; then
echo -n "%{$fg_bold[green]%} +"
fi
# and reset the color
echo -n "%{$reset_color%} "
}
发布于 2014-12-01 10:45:34
这是一个用ZSH写的彩色版本。
在.zshrc文件中
function battery {
batprompt.sh
}
setopt promptsubst
PROMPT='$(battery) >'
这是一个用于linux的batprompt.sh脚本。你可以适应其他读取电池数据的方式,或者改用之前文章中的acpi版本:
#!/bin/zsh
# BATDIR is the folder with your battery characteristics
BATDIR="/sys/class/power_supply/BAT0"
max=`cat $BATDIR/charge_full`
current=`cat $BATDIR/charge_now`
percent=$(( 100 * $current / $max ))
color_green="%{^[[32m%}"
color_yellow="%{^[[34m%}"
color_red="%{^[[31m%}"
color_reset="%{^[[00m%}"
if [ $percent -ge 80 ] ; then
color=$color_green;
elif [ $percent -ge 40 ] ; then
color=$color_yellow;
else
color=$color_red;
fi
echo $color$percent$color_reset
请注意,您在颜色定义中看到的^[是转义字符。如果剪切和粘贴不能正常工作,则需要将^[转换为转义字符。在VI/Vim中,您可以删除字符,然后按Esc键插入control-v后面的字符。
https://stackoverflow.com/questions/16125498
复制相似问题