首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Zsh提示中显示电池状态

如何在Zsh提示中显示电池状态
EN

Stack Overflow用户
提问于 2013-04-21 05:42:54
回答 5查看 8.8K关注 0票数 7

我认为答案是不言而喻的。

我一直在寻找一个已经可以做到这一点的软件,但我一直没有任何运气。这要么不是在Zsh中完成的,要么是为另一个应用程序做的,例如tmux。重点是我还没能找到它。

所以我的问题是,是否已经有一个预先编写的脚本可以做到这一点?如果有,你能分享一个链接吗?

如果没有,我应该研究什么来制作这个脚本?我是Zsh脚本编程的新手,所以请记住这一点。

这个想法是,它沿着67%的路线输出一些东西。你说对了。;)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-21 16:45:28

一个非常-非常简单的解决方案:

代码语言:javascript
复制
setopt promptsubst
PROMPT='$(acpi | grep -o "[0-9]*%)% '
票数 6
EN

Stack Overflow用户

发布于 2016-01-21 08:41:40

尽管这个帖子很老了,但我想我也在这里发布了我的版本:

我使用了steve losh's电池提示符的基本概念,但首先将其更改为不使用python,而使用shell,这要快得多,而且还将电池路径更改为我的arch linux发行版。此外,如果我的笔记本正在充电,我在末尾添加了一个绿色粗体'+‘:

我的电池功能如下所示:

代码语言:javascript
复制
    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%} "
    }
票数 5
EN

Stack Overflow用户

发布于 2014-12-01 10:45:34

这是一个用ZSH写的彩色版本。

在.zshrc文件中

代码语言:javascript
复制
function battery {
    batprompt.sh
}
setopt promptsubst
PROMPT='$(battery) >'

这是一个用于linux的batprompt.sh脚本。你可以适应其他读取电池数据的方式,或者改用之前文章中的acpi版本:

代码语言:javascript
复制
#!/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后面的字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16125498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档