Conky

Aus wiki.archlinux.de

Will man sich Systeminformationen anzeigen lassen, hat man mehrere Möglichkeiten, dies zu tun. Neben diverser Shell-Befehle und Logfiles gibt es auch einige Programme, mittels derer man sich Systeminformationen anzeigen lassen kann. Eines dieser Programme ist Conky.

Mittels Conky können auf dem Desktop diverse Statusinformationen angezeigt werden. Die Ausgabe kann über diverse Parameter individuell angepasst und durch viele Optionen beliebig konfiguriert werden.

Installation

Das Programm ist als conky in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S conky

Starten

Standard-Konfiguration von Conky, die allererste Zeile scrollt und ist auf dem Screenshot nur zum Teil sichtbar

Die Konfiguration wird standardmäßig in der Datei „.conkyrc“ im home-Verzeichnis des Benutzers vorgenommen. Will man mehrere Conky-Anzeigen parallel betreiben, so kann man mittels des Parameters „-c“ eine andere Datei angeben, aus der die Konfiguration ausgelesen werden soll.

conky -c .anzeige/obenlinks &
conky -c .anzeige/untenrechts &

Im Beispiel werden zwei Instanzen von Conky gestartet, die erste Instanz verwendet die Konfigurationsdatei „obenlinks“ aus dem Verzeichnis „.anzeige“, die zweite Instanz verwendet „untenrechts“ aus dem selben Verzeichnis.

In beiden Konfigurationsdateien kann völlig unabhängig voneinander eine Konfiguration erstellt werden.

Will man, dass Conky beim Systemstart sofort mitgestartet wird, kann man den Aufruf in die Autostartdatei des Fenstermanagers schreiben, oder über die Autostartfunktion der Desktopumgebung starten lassen.

Konfiguration

Die Konfiguration von Conky gliedert sich in zwei Abschnitte. Im ersten Abschnitt der Konfigurationsdatei befinden sich grundlegende Dinge zur Anzeige, zum verwendeten Fenstermodus, Standard-Schriftarten und -Farben, und dergleichen.

Im zweiten Abschnitt der Datei wird angegeben, was von Conky angezeigt werden soll. Hier können sehr viele verschiedene Variablen verwendet werden, über die nicht nur die auszugebenden Daten konfiguriert werden, sondern auch statusabhängige Ausgaben möglich sind. Zudem gibt es Variablen, über die unter anderem Schrift-, Farb- und Ausrichtungs-Änderungen möglich sind.

Alle nachfolgenden Erklärungen beziehen sich, wenn nicht anders angegeben, auf die Einstellungen in der Datei „.conkyrc“ im home-Verzeichnis des jeweiligen Benutzers.

Programmkonfiguration

Conky lässt sich in verschiedenen Fenstertypen verwenden. Die gängigste Konfiguration ist, Conky direkt auf dem Desktop laufen zu lassen, so dass es als Teil des Hintergrundes wirkt, und nicht als eigenes Fenster erscheint, dies ist zudem Standard-Einstellung.

own_window yes

Hiermit umgeht man die Standard-Einstellung und weist Conky an, ein eigenes Fenster darzustellen. Dieses Fenster umfasst dann die Dekorationen des Fenstermanagers, und kann wie ein normales Fenster verschoben, minimiert oder geschlossen werden.

Das Fenster wird auch im Taskmanager, in der Taskleiste, beim Umschalten zwischen Fenstern, etc. angezeigt. Möchte man zwar Conky als eigenes Fenster betreiben, soll es aber nicht in Fensterlisten auftauchen, kann man dies ebenfalls anpassen.

own_window_hints skip_taskbar,skip_pager

Will man, dass das Fenster auf allen Desktops angezeigt wird, kann man diese Liste noch um „sticky“ erweitern.

Den Fenstertypen und weitere Optionen kann man ebenfalls noch definieren. Allerdings ist dies im Normalfall nicht nötig. Sollte es allerdings Darstellungsfehler geben, kann man die Standard-Funktionalität von Conky auch mit der Definition als eigenständiges Fenster nachbilden (siehe Fehlerbehebung).

Ausgerichtet werden kann das Conky-Fenster mittels des „alignment“-Parameters, sowie „gap_x“ und „gap_y“.

alignment tr
gap_x 5
gap_y 0

„tr“ steht für „top right“ also oben rechts. Nach selbem Muster können auch weitere Angaben getätigt werden. „tl“ steht demnach für oben links. „bm“ steht für „bottom middle“ (unten mittig), und so weiter.

Die gap-Angaben bestimmen den Rand um das Fenster. Der x-Wert definiert den Horizontalen Rand, der y-Wert den vertikalen Rand. Beide Angaben sind Pixel-Werte.

Man kann Conky neben der Ausrichtungs-Angabe auch mitteilen, wie weit sich das Fenster ausdehnen soll Dies ist zum Beispiel nützlich, wenn man Daten hat, die häufig Variabel breite Ausgaben produzieren, und dadurch ständig das Hintergrundbild hinter Conky „verrutscht“.

