Как отобразить время безотказной работы в строке состояния i3?

Как отобразить время безотказной работы в строке состояния i3?

Я хотел бы отображать время безотказной работы в общепринятых единицах (то есть не только в минутах, если оно больше часа; также не только в секундах, если оно больше минуты; например, "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

Связанный контент