Des K(aiser)s neue Kleider

KDE Themes Teil 3++

01.01.2001
Dass KDE die Fähigkeit besitzt, recht schnell mittels sogenannter Themes sein Äußeres zu ändern, dürfte inzwischen hinreichend bekannt sein. Diese Serie beschreibt, wie man eigene Themes erstellt.

Obwohl eigentlich nur drei Teile dieses kleinen Workshops geplant waren, sehe ich mich aus aktuellem Anlass genötigt, einen vierten nachzuschieben. Die Notation 3++ ist also durchaus zutreffend. Dieser nun wirklich letzte Teil setzt dort an, wo der dritte mit manueller Arbeit abgeschreckt hat. Er beschreibt nämlich, wie man Icon-Themes von KDE 1.1.2 auf KDE 2 portieren kann, ohne alle Icons von Hand ändern zu müssen.

Icons maschinell portieren

Es hat sich einiges getan im Hause KDE [1]. Die neue Version verwendet nun anstelle von .xpm- standardmäßig .png-Dateien für die Icons und speichert diese nicht mehr plump in nur einem Verzeichnis, sondern in mehreren mit jeweils fünf Unterverzeichnissen. Soll nun ein Icon-Set via Dialog geändert werden können (wie das geht, beschreibe ich später), müssen die Icons bereits klassifiziert vorliegen.

Als erstes erzeugen wir uns dazu mit

mkdir eclipse2

ein Verzeichnis mit dem Namen des Icon-Themes. Danach legen wir in diesem Verzeichnis Unterverzeichnisse an, deren Namen die Größe der Icons widerspiegeln. KDE 2 hat standardmäßig Icons der Größen 16x16, 22x22, 32x32 und 48x48. Da unsere Icons die Größe 32x32 besitzen und das Vergrößern unschön aussieht (vgl. Abbildung 1 und Abbildung 2), erzeugen wir nur die Verzeichnisse für Icons dieser bzw. geringerer Größe.

mkdir eclipse2/16x16
mkdir eclipse2/22x22
mkdir eclipse2/32x32
Abbildung 1: Icon der Größe 32x32
Abbildung 2: Icon der Größe 32x32 auf 48x48 vergrößert

In diesen Unterverzeichnissen sind nun weitere Unterverzeichnisse anzulegen, welche die Icons nach ihrer Verwendung klassifizieren. Die fünf Klassen sind:

  • actions (Aktionen)
  • apps (Programme)
  • devices (Geräte)
  • filesystems (Dateisysteme)
  • mimetypes (Dateitypen)Lange Rede, kurzer Sinn. Hier die Befehle:
mkdir eclipse2/GRÖßE/actions
mkdir eclipse2/GRÖßE/apps
mkdir eclipse2/GRÖßE/devices
mkdir eclipse2/GRÖßE/filesystems
mkdir eclipse2/GRÖßE/mimetypes

Nun benötigen wir zum Wandeln unserer .xpm-Dateien in .png-Dateien noch ein temporäres Verzeichnis. Dieses erzeugen wir mit

mkdir xpm2png_temp

(Der Verzeichnisname ist hierbei natürlich frei wählbar).

Damit ist das Grundgerüst des Icon-Themes fertig. Als nächstes kopieren wir mit

