Einführung

Mit conky kann man ganz einfach auf dem Desktop Informationen zum System anzeigen lassen. So zum Beispiel der Hostname, die CPU-Auslastung, Memoryverbrauch, Dateisysteme, abgespielte Musik, Netzwerkkonfigurationen und noch viel mehr. Konfiguriert wird conky in der Konfigurationsdatei ~/.conkyrc.

Meine Konfiguration

Ich habe im Internet viele conky-Konfigurationen gesehen und mir mit all diesen Ideen eine eigene Konfiguration geschrieben. Ich wollte folgende Informationen anzeigen lassen:

  • Systeminformationen: Hostname, Uptime, Datum und Uhrzeit, Akkuzustand
  • Prozessor und Prozesse: CPU-Auslastung und CPU-Load; TOP-Prozesse
  • Arbeitsspeicher und SWAP: Auslastung von RAM und SWAP
  • Dateisysteme: Auslastung der Dateisysteme
  • Musik: Informationen zur zurzeit abgespielter Musik (Ich verwende MPD für meine Musik)
  • Netzwerk: Verbundene Netzwerke und ihre Konfiguration

Eine andere Anforderung war, das ganze dynamisch zu gestalten: Falls ich zum Beispiel zur Zeit eth0 nicht verwende, sollen auch keine Informationen dazu angezeigt werden.

Mein Resultat sieht so aus:

Installation

Unter Arch Linux installiert man conky mit pacman:

$ sudo pacman -S conky

Konfiguration

Die Konfiguration von conky ist ziemlich einfach. Im Internet gibt es viele Beispiele und die Manpage ( man conky) erklärt alle Optionen sehr gut. Deshalb erkläre ich nicht alle Optionen.

Nützlich war die Definition von Farben. So kann man alle an einem zentralen Ort ändern:

# Farben (1 = Text; 2 = Data; 3 = Überschrift)
color1 AAAAAA
color2 FFFFFF
color3 999999

Die Schriftart habe ich wie folgt auf Terminus festgelegt:

# Schrift
use_spacer none
use_xft yes
xftfont Terminus:pixelsize=11
draw_shades no
uppercase no

Sehr nützlich sind auch die Templates. Ich erstellte z. B. ein Template für die Filesysteme, da das jedes mal die selbe Schreibarbeit wäre:

template3 ${color1}\1: ${color2}${fs_used \1}/${fs_size \1} (${fs_used_perc \1}%) ${fs_bar \1}

Jetzt kann ich ganz einfach mit dem erstellten Template ein Filesystem mit meinen definierten Optionen darstellen:

${template3 /var}

Mit exec kann man Befehle ausführen und die Ausgabe in conky einbinden:

${color1}Volume Master: ${color2}${exec amixer get Master | awk '/%/{ gsub(/\[|\]/,""); print $4 }'}

Dieser Befehl stellt die Lautstärke vom Master Kanal dar.

Um zu prüfen, ob ein Netzwerk-Interface aktiv ist, kann man if_up interface verwenden:

