
Я хотел бы отображать время безотказной работы в общепринятых единицах (то есть не только в минутах, если оно больше часа; также не только в секундах, если оно больше минуты; например, "1:02:30" для 1 часа, 2 минут и 30 секунд был бы моим идеальным форматом времени) в моей строке i3status. Я даже не смог найти, как отображать время безотказной работы в строке 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 для создания formatted /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