如何在 i3 状态栏中显示正常运行时间?

如何在 i3 状态栏中显示正常运行时间?

我想以常用单位显示正常运行时间(因此,如果超过一小时,则不仅仅以分钟为单位;如果超过一分钟,也不仅仅以秒为单位;例如,“1:02:30”表示 1 小时、2 分钟和在我的 i3status 栏中,30 秒是我理想的时间格式。我什至无法找到如何在任何单位的 i3status 栏中显示正常运行时间。我发现这个仓库在 GitHub 上似乎声称可以做到这一点,但复制这些配置给了我与执行status_command此行中的困难相关的错误仓库的配置。即该status_command行是:

status_command ~/.i3/i3status.sh ~/.i3/i3status.conf

猜测它只适用于旧版本的 i3。有什么想法如何做到这一点?这里是我现在的~/.i3status.conf文件。我的发行版是 Gentoo Linux。

答案1

我已经找到了解决方案。我只是不太理解它的语法。我只需要编辑我的~/.i3/i3status.sh文件。就是现在:

#!/bin/sh

/usr/bin/i3status -c $HOME/.i3status.conf | while :
do
    read line
    RAM=`free -kh | grep Mem | awk '{print $3}'`
    TOTR=$(cat /proc/meminfo | grep MemT | sed 's/.*\://g' | sed 's/ *//g' | sed 's/kB//g')
    TOT=$(octave --eval "$TOTR/1024^2" | sed 's/ans = *//g' | sed 's/$/G/g' )

    # Put uptime
    uptime=`uptime | awk '{print $3 " " $4}' | sed 's/,.*//'`
    hour=$(echo $uptime | sed 's/\:.*//g')
    min=$(echo $uptime | sed 's/.*\://g')
    UP="$hour h $min m"

    # Compile C++ CPU prog and run it
    g++ -o cpu.o $HOME/.i3/cpu.cpp
    CPU=$(./cpu.o)

    printf "%s\n" "Up: $UP | CPU: $CPU% | RAM: $RAM/$TOT | $line"
done

与正常运行时间最相关的行位于# Put uptime# Compile C++...以及最终printf "%s\n"...命令之间。我完整的i3配置文件可以在这个存储库

答案2

我的解决方案:

在 cron.hourly 中创建脚本,每隔一小时创建一次格式化/tmp/uptime(我不需要比一小时更高的精度)并在 i3status 中与 readfile 一起使用:

read_file uptime {
        path = "/tmp/uptime"
}

脚本:

#!/bin/sh
awk '{printf("Up %dd:%02d\n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime > /tmp/uptime

相关内容