maximum_width 290
minimum_size 290

Hier wurde durch Ausprobieren herausgefunden, dass die maximale Breite der Ausgabe anhand der ausgelesenen Daten 290 Pixel beträgt. Dies wird so in die Konfiguration geschrieben. Conky nimmt nun immer maximal diese Breite an, und wird auch nicht kleiner.

Conky aktualisiert standardmäßig im Sekundentakt die Ausgabe, wenn dieser Intervall für die anzuzeigenden Daten zu kurz ist, kann man den Wert anpassen, um nicht unnötig Ressourcen zu verschwenden. So muss eine nur bis zu Minuten darstellende Uhrzeitanzeige nicht sekündlich aktualisiert werden.

update_interval 30

Hierdurch aktualisiert Conky nur noch alle 30 Sekunden die Ausgabe. Es sind auch „krumme“ Zahlen möglich, so würde Conky bei der Angabe von „27.6“ alle 27,6 Sekunden die Ausgabe aktualisieren.

Die Ausgabeschrift von Conky lässt sich über die Standard-X-Schriftdefinitionen einstellen. Allerdings sieht dies heutzutage nur noch wenig zeitgemäß aus. Zudem ist man an die Einschränkungen von X gebunden. Wesentlich flexibler, und zeitgemäßer ist die Verwendung von xft.

use_xft yes
xftfont Purisa:size=14
draw_shades no

Hier wird die Schriftart „Purisa“ (Bestandteil des Schriftpaketes „thai-ttf“ aus dem „extra“-Repository) in der Schriftgröße 14 verwendet. Außerdem wird der standardmäßig von Conky angezeigte Schrift-Schatten deaktiviert.

Weitere Konfigurationsmöglichkeiten befinden sich in der Manpage von Conky, sowie am Ende dieses Artikels im Abschnitt Fehlerbehebung.

Ausgabe

Das, was durch Conky ausgegeben wird, wird durch ein in einer Zeile alleinstehendes „TEXT“ in der Konfigurationsdatei eingeleitet. Alles, was ab dieser Zeile angegeben wird, wird von Conky geparst und ausgegeben.

Variablen

Zur Ausgabe bietet Conky viele Variablen, die verwendet werden können. Durch diese Variablen können auch Graphen gezeichnet und Balkendiagramme angezeigt werden. Will man sich zum Beispiel die IP-Adresse der Netzwerkkarte anzeigen lassen, kann man …

${addr eth0}

… verwenden. Die Auslastung der CPU dargestellt an einem Balkendiagramm erreicht man mittels …

${cpubar cpu0 10,200}

Hiermit wird die gesamte CPU-Leistung in einem 10 Pixel hohen, und 200 Pixel breitem Balken dargestellt. Will man bei Mehrkern-Systemen die Kerne einzeln betrachten, gibt man einfach die Nummer des Kerns, begonnen bei 1 an. Man kann sich die CPU-Information auch als Graph anzeigen lassen.

${cpugraph normal cpu1 40,70} ${cpugraph normal cpu2 40,70}

Dies zeigt nebeneinander für beide Prozessorkerne einen Graphen an, der 70 Pixel breit, und 40 Pixel hoch ist. Wenn diese Angaben untereinander geschrieben werden würden, würden sie von Conky auch untereinander angezeigt werden.

Weitere Variablen finden sich ausführlich dokumentiert in der Manpage von Conky.

Templates

Will man sich von einer externen Festplatte, die nicht permanent gemountet ist, den verwendeten Speicherplatz, sowie die Gesamtkapazität anzeigen lassen, und will, wenn die Platte nicht gemountet ist, einen Hinweis ausgeben lassen, ist dies ebenfalls möglich.

${if_mounted /media/platte}${fs_used /media/platte}/${fs_size /media/platte} 
(${fs_used_perc /media/platte}%)${else}/media/platte nicht gemountet${endif}

Allerdings ist diese Angabe sehr unhandlich und lang. Man kann sich in der Konfiguration auch so genannte „Templates“ einrichten, also praktisch eigene Variablen, die man dann verwenden kann. Die Templates müssen oberhalb des Trenners „TEXT“ definiert werden., und können dann wie ganz normale Variablen benutzt werden.

[Weitere Optionen]

template0 ${if_mounted \1}${fs_used \1}/${fs_size \1}
(${fs_used_perc \1}%)${else}\1 nicht gemountet${endif}

TEXT

${template0 /media/platte}

Der Umbruch in der Template-Definition muss entfernt werden, und dient nur dazu, die Definition hier im Wiki anständig anzeigen zu können.

So können nun im gleichen Stil mehrere Mountpoints angegeben werden, ohne erst jedes mal – redundant – sämtliche Zusatzangaben machen zu müssen. Es können insgesamt zehn Templates definiert werden (0-9). Auf Optionen, die beim Aufruf übergeben werden, kann mittels „\N“ zugegriffen werden, wobei „N“ die Stelle der übergebenen Option, angefangen bei 1, repräsentiert.

