
Ich möchte die Betriebszeit in meiner i3statusleiste in gängigen Einheiten anzeigen (also nicht nur in Minuten, wenn sie über eine Stunde beträgt; auch nicht nur in Sekunden, wenn sie über eine Minute beträgt; z. B. wäre „1:02:30“ für 1 Stunde, 2 Minuten und 30 Sekunden mein ideales Zeitformat). Ich konnte nicht einmal herausfinden, wie ich die Betriebszeit in der i3statusleiste in beliebigen Einheiten anzeigen kann. Ich fanddieses Repoauf GitHub, die dies zu tun schien, aber das Kopieren dieser Konfigurationen gab mir Fehler im Zusammenhang mit Schwierigkeiten bei der Ausführung der status_command
Zeile in diesemRepo-Konfiguration. Die status_command
Zeile lautet nämlich:
status_command ~/.i3/i3status.sh ~/.i3/i3status.conf
ich vermute, es funktioniert nur mit einer älteren Version von i3. Irgendwelche Ideen, wie das geht?Hierist meine aktuelle ~/.i3status.conf
Datei. Meine Distribution ist Gentoo Linux.
Antwort1
Ich habe die Lösung gefunden. Ich habe die Syntax einfach nicht gut genug verstanden. Ich musste nur meine ~/.i3/i3status.sh
Datei bearbeiten. Sie lautet jetzt:
#!/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
Die relevantesten Zeilen für die Betriebszeit sind zwischen # Put uptime
und # Compile C++...
und dem letzten printf "%s\n"...
Befehl. Meine vollständigen i3-Konfigurationsdateien finden Sie indieses Repository.
Antwort2
Meine Lösung:
Erstellen Sie ein Skript in cron.hourly, um /tmp/uptime
jede Stunde ein Format zu erstellen (ich brauche keine höhere Genauigkeit als eine Stunde) und verwenden Sie es in i3status mit readfile:
read_file uptime {
path = "/tmp/uptime"
}
Skript:
#!/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