Obwohl es sehr wahrscheinlich ist, dass noch vor dem Erscheinen dieses letzten Teils bereits die erste stabile Version des Desktop Environments KDE 2 [1] erscheinen wird, soll dieser Artikel schon die Trilogie zu KDE Themes abschließen. Am Ende des Artikels werde ich übrigens noch kurz darauf eingehen, wie Themes für KDE 1.1.2 auch unter KDE 2 genutzt werden können. Vorher beschäftigen wir uns aber erst einmal mit den letzten drei Punkten unserer ToDo-Liste.
eclipse.themerc(siehe Listing 1).
Wie im zweiten Teil weise ich an dieser Stelle erneut auf die zentrale Bedeutung des KDE-Designmanagers kthememgr [5] und der Datei
eclipse.themerchin. Dieses Wissen ist grundlegend für die komplette Artikelserie und somit auch für die folgenden Arbeitsschritte. Sollten Ihre Kenntnisse um diese zentralen Punkte bereits verblasst sein, empfehle ich Ihnen, vor dem Weiterlesen dieses Artikels die beiden vorherigen Teile noch einmal kurz durchzuarbeiten.
Um in unsere Themes Systemkläge einbauen zu können, ist ein grundlegendes theoretisches Vorwissen zum Thema Soundverarbeitung hilfreich. Akkustische Signale dienen der Untermalung von Ereignissen auf dem Desktop, wie z.B. dem Schließen eines Fensters. KDE benutzt hierfür Audiodateien im .wav-Format. Leider unterscheiden sich teilweise Dateien aus der Windows-Welt von denen (anderer) Betriebssysteme. Wav-Dateien unter Windows können nämlich eine umgekehrte Bitordnung aufweisen. Will man solche Dateien unter Linux nutzen, muss man sie mittels
sox windoofdatei.wav linuxdatei.wavwandeln. Sox ist übrigens unter [7] zu finden.
Die Gewinnung von Audiodateien kann, wie sollte es anders sein, von unterschiedlichsten Quellen erfolgen (Audio-CD, Selbsteinspielen etc.). Zur Aufnahme der Klänge kann das KDE-Tool krecord [8] (siehe Abbildung 1) genutzt werden. Will man mit diesem Programm Klänge aufzeichnen, geht man folgendermaßen vor:
Das Rohmaterial, welches wir nun aufgenommen haben, kann und muss nachbearbeitet werden. Dazu steht das KDE-Tool kwave [9] (siehe Abbildung 2) zur Verfügung. Probieren geht ja bekanntlich über studieren. Daher empfehle ich Ihnen an dieser Stelle, mit diesem Tool ein bisschen herumzuexperimentieren.
Nachdem unsere Klänge nun ggf. nachbearbeitet sind, müssen wir sie in unsere Konfigurationsdatei eintragen (vgl. Zeilen 064 bis 094 in Listing 1). Die einzelnen Parameter des Abschnitts [Sounds] sind in Tabelle 1 zu finden.
Tabelle 1: Sounds
| Abschnittsbezeichner | [Sounds] |
| Aktivieren der Systemklänge | ConfigInstallCmd=enableSounds |
| Starten des Audioservers | ConfigActivateCmd=kwmcom syssnd_restart |
| Audiodatei für das Aktivieren des ersten virtuellen Desktops | Desktop1=Dateiname |
| Audiodatei für das Aktivieren des zweiten virtuellen Desktops | Desktop2=Dateiname |
| Audiodatei für das Aktivieren des dritten virtuellen Desktops | Desktop3=Dateiname |
| Audiodatei für das Aktivieren des vierten virtuellen Desktops | Desktop4=Dateiname |
| Audiodatei für das Aktivieren des fünften virtuellen Desktops | Desktop5=Dateiname |
| Audiodatei für das Aktivieren des sechsten virtuellen Desktops | Desktop6=Dateiname |
| Audiodatei für das Aktivieren des siebten virtuellen Desktops | Desktop7=Dateiname |
| Audiodatei für das Aktivieren des achten virtuellen Desktops | Desktop8=Dateiname |
| Audiodatei für das Abmelden von KDE | Logout=Dateiname |
| Audiodatei für die Meldung vor dem Abmelden | LogoutMessage=Dateiname |
| Audiodatei für das Starten von KDE | Startup=Dateiname |
| Audiodatei für das Aktivieren eines Fensters | WindowActivate=Dateiname |
| Audiodatei für das Schließen eines Fensters | WindowClose=Dateiname |
| Audiodatei für das Wiedereinblenden eines Fensters | WindowDeIconify=Dateiname |
| Audiodatei für das Ausblenden eines Fensters | WindowIconify=Dateiname |
| Audiodatei für das Maximieren eines Fensters | WindowMaximize=Dateiname |
| Audiodatei für das Ende beim Verschieben eines Fensters | WindowMoveEnd=Dateiname |
| Audiodatei für den Anfang beim Verschieben eines Fensters | WindowMoveStart=Dateiname |
| Audiodatei für das Öffnen eines Fensters | WindowOpen=Dateiname |
| Audiodatei für das Ende beim Ändern der Größe eines Fensters | WindowResizeEnd=Dateiname |
| Audiodatei für den Anfang beim Ändern der Größe eines Fensters | WindowResizeStart=Dateiname |
| Audiodatei für das Einrollen eines Fensters | WindowShadeDown=Dateiname |
| Audiodatei für das Ausrollen eines Fensters | WindowShadeUp=Dateiname |
| Audiodatei für das Anheften eines Fensters | WindowSticky=Dateiname |
| Audiodatei für das Beenden eines Dialogfensters | WindowTransDelete=Dateiname |
| Audiodatei für das Öffnen eines Dialogfensters | WindowTransNew=Dateiname |
| Audiodatei für das Wiederherstellen der Originalgröße eines Fensters | WindowUnMaximize=Dateiname |
| Audiodatei für das Aufheben der Haftwirkung eines Fensters | WindowUnSticky=Dateiname |
Die Systemklänge des Beispiel-Themes habe ich übrigens via Gitarre direkt eingespielt. Für Interessierte: Der Accord, der beim Aufrufen des Abmelde-Dialoges erklingt, ist ein Dm9 (in Gitarrenschreibweise (x x 7 7 6 0)).
Manche Dinge gehen einfacher, als man denkt. So bietet KDE eine gute dialoggesteuerte Farbauswahl an. Abbildung 3 zeigt diesen Dialog. Er ist im Startmenü unter Einstellungen/Arbeitsfläche/Farben zu finden.
Im oberen Teil kann das Element der Oberfläche ausgewählt werden, dessen Farbe man ändern will. Dazu wählt man diese in einem Dialog aus, welcher erscheint, nachdem man auf den Knopf mit der aktuellen Farbe geklickt hat. Sind alle Farben eingestellt, kann man über den Knopf Hinzufügen das eigene Farbschema abspeichern. Wie Abbildung 4 zeigt, erscheint durch einen Klick auf diesen Knopf ein Dialog, in den man den Namen des Farbschemas eingeben kann. Durch Klicken auf den OK-Knopf wird das Farbschema gespeichert und der kleine Namensdialog wird geschlossen. Zum Schluss noch ein Klick auf den OK-Knopf des Farbschema-Dialogs und unser Farbschema wird übernommen.
Wie bekommen wir nun dieses Farbschema in unsere Datei eclipse.themerc (vgl.: Zeilen 095-109 in Listing 1)? Dies geht ganz einfach. In dem Verzeichnis, in dem die Farbschema-Informationen gespeichert werden (~/.kde/share/apps/kdisplay/color-schemes), befindet sich die Datei eclipse.kcsrc. Den Inhalt dieser Datei (vgl. Listing 2) hängen wir einfach an unsere eclipse.themerc an. Ich habe in Listing 1 den Kommentar (Zeile mit dem Zeichen #am Anfang) gelöscht.
Der Übersicht halber beschreibt Tabelle 2 die Einträge des Abschnitts [Colors].
Tabelle 2: Colors
| Abschnittsbezeichner | [Colors] |
| Schriftfarbe für normalen Text | foreground=Farbe |
| Schriftfarbe für ausgewählten Text | selectForeground=Farbe |
| Zweite Farbe für die Titelleiste von aktiven Fenstern (Farbverlauf) | activeBlend=Farbe |
| Farbe für Textauswahl | selectBackground=Farbe |
| Farbe für die Titelleiste von inaktiven Fenstern | inactiveBackground=Farbe |
| Name des Farbschemas | name=eclipse |
| Kontrast | contrast=Kontrastwert |
| Hintergrundfarbe | background=Farbe |
| Farbe für die Titelleiste von aktiven Fenstern | activeBackground=Farbe |
| Zweite Farbe für die Titelleiste von inaktiven Fenstern (Farbverlauf) | inactiveBlend=Farbe |
| Schriftfarbe für Text in inaktiven Fenstern | inactiveForeground=Farbe |
| Schriftfarbe des angeklickten Menüpunktes | activeForeground=Farbe |
| Schriftfarbe von Menüeinträgen | windowForeground=Farbe |
| Farbe von Menüs | windowBackground=Farbe |
Der einfachste Weg, ein mit diesem Artikel konsistentes Theme zu erzeugen, besteht darin, die paar Zeilen aus Listing 1 von Hand in die eclipse.themerc zu schreiben.
Wäre KDE "nur" ein Windowmanager und würde sich somit "nur" um die Darstellung von Fenstern kümmern, wäre dieser letzte Punkt überflüssig. Aber KDE ist ja bekanntlich mehr als nur ein Windowmanager. Es ist darüber hinaus nämlich auch Grundlage für ein Sammelsurium von Programmen für fast jeden Anwendungsbereich. Speziell für das KDE erstellte Programme arbeiten in der Regel mittels Drag-and-Drop besser miteinander zusammen als man dies von normalen X11-Anwendungen gewohnt ist. Ein Klick auf den Menüeintrag
Persönliches Verzeichnisim Startmenü öffnet ein Fenster, mit dem man u. a. sein Dateisystem durchsuchen kann. Dieses Fenster wollen wir nun an unser Theme anpassen. Tabelle 3 enthät die notwendigen Informationen über mögliche Parameter.
Tabelle 3: File Manager
| Abschnittsbezeichner | [File Manager] |
| Hintergrunddatei | backgroundImage=Dateiname |
| Standardhintergrundfarbe für HTML-Ansicht | htmlBackground=Farbe |
| Standardschriftfarbe für HTML-Ansicht | htmlForeground=Farbe |
| Standardfarbe für Links in HTML-Ansicht | htmlLinks=Farbe |
| Standardfarbe für bereits besuchte Links in HTML-Ansicht | htmlFollowedLinks=Farbe |
Die entsprechenden Einträge in der eclipse.themerc sind ab Zeile 110 in Listing 1 zu finden. Die Abbildungen 5 und 6 verdeutlichen den Unterschied zwischen einem "ge-theme-ten" Dateibrowser und einem ohne spezielle Anpassungen.
Da ich im ersten Teilen dieser Trilogie bereits einiges zu Hintergrundbildern geschrieben habe, verweise ich Sie auf die dortigen Erläuterungen. Auch die Fragestellung, wie man auf einfache Weise an gewüschte Farbeinträge kommt, haben wir bereits ausführlich behandelt.
An dieser Stelle endet die eigentliche Trilogie zur Erstellung eigener KDE Themes. Abbildung 7 zeigt uns noch einmal, wie unser KDE mit dem Eclipse-Theme aussieht.
KDE.THEMES.ORG [3] ist eine Internetsammlung (siehe Abbildung 8) von KDE-Themes.
Ich hoffe, dass jetzt keiner von Ihnen auf die Idee kommt, mein Eclipse-Theme noch einmal einzutragen. Es ist nämlich bereits unter [2] zu finden. Da diese Artikelserie aber hoffentlich den Grundstein für die Entwicklung von vielen tausend Themes gelegt hat ;-) , will ich Ihnen diesen letzten Punkt nicht vorenthalten. Man geht dabei folgendermaßen vor:
Info: Bildschirmfoto schießen
Zum Schießen von Bildschirmfotos kann man, wie sollte es anders sein, z. B. "The Gimp" verwenden. Dabei geht man folgendemaßen vor:
Leider ist kthememgr nicht in der Lage, Themes sauber zu löschen. Daher müssen die einzelnen Bildchen vor dem Wechseln des Themes von Hand gelöscht werden. Dies geschieht durch die drei Befehle:
rm ~/.kde/share/icons/* -rf rm ~/.kde/share/apps/kwm/pics/* rm ~/.kde/share/apps/kpanel/pics/* -rf
Keine Angst, der Designmanager behält eine Kopie der Dateien, so dass sie beim erneuten Verwenden des Themes wieder vorhanden sind.
Wenn es zum Zeitpunkt der Veröffentlichung dieser Ausgabe des LinuxUsers noch nicht bereits geschehen ist, so wird es in absehbarer Zeit doch passieren: KDE 2 wird KDE 1.1.2 ablösen. Beim Schreiben dieses Artikels nutze ich bereits die recht stabile KDE Version 1.92 (Beta 3). Diese Version unterstüzt jetzt auch Widget-Themes, wie sie von dem GTK-Toolkit bereits bekannt sein dürften. Da diese Widget-Unterstützung in KDE 1.1.2 noch nicht vorhanden war und die sich daraus ergebenden Möglichkeiten enorm sind, lassen wir diesen Punkt erst einmal außen vor. Der Vollständigkeit halber sei aber erwähnt, dass nähere Informationen zu KDE Widget-Themes unter [6] zu finden sind.
Mir sind weiterhin leider noch keine Tools bekannt, wie man komplette Themes einfach übernehmen kann. Daher gehe ich auf den manuellen Weg ein. Weiterhin ist es mir (noch) nicht gelungen, Fensterrahmen, -knöpfe, Systemklänge und den KFM anzupassen.
Um unser Hintergrundbild in KDE 2 einzubinden, geht man wie folgt vor:
Abbildung 17 zeigt, wie KDE 1.92 aussieht, wenn die soeben besprochenen Einstellungen vorgenommen wurden und KDE neu gestartet wurde.
Ich habe Ihnen einen kleinen Einblick in die Gestaltung Ihres KDEs gegeben und hoffe, dass die Tipps und Tricks Ihnen bei der selbständigen Entwicklung eigener Themes behilflich sind. Wer weiß, vielleicht finden diese Hinweise ja auch Verwendung bei der Erstellung von Themes für andere Desktop-Environments bzw. Windowmanager.
Hiermit schließe ich nun unseren Workshop und bitte Sie, mir Anregungen, Hinweise, Lob und/oder Kritik unter mailto:hoepfner@cs.uni-magdeburg.de mitzuteilen.
Listing 1
eclipse.themerc
001 [General] 002 name=eclipse 003 author=Hagen Hoepfner 004 email=Hagen.Hoepfner@gmx.de 005 description=A dark sun for KDE (made with gimp and its Firetext-plugin) 006 version=0.3 007 [Display] 008 CommonDesktop=true 009 Wallpaper0=bg.jpg 010 WallpaperMode0=Scaled 011 [Panel] 012 background=panel.xpm 013 [Icons] 014 PanelGo=go.xpm:mini-go.xpm 015 PanelExit=exit.xpm 016 PanelKey=key.xpm 017 Home=kfm_home.xpm 018 Trash=kfm_trash.xpm 019 TrashFull=kfm_fulltrash.xpm 020 [Extra Icons] 021 Extra1=kfind.xpm 022 Extra2=image.xpm 023 Extra3=sound.xpm 024 Extra4=aktion.xpm 025 Extra5=kwrite.xpm 026 Extra6=folder.xpm 027 Extra7=kcontrol.xpm 028 Extra8=kdehelp.xpm 029 Extra9=kmail.xpm 030 Extra10=kfm_refresh.xpm 031 Extra11=folder_open.xpm 032 Extra12=3floppy_mount.xpm 033 Extra13=3floppy_unmount.xpm 034 Extra14=5floppy_mount.xpm 035 Extra15=5floppy_unmount.xpm 036 Extra16=core.xpm 037 Extra17=document.xpm 038 Extra18=input_devices_settings.xpm 039 Extra19=kab.xpm 040 Extra20=kvt.xpm 041 [Window Titlebar] 042 CloseButton=close.xpm 043 MaximizeButton=maximize.xpm 044 MaximizeDownButton=maximizedown.xpm 045 MinimizeButton=iconify.xpm 046 StickyButton=pinup.xpm 047 StickyDownButton=pindown.xpm 048 [Window Button Layout] 049 ButtonA=Menu 050 ButtonB=Sticky 051 ButtonC=Off 052 ButtonD=Close 053 ButtonE=Maximize 054 ButtonF=Iconify 055 [Window Border] 056 shapePixmapTop=wm_top.xpm 057 shapePixmapBottom=wm_bottom.xpm 058 shapePixmapLeft=wm_left.xpm 059 shapePixmapRight=wm_right.xpm 060 shapePixmapTopLeft=wm_topleft.xpm 061 shapePixmapTopRight=wm_topright.xpm 062 shapePixmapBottomLeft=wm_bottomleft.xpm 063 shapePixmapBottomRight=wm_bottomright.xpm 064 [Sounds] 065 ConfigInstallCmd=enableSounds 066 ConfigActivateCmd=kwmcom syssnd_restart 067 Desktop1=eclipse.switchdesk.wav 068 Desktop2=eclipse.switchdesk.wav 069 Desktop3=eclipse.switchdesk.wav 070 Desktop4=eclipse.switchdesk.wav 071 Desktop5=eclipse.switchdesk.wav 072 Desktop6=eclipse.switchdesk.wav 073 Desktop7=eclipse.switchdesk.wav 074 Desktop8=eclipse.switchdesk.wav 075 Logout= 076 LogoutMessage=eclipse.LogoutMessage.wav 077 Startup=eclipse.Startup.wav 078 WindowActivate= 079 WindowClose=eclipse.WindowClose.wav 080 WindowDeIconify=eclipse.WindowDeIconify.wav 081 WindowIconify=eclipse.WindowIconify.wav 082 WindowMaximize=eclipse.WindowMaximize.wav 083 WindowMoveEnd= 084 WindowMoveStart= 085 WindowOpen=eclipse.WindowOpen.wav 086 WindowResizeEnd= 087 WindowResizeStart= 088 WindowShadeDown=eclipse.WindowShadeDown.wav 089 WindowShadeUp=eclipse.WindowShadeUp.wav 090 WindowSticky=eclipse.WindowSticky.wav 091 WindowTransDelete= 092 WindowTransNew= 093 WindowUnMaximize=eclipse.WindowUnMaximize.wav 094 WindowUnSticky=eclipse.WindowUnSticky.wav 095 [Colors] 096 foreground=0,0,0 097 selectForeground=255,255,255 098 activeBlend=0,0,0 099 selectBackground=164,151,132 100 inactiveBackground=0,0,0 101 name=eclipse 102 contrast=5 103 background=180,167,145 104 activeBackground=122,112,94 105 inactiveBlend=213,197,172 106 inactiveForeground=175,180,159 107 activeForeground=255,255,255 108 windowForeground=0,0,0 109 windowBackground=255,255,255 110 [File Manager] 111 backgroundImage=eclipse_konsole.jpg 112 htmlBackground=239,226,196 113 htmlForeground=0,0,0 114 htmlLinks=0,0,0 115 htmlFollowedLinks=122,112,94
Listing 2
eclipse.kcsrc
# KDE Config File [Color Scheme] foreground=0,0,0 selectForeground=255,255,255 activeBlend=0,0,0 selectBackground=164,151,132 inactiveBackground=0,0,0 name=eclipse contrast=5 background=180,167,145 activeBackground=122,112,94 inactiveBlend=213,197,172 inactiveForeground=175,180,159 activeForeground=255,255,255 windowForeground=0,0,0 windowBackground=255,255,255
Glossar
Theme
Unter einem Theme versteht man ein Sammelsurium verschiedener audio-visueller Elemente, welche sich auf ein gemeinsames inhaltliches Thema beziehen. Beispielsweise kann man als Fan einer Rockgruppe ein digitalisiertes Foto seiner Lieblingsband als Hintergrundbild mit Teilen ihrer Musikstücke als akkustische Signale zu einem Theme zusammenfassen.
Desktop Environment
Unter Linux existieren mehrere grafische Desktop-Umgebungen (die bekanntesten sind CDE, KDE, GNOME). Im Gegensatz zu reinen Windowmanagern, mit denen Desktopumgebungen fälschlicher Weise oft gleichgesetzt werden, sorgen diese in der Rwegel zusätzliche Funktionalität wie Drag & Drop, Session-Management und eine Panel-Leiste bereit.
.wav-Format
WAV steht für Wave (deutsch: Welle). Es ist ein unkomprimiertes und damit recht speicherplatzhungriges Format zum Speichern von Audioinformationen.
Kommentar
Kommentare dienen ausschließlich zur Information derjenigen, die sich genauer mit dem Inhalt einer Datei auseinandersetzen müssen. Sie werden durch bestimmte Zeichen eingeleitet und bei der Ausführung bzw. Verarbeitung dieser Datei ignoriert. Unter Linux/Unix wird dazu in der Regel die Raute (#) verwendet.
KFM
KFM steht für K File Manager und ist in KDE 1.x der Standard-Dateimanager.
Drag-and-Drop
Mit Drag-and-Drop wird das Ziehen eines Icon-Objekts von einer Anwendung in eine andere bezeichnet. Bei diesem Vorgang wird der Ziel-Anwendung eine Datei übergeben, welche von dieser dann z. B. automatisch geöffnet werden kann.
TAR-Archiv
tar ist ein Programm, welches ursprünglich dazu gedacht war, Datensicherungen auf ein Bandlaufwerk durchzuführen. Es bietet darüber hinaus aber auch die Möglichkeit, mehrere Dateien in einer einzigen zusammengefasst zu archivieren. Bei diesem Vorgang wird keine Datenkompression durchgeführt. Um Platz zu sparen, werden solche Archive gewöhnlich noch mit gzipoder b2zipkomprimiert.
Widget
Mit Widgets bezeichnet man alle grafischen Elemente, die in Programmen vorkommen, also z. B. Knöpfe, Eingabefelder usw.
GTK
Das Gimp Toolkit, ursprünglich im Rahmen der Entwicklung unseres ach so geliebten Bildbearbeitungsprogramms Gimp entstanden, ist eine Art Programmbibliothek, die vorgefertigte Programmteile und Programmierschablonen enthält. GTK wurde stark erweitert (GTK+) und bildet, ähnlich wie Qt in der KDE-Welt, die Grundlage für GNOME-Anwendungen.
Infos
[1] KDE Homepage: http://www.kde.org
[2] Das Beispiel Theme "eclipse": http://kde.themes.org/themes.phtml?cattype=inc&disptype=trad&numthemes=0&boxhide=1&themetxt=eclipse
[3] KDE Themes Homepage: http://kde.themes.org
[4] The Gimp Homepage: http://www.gimp.org
[5] KDE Designmanager: ftp://ftp.kde.org/pub/kde/unstable/apps/themes/kthememanager-1.0.0-src.tar.gz
[6] Mosfet's widget theme HOWTO: http://www.mosfet.org/widgettheme-tutorial/
[7] sox Homepage: http://home.sprynet.com/~cbagwell/sox.html
[8] krecord Homepage: http://me.in-berlin.de/~kraxel/krecord.html
[9] kwave Homepage: http://fs.spinfo.uni-koeln.de/~kwave/