Como exibir o tempo de atividade na barra i3status?

Como exibir o tempo de atividade na barra i3status?

Gostaria de exibir o tempo de atividade em unidades comuns (não apenas em minutos se for superior a uma hora; também não apenas em segundos se for superior a um minuto; por exemplo, "1:02:30" por 1 hora, 2 minutos e 30 segundos seria meu formato de hora ideal) na minha barra i3status. Eu nem consegui descobrir como mostrar o tempo de atividade na barra i3status em nenhuma unidade. eu encontreieste repositóriono GitHub que parecia alegar fazer isso, mas copiar essas configurações me deu erros relacionados à dificuldade de executar a status_commandlinha nesteconfiguração do repositório. Ou seja, a status_commandlinha é:

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

acho que só funciona com uma versão mais antiga do i3. Alguma idéia de como fazer isso?aquié meu ~/.i3status.confarquivo atual. Minha distribuição é Gentoo Linux.

Responder1

Eu encontrei a solução. Eu simplesmente não entendi bem sua sintaxe. Eu só tive que editar meu ~/.i3/i3status.sharquivo. É agora:

#!/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

As linhas mais relevantes para o tempo de atividade estão entre # Put uptimee e o comando # Compile C++...final . printf "%s\n"...Meus arquivos completos de configuração do i3 podem ser encontrados emeste repositório.

Responder2

Minha solução:

faça script em cron.hourly para criar formatado /tmp/uptimea cada hora (não preciso de mais precisão do que uma hora) e use em i3status com readfile:

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

Roteiro:

#!/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

informação relacionada