Ändern Sie Conky, um Werte mit variabler Länge zu verarbeiten

8

Momentan experimentiere ich mit DWM und Conky, um einen minimalistisch aussehenden Desktop für die Codierung und ähnliche Dinge zu erstellen. Ich habe etwas Schönes vor, aber es gibt etwas, mit dem ich im Moment ein Problem habe. Im Moment ist mein Conky- TEXTBereich mittig ausgerichtet, was gut aussieht, aber auch Informationen zur CPU-Auslastung zurückgibt . Wenn die CPU-Auslastung beispielsweise zwischen 9 und 10% flackert, ist die Gesamtgröße des Texts unterschiedlich, und da er mittig ausgerichtet ist, hat er sich etwas verschoben. Aus Gründen der Klarheit wurden Farben für eine Sekunde entfernt. Hier ist eine einfache Version der fraglichen Linie ...

${alignc}CPU: ${cpu}%

Der Unterschied ist natürlich zwischen den beiden von

CPU 9%

CPU 10%

ist, was das Problem verursacht. Wie gehe ich vor, wenn ich die 9 mit zwei Nullen links auffülle, dann 10 mit einer Null und dann 100 ohne Nullen? Das einzige, was ich in der Dokumentation vage sehen kann, ist das Auffüllen von Dezimalstellen, was ich überhaupt nicht brauche.

JBirch
quelle

Antworten:

6

Eine Lösung (kann jetzt nichts Besseres finden, aber es funktioniert) beinhaltet die Verwendung einer benutzerdefinierten Lua-Funktion. So sollten Sie vorgehen:

  1. Erstellen Sie eine Datei für die Lua-Funktion, zum Beispiel ~/.conky_lua_scripts.luamit:

    function conky_pad( number )
        return string.format( '%3i' , conky_parse( number ) )
    end
    

    Dadurch wird die Zahl mit Leerzeichen aufgefüllt (imo netter). Wenn Sie Nullen möchten, ersetzen Sie einfach '% 3i' durch '% 03i'.

  2. In Ihrem .conkyrcAdd vor dem TEXTAbschnitt:

    lua_load ~/.conky_lua_scripts.lua
    
  3. Zum Schluss können Sie einen gepolsterten Werttyp in Ihrem TEXTAbschnitt wie folgt drucken :

    ${alignc}CPU: ${lua_parse pad ${cpu}}%
    

Ich habe versucht, die Lua-Funktion so einfach wie möglich zu halten, aber Sie können, wenn Sie möchten, eine allgemeinere erstellen, damit Sie eine beliebige Zahl / einen Wert verwalten oder sogar die Ausrichtung ändern können.

cYrus
quelle
Ich fürchte, ich bin nicht in der Lage, es zu testen, aber es sieht für mein (einigermaßen unerfahrenes) Conky-Auge gültig aus. Und es ist ein cooler kleiner Hack zum Booten ^^
JBirch
Lassen Sie mich wissen, wenn Sie es einmal getestet haben.
CYRUS
Das funktioniert super, hatte noch nie extra Lua Skripte hinzugefügt! Ich die Funktion aktualisiert durch eine Zugabe von paddingarg, machte auch Pad Saiten es in der Lage , indem numberauf valueund zu tun:string.format(string.format('%%%is', conky_parse(padding)), conky_parse(value))
mVChr
5

Conky hat es endlich eingebaut. Diese Optionen machen den Trick:

use_spacer left
pad_percents 2
sgtpep
quelle
was (genau) machen sie
Nikana Reklawyks
1

Ich hatte ähnliche Bedenken beim Versuch, Prozentsätze wie 04% 05% usw. anstelle von 1%, 5%, 0% usw. anzuzeigen (um zu vermeiden, dass der Text "herumspringt"). Ich konnte eine einfache if-Struktur mit codieren$if_match

${if_match ${cpu cpu0}<10}0${endif}${cpu cpu0}%

^^^ Dies bewirkt, dass in der Zehner-Spalte eine 0 ausgegeben wird, wenn sie ${cpu cpu0}kleiner als 10 ist. Dann wird die Ziffer der ersten Spalte ausgegeben. Dann wird das% -Symbol gedruckt.

$if_match will print, run, or execute whatever is between itself and the ${endif}

${if_match [COMPARISON]}
...commands                  <<< all i do is print a 0.  heh
${endif}

Hier werde ich es in Komponenten mit Kommentaren aufteilen, mehrzeilig

${if_match ${cpu cpu0}<10}  ### is the cpu load less than 10% ?
0                           ### if so, print a 0 !!!
${endif}                    ### thanks bye i had a really good time
%                           ### output formatting.  so it says 08% 
                              # instead of 08
petey
quelle
0

Normalerweise richte ich den Text (CPU) nach links und die Werte nach rechts aus und gebe ihre genaue Position an. Auf diese Weise "erweitern" sich die Werte (z. B. von 9 auf 10) in den leeren Raum zwischen CPU und Wert.

Patkos Csaba
quelle
Das war eine Überlegung, aber aus gestalterischer Sicht möchte ich sie wirklich in der Mitte haben.
JBirch