
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_command
linha nesteconfiguração do repositório. Ou seja, a status_command
linha é:
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.conf
arquivo 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.sh
arquivo. É 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 uptime
e 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/uptime
a 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