copy ~/eclipse/*.xpm xpm2png_temp

die alten Dateien in das temporäre Verzeichnis und wechseln mit

cd xpm2png_temp

in dieses. Das eigentliche Konvertieren funktioniert schon fast lächerlich einfach. Wir schreiben uns dazu einfach mit unserem Lieblingseditor ein kleines Skript namens convert_it (vgl. Listing 1), geben dieses mit

chmod +x convert_it

zum Ausführen frei und rufen es mit

./convert_it *.xpm

auf. Nach kurzer Zeit sind alle .xpm-Dateien in .png's gewandelt.

Listing 1

Skript zum Konvertieren von

.xpm

- in

.png

-Dateien

# convert_it
 for XPM_FILE in "$@";
 do
         PNG_FILE=$(basename $XPM_FILE .xpm)
         convert "$XPM_FILE" "$PNG_FILE".png;
 done

Das Einordnen der Dateien können wir ebenfalls einem Skript (vgl. Listing 2) überlassen. Dieses holt sich die notwendigen Informationen aus dem Standard-Icon-Verzeichnis von KDE 2 und ordnet unsere Icons ein. Voraussetzung dafür ist, daß wir uns dabei immer noch in dem temporären Verzeichnis befinden. An dieser Stelle muss beachtet werden, dass sich einige Dateinamen geändert haben. Durch Probieren habe ich die Unterschiede in Tabelle 1 gefunden, die vor Aufrufen des classify_it Skripts durch

mv alter_dateiname neuer_dateiname

zu beheben sind.

Nachdem Listing 2 abgetippt, in die Datei classify_it gespeichert und mittels

chmod +x classify_it

zum Ausführen freigegeben ist, wird das Skript mit

./classify_it *.png

gestartet. Es werden daraufhin die Namen der Dateien angezeigt, die keiner der oberen fünf Klassen zugeordnet werden konnten. Dies sind hauptsächlich Icons, die entweder zu einer Applikation gehören, die KDE 2 noch nicht bekannt ist oder tatsächlich nicht in diese Klassen passen (Fenster-Icons etc).

Tabelle 1: Unterschiedliche Dateinamen

Dateiname in KDE 1.1.2 Dateiname in KDE 2
applications_package.png package_applications.png
editors_package.png package_editors.png
games_package.png package_games.png
graphics_package.png package_graphics.png
multimedia_package.png package_multimedia.png
network_package.png package_network.png
settings_package.png package_settings.png
system_package.png package_system.png
utilities_package.png package_utilities.png
kfm_fulltrash.png trashcan_full.png
kfm_trash.png trashcan_empty.png

Listing 2

Skript zum Klassifizieren der Icons

#!/bin/sh
 #classify it
 DEFAULT_KDE_ICON_TREE=/opt/kde2/share/icons/hicolor
 THEME_PATH=../eclipse2
 for I in "$@";
 do
        convert $I -geometry 16x16 __TEMP_FILE16.png
        convert $I -geometry 22x22 __TEMP_FILE22.png
        DEFAULT_FILE="$DEFAULT_KDE_ICON_TREE/32x32/actions/$I"
        if test -f $DEFAULT_FILE; then
                cp $I $THEME_PATH/32x32/actions/ 2> /dev/null
                cp __TEMP_FILE16.png $THEME_PATH/16x16/actions/$I 2> /dev/null
                cp __TEMP_FILE22.png $THEME_PATH/22x22/actions/$I 2> /dev/null
        else
                DEFAULT_FILE="$DEFAULT_KDE_ICON_TREE/32x32/apps/$I"
                if test -f $DEFAULT_FILE; then
                        cp $I $THEME_PATH/32x32/apps/ 2> /dev/null
                                        cp __TEMP_FILE16.png $THEME_PATH/16x16/apps/$I 2> /dev/null
                                        cp __TEMP_FILE22.png $THEME_PATH/22x22/apps/$I 2> /dev/null
                else
                        DEFAULT_FILE="$DEFAULT_KDE_ICON_TREE/32x32/devices/$I"
                        if test -f $DEFAULT_FILE; then
                                cp $I $THEME_PATH/32x32/devices/ 2> /dev/null
                                cp __TEMP_FILE16.png $THEME_PATH/16x16/devices/$I 2> /dev/null
                                cp __TEMP_FILE22.png $THEME_PATH/22x22/devices/$I 2> /dev/null
                        else
                        DEFAULT_FILE="$DEFAULT_KDE_ICON_TREE/32x32/filesystems/$I"
                                        if test -f $DEFAULT_FILE; then
                                                cp $I $THEME_PATH/32x32/filesystems/ 2> /dev/null
                                                cp __TEMP_FILE16.png $THEME_PATH/16x16/filesystems/$I 2> /dev/null
                                                cp __TEMP_FILE22.png $THEME_PATH/22x22/filesystems/$I 2> /dev/null
                                else
                                        DEFAULT_FILE="$DEFAULT_KDE_ICON_TREE/32x32/mimetypes/$I"
                                        if test -f $DEFAULT_FILE; then
                                                cp $I $THEME_PATH/32x32/mimetypes/ 2> /dev/null
                                                cp __TEMP_FILE16.png $THEME_PATH/16x16/mimetypes/$I 2> /dev/null
                                                cp __TEMP_FILE22.png $THEME_PATH/22x22/mimetypse/$I 2> /dev/null
                                        else
                                                echo "Datei konnte nicht eingeordnet werden: $I";
                                        fi
                                fi
                        fi
                fi
        fi
 done

Das Skript in Listing 2 sorgt nebenbei auch dafür, dass die Icons, entsprechend verkleinert, auch in das 16x16'er und das 22x22'er Unterverzeichnis einsortiert werden. Ich weiß ja, dass die Skripte vielleicht nicht am elegantesten gelöst sind. Sie funktionieren aber ;-).

Damit haben wir unsere Icons in den notwendigen strukturierten Verzeichnisbaum. Bleibt nur noch, die Konfigurationsdatei index.desktop im eclipse2-Verzeichnis zu erstellen. Diese hat eine ähnliche Syntax wie unsere eclipse.themerc und ist in Listing 3 abgebildet. Da ich die Einträge durch Reengineering des "pinguins"-Theme [4] von Ilona Melis gewonnen habe und sie daher nicht auf "fundierten" Recherchen beruht, spekuliere ich hier nicht über die einzelnen Parameter, sondern überlasse es dem ambitionierten Leser, weiter nachzuforschen.

Listing 3

index.desktop

[KDE Icon Theme]
 Name=Eclipse
 Description=Eclipse Icons by Hagen Hoepfner
 DisplayDepth=32
 Example=exec
 Inherits=hicolor
 DesktopDefault=32
 DesktopSizes=16,22,32
 SmallDefault=16
 SmallSizes=16
 Directories=16x16/apps,16x16/actions,16x16/devices,16x16/filesystems,16x16/mimetypes,22x22/apps,22x22/actions,22x22/devices,22x22/filesystems,22x22/mimetypes,32x32/apps,32x32/actions,32x32/devices,32x32/filesystems,32x32/mimetypes,
 [16x16/apps]
 SIZE=16
 Context=Applications
 Type=Fixed
 [16x16/actions]
 SIZE=16
 Context=Actionsd
 Type=Fixed
 [16x16/devices]
 SIZE=16
 Context=Devices
 Type=Fixed
 [16x16/filesystems]
 SIZE=16
 Context=FileSystems
 Type=Fixed
 [16x16/mimetypes]
 SIZE=16
 Context=MimeTypes
 Type=Fixed
 [22x22/apps]
 SIZE=22
 Context=Applications
 Type=Fixed
 [22x22/actions]
 SIZE=22
 Context=Actionsd
 Type=Fixed
 [22x22/devices]
 SIZE=22
 Context=Devices
 Type=Fixed
 [22x22/filesystems]
 SIZE=22
 Context=FileSystems
 Type=Fixed
 [22x22/mimetypes]
 SIZE=22
 Context=MimeTypes
 Type=Fixed
 [32x32/apps]
 Size=32
 Context=Applications
 Type=Fixed
 [32x32/actions]
 Size=32
 Context=Actionsd
 Type=Fixed
 [32x32/devices]
 Size=32
 Context=Devices
 Type=Fixed
 [32x32/filesystems]
 Size=32
 Context=FileSystems
 Type=Fixed
 [32x32/mimetypes]
 Size=32
 Context=MimeTypes
 Type=Fixed

Verwenden der Icons

Nachdem die Icons nun konvertiert und eingeordnet sind, müssen sie an die richtige Stelle kopiert und danach aktiviert werden. Ersteres erfolgt über einen einfachen Kopierbefehl. Da wir uns ja noch im Theme-Verzeichnis befinden, müssen wir dieses zuerst mit

cd ..

verlassen. Danach befördern wir es mit

cp eclipse2/ ~/.kde2/share/icons/ -rf

dorthin, wo es hingehört.

Das Ändern des Icon-Themes funktioniert in KDE 2 dialogbasiert. Der entsprechende Dialog befindet sich im Startmenü unter Einstellungen/Erscheinungsbild/Design/Symbole und ist in Abbildung 3 dargestellt.

Abbildung 3: Icon-Themes unter KDE 2 ändern

Nachdem der Dialog aufgerufen wurde, wird das zu verwendende Icon-Theme durch einen Linksklick auf den Namen ausgewählt und durch einen Linksklick auf den OK-Knopf bestätig.

Infos

[1] KDE Homepage: http://www.kde.org

[2] Das Beispiel Icon-Theme "eclipse2": 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] pinguine Theme : http://www.ilicon.com

Der Autor

Hagen Höpfner ist Informatikstudent an der Otto-von-Guericke-Universität Magdeburg. In seiner Freizeit ist er begeisterter Vater und spielt Gitarre in einer Rockband (http://www.gutefrage.de).

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • KDE Themes Teil 3
    Dass KDE die Fähigkeit besitzt, recht schnell mittels sogenannter Themes sein Äußeres zu ändern, dürfte inzwischen hinreichend bekannt sein. Diese Serie beschreibt, wie man eigene Themes erstellt.
  • Neues Icon Theme für Gnome im Oxygen-Stil
    Das Breathe getaufte Icon Theme soll dem Ubuntu-Desktop ein frischeres Aussehen verpassen. Jetzt gibt es ein erstes Release.
  • KDE-Hintergrund mit SuperKaramba und Python aufwerten
    SuperKaramba sorgt dafür, dass sogar der KDE-Hintergrund etwas Nützliches tut. Was das ist, können Sie selbst programmieren – mit Python.
  • K-splitter
    Wer sagt, dass Klatsch und Tratsch in einer Linuxzeitschrift keinen Platz haben? K-splitter plaudert Monat für Monat aus dem KDE-Nähkastchen, posaunt Neuigkeiten aus der K-Welt aus und schaut hin und wieder neugierig hinter die Kulissen.
  • KDE Themes – Teil 1
    Dass KDE die Fähigkeit besitzt, recht schnell mittels sogenannter Themes sein Äußeres ändern zu können, dürfte inzwischen hinreichend bekannt sein. Diese Serie beschreibt, wie man eigene Themes erstellt. 
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...