
i3status バーに、一般的な単位でアップタイムを表示したいのですが (1 時間を超える場合は分単位だけでなく、1 分を超える場合は秒単位だけでなく、たとえば 1 時間 2 分 30 秒の場合は「1:02:30」が理想的な時間形式です)。i3status バーにアップタイムを任意の単位で表示する方法さえ見つけることができませんでした。このレポstatus_command
GitHubではこれを実行できると主張しているようですが、これらの設定をコピーすると、この行を実行するのが困難であるというエラーが発生しました。リポジトリの設定つまり、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
uptimeに最も関係する行は、と最後のコマンドの間です# Put uptime
。# Compile C++...
私printf "%s\n"...
の完全なi3設定ファイルは以下にあります。このリポジトリ。
答え2
私の解決策:
cron.hourly でスクリプトを作成し、/tmp/uptime
1 時間ごとにフォーマットされたものを作成し (1 時間以上の精度は必要ありません)、readfile とともに i3status で使用します。
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