${if_up eth0}
# Code ...
${endif}`

Konfigurationsdatei

Das ist meine Konfigurationsdatei, welche das oben gezeigte Ergebnis darstellt:

########################################################################
#
# ~/.conkyrc
# Konfigurationsdatei für Conky
#
# 2011-11-19; Emanuel Duss; Erste Version
# 2012-04-21; Emanuel Duss; Mehrere Zeilen
# 2012-05-01; Emanuel Duss; Farbdefinitionen und Templates
# 2013-02-07; Emanuel Duss; Komplettüberarbeitung
#
########################################################################

########################################################################
# Variabeln

########################################################################
# Globale Optionen

# Ausrichtung und Grösse
alignment top_left
gap_x 10
gap_y 10
maximum_width 320
# minimum_size 1280 50

# Allgemein
update_interval 1.0
#double_buffer no
draw_outline no
border_width 0
default_bar_size 0 5

# Fenster
own_window no
own_window_type override
own_window_colour 000000
own_window_transparent no
own_window_hints undecorated below sticky skip_taskbar skip_pager

# Spezifische Einstellungen
cpu_avg_samples 2
net_avg_samples 2
no_buffers yes
# Schrift
use_spacer none
use_xft yes
xftfont Terminus:pixelsize=11
draw_shades no
uppercase no

# Farben (1 = Text; 2 = Data; 3 = Überschrift)
color1 AAAAAA
color2 FFFFFF
color3 999999

# Vorlagen (1 = Simple; 3 = Filesystem; 5 = Überschrift)
template1 ${color1}\1 ${color2}\2
template2 ${color1}\1 ${color2}\2/\3 (\4%)
template3 ${color1}\1: ${color2}${fs_used \1}/${fs_size \1} (${fs_used_perc \1}%) ${fs_bar \1}
template5 ${color3}\1 ${hr 2}

########################################################################
# MPD - Music Player Daemon
mpd_host 127.0.0.1
mpd_port 6600

########################################################################
# Output
TEXT
${template5 SYSTEM\ INFORMATION}
${color1}Hostname: ${color2}$nodename \
 | ${color1}Kernel: ${color2}$kernel
${color1}Time: ${color2}${time %Y-%m-%d %H:%M} \
 | ${color1}Uptime: ${color2}$uptime_short
${color1}Battery: ${color2}$battery $battery_time ${battery_bar 5}
${template5 CPU\ AND\ PROCESSES}
${color1}Usage: ${color2}${cpu}% \
 | ${color1}Freq: ${color2}$freq_g GHz \
| ${color1}Load: ${color2}$loadavg
${cpubar cpu0 5} ${color #cc0033}$color
${cpugraph cpu0 20 000000 CFCFCF}
${color1}Processes: ${color2}$processes \
 | ${color1}Running: ${color2}$running_processes
${color white}NAME              PID    CPU     MEM
${color #FFFFFF}${top name 1}${top pid 1} ${top cpu 1}  ${top mem 1}
${color #EFEFEF}${top name 2}${top pid 2} ${top cpu 2}  ${top mem 2}
${color #DFDFDF}${top name 3}${top pid 3} ${top cpu 3}  ${top mem 3}
${color #CFCFCF}${top name 4}${top pid 4} ${top cpu 4}  ${top mem 4}
${color #BFBFBF}${top name 5}${top pid 5} ${top cpu 5}  ${top mem 5}
${template5 MEMORY\ AND\ SWAP}
${color1}RAM:  ${color2}$mem/$memmax ($memperc%) ${membar 5}
${color1}SWAP: ${color2}$swap/$swapmax ($swapperc%) ${swapbar 5}
${template5 FILESYSTEMS}
${template3 /}
${template3 /home}
${template3 /var}
${template3 /tmp}
${template5 MUSIC\ PLAYER\ DAEMON}
${color1}Volume Master: ${color2}${exec amixer get Master | awk '/%/{ gsub(/\[|\]/,""); print $4 }'} \
 | ${color1}PCM: ${color2} ${exec amixer get PCM | awk '/%/{ gsub(/\[|\]/,""); print $5; exit }'} \
 | ${color1}Speaker: ${color2} ${exec amixer get Speaker | awk '/%/{ gsub(/\[|\]/,""); print $5; exit }'}
${if_mpd_playing}
${template1 MPD: $mpd_status} \
| $mpd_elapsed / $mpd_length ($mpd_percent%) $mpd_bar
${template1 Song: $mpd_artist\ -\ $mpd_title\ ($mpd_album)}
${template1 Volume: $mpd_vol%} \
| ${template1 Repeat: $mpd_repeat} \
| ${template1 Random: $mpd_random} \
${else}
${template1 MPD: Stopped}\
${endif}
${template5 NETWORK}
${if_gw}\
${template1 Network: Online}
${template1 DGW: $gw_ip\ ($gw_iface)} \
| ${template1 Nameserver: $nameserver}
\
${if_up usb0}
${color1}Interface:${color2} usb0 \
| ${color1}IP-Address:${color2} ${addr usb0}
${color1}Speed:${color2} Down: ${downspeedf usb0} / Up: ${upspeedf usb0}
${downspeedgraph usb0 20,150 000000 FFFFFF} ${alignr}${color #CFCFCF}\
${upspeedgraph usb0 20,150 000000 CFCFCF}
${endif}\
\
${if_up eth0}
${color1}Interface:${color2} eth0 \
| ${color1}IP-Address:${color2} ${addr eth0}
${color1}Speed:${color2} Down: ${downspeedf eth0} / Up: ${upspeedf eth0}
${downspeedgraph eth0 20,150 000000 FFFFFF} ${alignr}${color #CFCFCF}\
${upspeedgraph eth0 20,150 000000 CFCFCF}
${endif}\
\
${if_up wlan0}
${template1 Interface: wlan0} \
| ${color1}IP-Address:${color2} ${addr wlan0}
${color1}ESSID:${color2} ${wireless_essid wlan0} \
| ${color1}Quality:${color2} ${wireless_link_qual_perc wlan0}%
${color1}Speed:${color2} Down: ${downspeedf wlan0} / Up: ${upspeedf wlan0}
${downspeedgraph wlan0 20,150 000000 FFFFFF} ${alignr}${color #CFCFCF}\
${upspeedgraph wlan0 20,150 000000 CFCFCF}
${endif} \
${else}\
${template1 Network: Offline}
${endif}\
# EOF

Die aktuellste Version davon gibt es auf GitHub in meinem Configs Repository: .conkyrc.