Zwar wird auf dieser MSDN-Seite in englischer Sprache der Aufbau einer Theme-Datei erläutert, doch wird eine korrekte Konfiguration dieser Datei nicht ersichtlich.
Mit diesem Tutorial möchte ich an dieser Stelle etwas Abhilfe schaffen.
Was ist zur Modifikation der Theme-Datei nötig?
Im Grunde benötigt man nicht mehr als einen einfachen Text-Editor.
Es sei an dieser Stelle allerdings noch gesagt, dass eine Modifikation innerhalb des Systemverzeichnisses auf Grund fehlender Berechtigungen nicht vorgenommen werden kann.
Was sind die einzelnen Bestandteile der Theme-Datei?
Im Folgenden möchte ich auf die Bestandteile der Theme-Datei näher eingehen und die einzelnen Code-Segmente etwas näher erläutern.
[Theme] DisplayName=My Current Theme BrandImage=c:\Fabrikam\brand.png
Dieser Bereich sollte sich praktisch selbst erklären. Durch den Wert "DisplayName" wird der Name des Designs in der Übersicht definiert. Durch den Wert "BrandImage" das eigene Design in der Übersicht mit einem eigenen Logo versehen werden. Hierbei muss auf den absoluten Pfad der Grafik verwiesen werden. Dafür empfiehlt sich die Verwendung einer PNG-Grafik.
; Computer [CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon] DefaultValue=%SystemRoot%\System32\imageres.dll,-109 ; Documents [CLSID\{59031A47-3F72-44A7-89C5-5595FE6B30EE}\DefaultIcon] DefaultValue=%SystemRoot%\System32\shell32.dll,-235 ; Network [CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\DefaultIcon] DefaultValue=%SystemRoot%\System32\imageres.dll,-25 ; Recycle Bin [CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon] Full=%SystemRoot%\System32\imageres.dll,-54 Empty=%SystemRoot%\System32\imageres.dll,-55
Mit diesen Werten können die Icons für die systemeigenen Shortcuts "Computer", "Dokumente", "Netzwerk", "Papierkorb" geändert werden. Auch hier muss auf die entsprechende Grafik verwiesen werden. Das Code-Beispiel verweist auf die Standard-Grafiken.
Dieser Eintrag folgt direkt auf den "[Theme]"-Eintrag.
[Control Panel\Colors] ActiveTitle=10 36 106 Background=166 202 240 Hilight=10 36 106 HilightText=255 255 255 TitleText=255 255 255 Window=255 255 255 WindowText=0 0 0 Scrollbar=212 208 200 InactiveTitle=128 128 128 Menu=212 208 200 WindowFrame=0 0 0 MenuText=0 0 0 ActiveBorder=212 208 200 InactiveBorder=212 208 200 AppWorkspace=128 128 128 ButtonFace=212 208 200 ButtonShadow=128 128 128 GrayText=128 128 128 ButtonText=0 0 0 InactiveTitleText=212 208 200 ButtonHilight=255 255 255 ButtonDkShadow=64 64 64 ButtonLight=212 208 200 InfoText=0 0 0 InfoWindow=255 255 225 GradientActiveTitle=166 202 240 GradientInactiveTitle=192 192 192
Dieser Bereich ist optional und definiert die Farbwerte bestimmter Desktop-Elemente.Somit ist mit diesem Bereich durchaus noch eine visuelle Anpassung möglich.
[Control Panel\Cursors] AppStarting=%SystemRoot%\cursors\aero_working.ani Arrow=%SystemRoot%\cursors\aero_arrow.cur Crosshair= Hand=%SystemRoot%\cursors\aero_link.cur Help=%SystemRoot%\cursors\aero_helpsel.cur IBeam= No=%SystemRoot%\cursors\aero_unavail.cur NWPen=%SystemRoot%\cursors\aero_pen.cur SizeAll=%SystemRoot%\cursors\aero_move.cur SizeNESW=%SystemRoot%\cursors\aero_nesw.cur SizeNS=%SystemRoot%\cursors\aero_ns.cur SizeNWSE=%SystemRoot%\cursors\aero_nwse.cur SizeWE=%SystemRoot%\cursors\aero_ew.cur UpArrow=%SystemRoot%\cursors\aero_up.cur Wait=%SystemRoot%\cursors\aero_busy.ani DefaultValue=Windows Aero Link=
Dieser Bereich definiert die einzelnen Symbole des Mauszeigers. Auch hier muss auf die entsprechenden Dateien verwiesen werden.
[Control Panel\Desktop] Wallpaper=%WinDir%\web\wallpaper\Windows\img0.jpg TileWallpaper=0 WallpaperStyle=2 ScreenSaveActive=0
Dieser Bereich kümmert sich um den Desktop-Hintergrund und beinhaltet drei wichtige Konfigurations-Elemente.
Wallpaper: Hier wird der Pfad zur Hintergrund-Grafik angegeben, sofern es sich um eine einzelne Bilddatei handelt. Zulässige Dateiformate sind dabei .bmp, .gif, .jpg, .png oder .tif.
TileWallpaper: Dies kann den Wert 0 oder 1 annehmen und legt fest, ob die Hintergrundgrafik gekachelt werden soll. Was dabei wofür steht, sollte klar sein.
WallpaperStyle: Dieser Eintrag kann die Werte 0, 2, 6 oder 10 annehmen.
Zu den Parametern:
- 0: Die Grafik wird zentriert, sofern "TileWallpaper=0" oder gekachelt, wenn "Tilewallpaper=1".
- 2: Die Grafikwird über den gesamten Bildschirm gestreckt.
- 6: Die Grafik wird soweit gestreckt, dass sie entsprechend der Abmessungen der Grafik genau in den Bildschirm passt. Es ist hierbei möglich, dass der Desktop nicht vollständig ausgefüllt wird.
- 10: Die Grafik wird soweit gestreckt, dass sie entsprechend der Abmessungen der Grafik den Desktop vollständig aufüllt. Es ist hierbei möglich, dass die Hintergrundgrafik nicht vollständig angezeigt wird, da möglicherweise einzelne Bereiche abgeschnitten werden.
[Slideshow] Interval=1800000 Shuffle=1 ImagesRootPath=%ProgramFiles%\fabrikam\wallpaper Item0Path=%ProgramFiles%\fabrikam\wallpaper\ocean.jpg Item1Path=%ProgramFiles%\fabrikam\wallpaper\mountain.jpg Item2Path=%ProgramFiles%\fabrikam\wallpaper\river.jpg
Dieser Bereich ist optional und ist für die Verwendung wechselnder Hintergrundgrafiken gedacht. Der Wert "Interval" legt fest, in welchem Zeitabstand der Hintergrund wechselt. Die Angabe erfolgt hierbei in Millisekunden. Der Wert "Shuffle" legt fest, ob die Grafiken zufällig wechseln sollen oder ob sie entsprechend ihrer Reihenfolge im entsprechenden Verzeichnis angezeigt werden sollen. Der Wert "ImagesRootPath" definiert das Verzeichnis, aus dem die Hintergrundgrafiken geladen werden sollen. Auch hier sind dieselben Dateitypen zulässig, wie bei einer einzelnen Grafik. Die Werte "ItemXPath" schränken die Auswahl der Grafiken aus einem bestimmten Verzeichnis ein. Jede ausgewählte Grafik muss separat eingetragen werden. Mit dem zusätzlichen Eintrag RSSFeed lassen sich auch Grafiken direkt aus einem RSS-Feed laden. Hierbei muss die vollständige Adresse zur Grafil angegeben werden.
[Control Panel\Desktop\WindowMetrics] [Metrics] IconMetrics=76 0 0 0 139 0 0 0 139 0 0 0 1 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 119 0 0 7 0 0 0 0 0 216 31 7 0 28 52 1 1 216 31 7 0 176 36 1 1 NonclientMetrics=84 1 0 0 1 0 0 0 16 0 0 0 16 0 0 0 18 0 0 0 18 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0 15 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 80 37 11 0 0 0 0 0 140 221 6 0 227 115 247 119 2 40 11 0 7 0 0 0 18 0 0 0 18 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 0 0 0 0 60 222 6 0 50 71 252 119 120 1 7 0 76 73 252 119 8 6 7 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 119 0 0 7 0 120 1 7 0 120 1 7 0 40 37 11 0 120 1 7 0 120 1 7 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 92 1 0 0 136 4 0 0 40 37 1 1 0 0 7 0 184 221 6 0 46 75 232 119
Jetzt wird es etwas komplizierter. Der "Metrics"-Bereich hat auch Einfluss auf die visuelle Darstellung. In dieser optionalen Einstellungen können Abmessungen deklariert werden. So lassen sich darüber Rahmenbreite, Icongröße oder Scrollbar-Breiten angeben. Die Werte "IconMetrics" und "NonclientMetrics" werden als Binärwerte angegeben.
[VisualStyles] Path=%ResourceDir%\Themes\Aero\Aero.msstyles ColorStyle=NormalColor Size=NormalSize ColorizationColor=0X7298844C Transparency=1
Dies ist wohl der wichtigste Eintrag überhaupt. Denn ohne diesen Eintrag wird euer Design erst gar nicht eingebunden. Der Wert "Path" verweist dabei auf die *.msstyles-Datei, die euer Design verwenden soll. Darüber könnt ihr auch festlegen, ob euer Design Aero aktivieren soll, oder nicht.
Der Wert "ColorStyle" legt das Farbschema eures Designs fest. Ggf. existiert bei eurer Designvorlage bereits ein entsprechndest Verzeichnis mit den notwendigen Dateien. Der Wert "Size" legt die Symbolgröße fest. Durch den Wert "ColorizationColor" wird eine Systemfarbe definiert. Und "Transparency" aktiviert oder deaktiviert AERO.
Hinweis: Bei der Verwendung DIESER Variante ist von der Verwendung des "Metrics"-Bereiches abzuraten, da es sonst zu massiven Darstellungsfehlern kommen kann.
[Sounds] ; "Quirky" sound scheme SchemeName=@%SystemRoot%\System32\mmres.dll,-819
oder alternativ:
[Sounds] [AppEvents\Schemes\Apps\.Default\SystemExclamation] DefaultValue=%WinDir%\media\chord.wav [AppEvents\Schemes\Apps\.Default\SystemExit] DefaultValue=%WinDir%\media\tada.wav [AppEvents\Schemes\Apps\.Default\SystemHand] DefaultValue=%WinDir%\media\chord.wav [AppEvents\Schemes\Apps\.Default\SystemQuestion] DefaultValue=%WinDir%\media\chord.wav [AppEvents\Schemes\Apps\.Default\SystemStart] DefaultValue=%WinDir%\media\The Microsoft Sound.wav [AppEvents\Schemes\Apps\Explorer\EmptyRecycleBin] DefaultValue=%WinDir%\media\ding.wav
Hiermit definiert man die verwendeten Systemsounds. Erstere Methode verweist hierbei auf ein vorhandenes Soundschema. Die 2. Variante ordnet jedem Ereignis einen entsprechenden Sound zu.
[boot] SCRNSAVE.EXE=%WinDir%\System32\bubbles.scr
Durch diesen Eintrag verweist man auf den zu verwendenden Bildschirmschoner, sofern dieser aktiviert ist. Daher ist dieser Eintrag optional.
[MasterThemeSelector] MTSM=DABJDKT
Dieser Eintrag MUSS so in jeder Theme-Datei vorhanden sein, damit das System das eigene Design als gültig einstuft. Andernfalls wird das Design erst gar nicht mit aufgelistet.
Nachdem nun die Theme-Datei mit den entsprechenden Einträgen gefüttert wurde, muss diese nun abgespeichert werden. Man achte hierbei aber darauf, dass der Dateiname nicht auf ".txt", sondern auf ".theme" endet. Ebenso sollte man der Datei den Namen des Designs geben. Das Verzeichnis, das euer Design beinhaltet sollte denselben Namen (in derselben Schreibweise) tragen. Sowohl das Verzeichnis, als auch die gleichnamige Theme-Datei muss dann nur noch in das Verzeichnis "X:\Windows\Resources\Themes\" kopiert werden. "X" beschreibt hierbei das Systemlaufwerk.
Öffnet man dann das "Anpassen"-Fenster, so ist Das Design in der Übersicht der Designs mit aufgelistet. Bei der Auswahl des Eigenen Designs werden dann die eigenen Einstellungen, die man in der Theme-Datei vorgenommen hat, direkt angewendet.
Zur Veranschaulichung poste ich hier mal den vollständigen Code meiner aktuell verwendeten Theme-Datei. Es sei hier noch anzumerken, dass dieser Code noch Werte beinhaltet, die einige Zusatzanpassungen vornehmen, aber für die essentielle Konfiguration nicht erforderlich sind.
[Theme] ; Windows 7 - IDS_THEME_DISPLAYNAME_AERO DisplayName=firefly Design BrandImage=C:\Windows\Resources\Themes\firefly Design\en-US\firefly_logo.png [Control Panel\Desktop] Wallpaper=%SystemRoot%\Resources\Themes\firefly Design\wallpapers\firefly_logo_mod.jpg TileWallpaper=0 WallpaperStyle=6 Pattern= ; Computer - SHIDI_SERVER [CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon] DefaultValue=%SystemRoot%\System32\imageres.dll,-109 ; UsersFiles - SHIDI_USERFILES [CLSID\{59031A47-3F72-44A7-89C5-5595FE6B30EE}\DefaultIcon] DefaultValue=%SystemRoot%\System32\imageres.dll,-123 ; Network - SHIDI_MYNETWORK [CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\DefaultIcon] DefaultValue=%SystemRoot%\System32\imageres.dll,-25 ; Recycle Bin - SHIDI_RECYCLERFULL SHIDI_RECYCLER [CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon] Full=%SystemRoot%\System32\imageres.dll,-54 Empty=%SystemRoot%\System32\imageres.dll,-55 [Control Panel\Cursors] AppStarting=%SystemRoot%\cursors\aero_working.ani Arrow=%SystemRoot%\cursors\aero_arrow.cur Crosshair= Hand=%SystemRoot%\cursors\aero_link.cur Help=%SystemRoot%\cursors\aero_helpsel.cur IBeam= No=%SystemRoot%\cursors\aero_unavail.cur NWPen=%SystemRoot%\cursors\aero_pen.cur SizeAll=%SystemRoot%\cursors\aero_move.cur SizeNESW=%SystemRoot%\cursors\aero_nesw.cur SizeNS=%SystemRoot%\cursors\aero_ns.cur SizeNWSE=%SystemRoot%\cursors\aero_nwse.cur SizeWE=%SystemRoot%\cursors\aero_ew.cur UpArrow=%SystemRoot%\cursors\aero_up.cur Wait=%SystemRoot%\cursors\aero_busy.ani DefaultValue=Windows Aero Link= [VisualStyles] Path=%SystemRoot%\resources\Themes\firefly Design\firefly Design.msstyles ColorStyle=NormalColor Size=NormalSize ColorizationColor=0X1AFFFFFF Transparency=1 Composition=1 VisualStyleVersion=10 [boot] SCRNSAVE.EXE= [MasterThemeSelector] MTSM=DABJDKT [Sounds] ; IDS_SCHEME_DEFAULT SchemeName=Ultimate-Extras Glas [AppEvents\Schemes\Apps\.Default\.Default] DefaultValue=%SystemRoot%\Media\Schemes\Glass\ding.wav [AppEvents\Schemes\Apps\.Default\ChangeTheme] DefaultValue=%SystemRoot%\Media\Schemes\Glass\tada.wav [AppEvents\Schemes\Apps\.Default\CriticalBatteryAlarm] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Battery Critical.wav [AppEvents\Schemes\Apps\.Default\DeviceConnect] DefaultValue=%SystemRoot%\Media\Schemes\Glas\Windows Hardware Insert.wav [AppEvents\Schemes\Apps\.Default\DeviceDisconnect] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Hardware Remove.wav [AppEvents\Schemes\Apps\.Default\DeviceFail] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Hardware Fail.wav [AppEvents\Schemes\Apps\.Default\FaxBeep] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Notify.wav [AppEvents\Schemes\Apps\.Default\LowBatteryAlarm] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Battery Low.wav [AppEvents\Schemes\Apps\.Default\MailBeep] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Notify.wav [AppEvents\Schemes\Apps\.Default\Maximize] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Restore.wav [AppEvents\Schemes\Apps\.Default\MenuCommand] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Menu Command.wav [AppEvents\Schemes\Apps\.Default\Minimize] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Minimize.wav [AppEvents\Schemes\Apps\.Default\PrintComplete] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Print Complete.wav [AppEvents\Schemes\Apps\.Default\RestoreDown] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Minimize.wav [AppEvents\Schemes\Apps\.Default\RestoreUp] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Restore.wav [AppEvents\Schemes\Apps\.Default\SystemAsterisk] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Error.wav [AppEvents\Schemes\Apps\.Default\SystemExclamation] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Exclamation.wav [AppEvents\Schemes\Apps\.Default\SystemExit] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Shutdown-Long.wav [AppEvents\Schemes\Apps\.Default\SystemHand] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Critical Stop.wav [AppEvents\Schemes\Apps\.Default\SystemNotification] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Balloon.wav [AppEvents\Schemes\Apps\.Default\SystemQuestion] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Exclamation.wav [AppEvents\Schemes\Apps\.Default\WindowsLogoff] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Logoff.wav [AppEvents\Schemes\Apps\.Default\WindowsLogon] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Logon.wav [AppEvents\Schemes\Apps\.Default\WindowsUAC] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows User Account Control.wav [AppEvents\Schemes\Apps\Explorer\BlockedPopup] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Pop-up Blocked.wav [AppEvents\Schemes\Apps\Explorer\EmptyRecycleBin] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Recycle.wav [AppEvents\Schemes\Apps\Explorer\FaxError] DefaultValue= [AppEvents\Schemes\Apps\Explorer\FaxLineRings] DefaultValue=%SystemRoot%\Media\Schemes\Glass\ringin.wav [AppEvents\Schemes\Apps\Explorer\FaxSent] DefaultValue= [AppEvents\Schemes\Apps\Explorer\FeedDiscovered] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Feed Discovered.wav [AppEvents\Schemes\Apps\Explorer\Navigating] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Navigation Start.wav [AppEvents\Schemes\Apps\Explorer\SecurityBand] DefaultValue=%SystemRoot%\Media\Schemes\Glass\Windows Information Bar.wav [Slideshow] Interval=60000 Shuffle=1 ImagesRootPath=C:\Windows\Resources\Themes\firefly Design\wallpapers