Wie wird die Betriebszeit in der i3-Statusleiste angezeigt?

Wie wird die Betriebszeit in der i3-Statusleiste angezeigt?

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_commandZeile in diesemRepo-Konfiguration. Die status_commandZeile 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.confDatei. 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.shDatei 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 uptimeund # 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/uptimejede 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

verwandte Informationen