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

5664
JBirch

Ich experimentiere derzeit mit DWM und Conky, um einen minimal aussehenden Desktop für das Codieren und ähnliches zu erstellen. Ich habe etwas Schönes, aber ich habe im Moment ein Problem. Derzeit TEXTist mein Conky- Bereich in der Mitte ausgerichtet, was zwar gut aussieht, aber auch Informationen zur CPU-Auslastung zurückgibt . Wenn die CPU-Auslastung zwischen beispielsweise 9 und 10% flimmert, ist die Gesamtgröße des Texts unterschiedlich. Da der Text zentriert ist, wurde er etwas verschoben. Farben wurden zur besseren Übersicht für eine Sekunde entfernt. Hier ist eine einfache Version der betreffenden Zeile ...

$CPU: $%

Der Unterschied ist natürlich zwischen den beiden

CPU 9%

CPU 10%

ist das, was das Problem verursacht. Wie würde ich die 9 mit zwei Nullen, dann 10 mit einer Null und dann 100 ohne Nullen füllen? Das Einzige, was ich in der Dokumentation unklar finden kann, ist das Auffüllen mit Dezimalstellen, was ich gar nicht brauche.

6

4 Antworten auf die Frage

5
cYrus

Eine Lösung (kann jetzt nichts besseres finden, aber sie funktioniert) umfasst 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 nice). Wenn Sie Nullen wünschen, ersetzen Sie einfach '% 3i' durch '% 03i'.

  2. In Ihrem .conkyrcAdd vor dem TEXTAbschnitt:

    lua_load ~/.conky_lua_scripts.lua 
  3. Zum Drucken eines aufgefüllten Wertetyps in Ihrem TEXTAbschnitt etwa Folgendes:

    $CPU: $}% 

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

Ich fürchte, ich bin nicht in der Lage, es zu testen, aber es scheint für mein (einigermaßen Neuling) Conky-Auge gültig zu sein. Und es ist ein cooler kleiner Hack zum booten ^^ JBirch vor 14 Jahren 0
Lassen Sie es mich wissen, sobald Sie es getestet haben. cYrus vor 14 Jahren 0
Das funktioniert großartig, hatte zuvor noch keine zusätzlichen Lua-Skripte hinzugefügt! Ich habe die Funktion durch Hinzufügen eines "padding" -Argons aktualisiert. Außerdem wurde es in der Lage, Zeichenfolgen aufzufüllen, indem "number" in "value" geändert wurde und Folgendes ausgeführt wurde: `string.format (string.format ('%%% is'), conky_parse (padding )), conky_parse (Wert)) ` mVChr vor 7 Jahren 0
5
sgtpep

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

use_spacer left pad_percents 2 
was machen sie genau? Nikana Reklawyks vor 8 Jahren 0
1
petey

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

$<10}0$$% 

^^^ Was dies tut, ist eine 0 in der Zehner-Spalte zu drucken, wenn $weniger als 10 ist. Dann wird die Ein-Spalten-Ziffer gedruckt. Dann wird das% -Symbol gedruckt.

$if_match will print, run, or execute whatever is between itself and the $  $ ...commands <<< all i do is print a 0. heh $ 

Hier werde ich es mit mehrzeiligen Kommentaren in Komponenten aufteilen

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

Normalerweise stelle ich den Text (CPU) nach links und die Werte nach rechts aus und lege deren genaue Position fest. Auf diese Weise "strecken" sich die Werte (von beispielsweise 9 bis 10) in den leeren Raum zwischen CPU und Wert.

Das war eine Überlegung, aber vom Design her möchte ich sie wirklich in der Mitte haben. JBirch vor 14 Jahren 0