
我想以常用單位顯示正常運行時間(因此,如果超過一小時,則不僅僅以分鐘為單位;如果超過一分鐘,也不僅僅以秒為單位;例如,“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