Externes Programm

Sollte es für eine gewünschte Ausgabe keine Variable geben, so kann eine Ausführ-Variable verwendet, und der Befehl direkt angegeben werden. Die Ausgabe des Befehls kann dann innerhalb Conkys wie die Ausgaben aller anderen Variablen verwendet werden.

${exec spezialkommando}

Dies führt den Befehl „spezialkommando“ aus, und übergibt die Ausgabe an Conky. Allerdings verzögert sich die Ausgabe oder Aktualisierung der Anzeige so lange, bis der Befehl ausgeführt und beendet wurde. Der Befehl wird auch jedes Mal ausgeführt, wenn die Ausgabe aktualisiert wird. Will man dies umgehen, kann man die Variable „execi“ verwenden

${execi 120 spezialkommando}

Hiermit wird der Befehl nur alle 120 Sekunden ausgeführt, auch, wenn der Update-Interval von Conky darunterliegt. Der Intervall des Befehls kann nicht unter dem Update-Intervall von Conky liegen. Allerdings verhindert das nicht die Verzögerung der Ausgabe on Conky, wenn der Befehl länger braucht.

${texeci 120 spezialkommando}

Mit dieser Variable führt Conky den Befehl in einem eigenen Thread aus, und berücksichtigt ebenfalls den Intervall. Wenn das Abarbeiten des Befehls länger dauert, dann aktualisiert Conky erst die restliche Ausgabe, wenn der Befehl dann fertig ist, wird die Ausgabe des Befehls nachträglich in die Conky-Ausgabe integriert.

Beispiele

Beispiele für Conky-Konfigurationen gibt es sehr viele. Die Spanne reicht dabei von „super-simplel“ über „minimalistisch“ und „schlichte Eleganz“ bis hin zu „Flugzeug-Cockpit“ … Im deutschen, sowie im englischen, Arch-Forum befinden sich Threads mit Konfigurationen der Nutzer.

Simpel

Ein minimalistischer Desktop mit Anzeige der Uhrzeit oben rechts. Unten rechts: Stalonetray zeigt Gajim und Mitter an

Die Anzeige der Uhrzeit und des Datums nebst Kalenderwoche, Jahrestag und Wochentag-Name oben rechts auf dem Monitor lässt sich zum Beispiel mit folgender Konfiguration realisieren.

alignment tr
gap_y 0
maximum_width 390
minimum_size 390
update_interval 30
use_xft yes
xftfont Purisa:size=14
draw_shades no
TEXT
${alignr}${time %Y-%m-%d %H:%M Uhr}
${alignr}${time KW %V, %j. Tag}
${alignr}${time %A}

Dabei wird zur Anzeige die Schriftart „Purisa“ verwendet.

Komplex

X mit wBar, urxvt und Conky

Neben einigen Systeminformationen werden Netzwerk-Traffic, CPU-Auslastung, die Plattenbelegung und die Anzahl der Prozesse angezeigt. Zusätzlich werden auch Informationen über den Arbeitsspeicher und die swap-Auslastung dargestellt.

Die zu Grunde liegende Konfigurationsdatei kann unter folgendem Link heruntergeladen werden:

Datei:Conky komplex.txt

Fehlerbehebung

Unter gewissen Konfigurationen kann es sein, dass Conkys Standard-Darstellung nicht richtig funktioniert. Aus diesem Grunde kann man mit den Conky-Optionen zur Konfiguration eines eigenständigen Fensters die Standard-Konfiguration ohne eigenständiges Fenster nachbilden.

own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

Unter Gnome kann stattdessen schon folgende Konfiguration Abhilfe schaffen:

own_window yes
own_window_type override

Nun sollte Conky eigentlich richtig dargestellt werden. Lediglich das Menü des Fenstermanagers, das bei einem Klick auf den Desktop angezeigt werden sollte, wird bei dieser Konfiguration dort, wo sich das Conky-Fenster befindet, nicht angezeigt, auch eventuell dort vorhandene Icons sind dann hinter dem Conky-Fenster verborgen.

Sollte es zu seltsamen Schrift-Effekten kommen, oder die Darstellung „flackern“, kann das daran liegen, dass nur der einfache Ausgabepuffer verwendet wird. Um den doppelten Ausgabepuffer zu verwenden, muss man dies im Konfigurationsabschnitt der Conky-Datei übergeben.

double_buffer yes

Hierdurch wird die alte Ausgabe erst entfernt, wenn die neue Ausgabe fertig-gerendert wurde, was dann in einer nahtlosen Ersetzung mündet.

Damit conky unter Gnome+Compiz im Hintergrund bleibt muss nautilus den Desktop zeichnen:

 /apps/nautilus/preferences/show_desktop = true 

Desktopsymbole liegen dann aber immer noch hinter conky...

Weblinks