New
#1
Custom Background Colors, Theme Editing, msstyles editing advice?
Hi folks,
So I have been playing with making my own custom themes, as many here have done (and shared here). However, I wanted to do a little more, and in the process I solved some of my own confusions but brought up new ones. So I wanted to post my process here so hopefully some of you can help me improve what I am doing... I have jumped into the world of editing the .theme files and (potentially) the .msstyles file, but would love some help decoding some of it. I can find almost no guides on the latter, and the guides on the former, such as this one from Microsoft Dev Center are clearly not written for Windows 10 because not all of the attributes are the same, and even then not everything is explained completely... A lot of this I could probably figure out if I spent many hours tweaking one thing at a time to see the result but hopefully others already have the knowledge...
(For the purposes of this post I will use the moniker "NEW_THEME" to indicate the name of the theme I have been working on).
My primary goal was a simple slide show background, and I used the method explained in these forums, about saving a theme for sharing. Easy enough. However, I am using photos of all different sizes, so they are made to fit the screen but the background color is visible. I was not happy with any of the available background colors. So I navigated to the Theme folder (%User%\AppData\Local\Microsoft\Windows\Themes) and that is where you will find folder for all of your installed themes. So inside that folder I went to the folder NEW_THEME and inside there was another folder holding all of the slide show images, called "DesktopBackground," as well as the file NEW_THEME.theme. Opening the .theme file, I was able to navigate to the "Control Panel\Colors" and change the background color, and it worked great.
Of course, I had no way to compile this new .theme file into the .themepack file that is used to install the theme on various machines. So I wrote a small batch file which could be run from any thumb drive and would install the theme as well as copying the modified .theme file to the proper location, and it worked perfectly. That batch file (which was in the same folder as the .themepack file and the altered .theme file) was as follows:
That did exactly what I wanted - it installed the new theme, copied the altered .theme file, and then by running the altered file it refreshed the screen. The timeout command is to accommodate slower machines, to ensure that the file is actually created before the altered one is moved to replace it. Of course, it should have worked without copying the file--simplying running the altered file should work. However, if the user at any point switches to a different theme and then tries to switch back (in the Settings->Personalization->Theme->Theme Settings window) it would recall the original, unaltered file and no have the background color I want.start NEW_THEME.deskthemepack
TIMEOUT /T 4
xcopy "%~dp0NEW_THEME.theme" %localAppData%\Microsoft\Windows\Themes\NEW_THEME\ /y
start "" "%localAppData%\Microsoft\Windows\Themes\NEW_THEME\NEW_THEME.theme"
exit
However, then I realized that I really want the Taskbar and Start to use the same color as the background, and I want transparency enabled. Looking through the .theme file, it seems like these are enabled, but it seems that the .theme file is overridden by the switches in the Settings->Personalization->Colors window. If they are switched off there then it does not matter what data is in the .theme file, it seems. So I modified my batch command to include a small registry tweak to enable them both, resulting in this:
Which works well and does what I want. So I should be satisfied, right?start NEW_THEME.deskthemepack
TIMEOUT /T 4
xcopy "%~dp0NEW_THEME.theme" %localAppData%\Microsoft\Windows\Themes\NEW_THEME\ /y
start "" "%localAppData%\Microsoft\Windows\Themes\NEW_THEME\NEW_THEME.theme"
TIMEOUT /T 1
Reg Add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v EnableTransparency /t REG_DWORD /d 1 /f
Reg Add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v ColorPrevalence /t REG_DWORD /d 1 /f
taskkill /f /im explorer.exe
start explorer.exe
exit
Well, I am, for the most part. But I learned one interesting thing, and simultaneously have been brimming with ideas and questions.
The cool thing I learned: The whole point of this was to modify the background to a color not available in the Windows 10 swatches. Well, I found that whatever color you set for that stays in the background, and can be available for the next theme you create.
That's confusing. Let me explain. I created my theme, saved it for sharing and enabled it, modified my .theme file and replaced the original in my computer. So far, makes sense. Then, without manually clicking or adjusting the color settings, I created the theme again and saved it with a different name. Now, here is the cool part--the new theme file I created already had the modified color settings in its .theme file. That's right, I could just run the .themepack file on any computer and it would give me the modified, custom color as the background. No need to run that original batch file.
So, that's pretty cool. It means you can go in and make edits and then if you save everything correctly you can share those customizations without forcing the user to copy an altered file, without running a batch, everything is on the up and up, nothing hacky at all. And if the background color stays the same during this process, I wondered what else would stay the same (and hence no need for editing the .theme file). Such as, if I created a custom theme that used a different .msstyle file, such as the aerolite.msstyle file that is available pre-installed in Windows 10 but somewhat hidden), would that also be saved?
I am going to post the altered .theme file now, because some of my questions reference it. The lines that I edited I have made bold, just o make them stick out, obviously the original file has no formatting as such.
And that comes to my questions. These are not in any specific order, but:; Copyright © Microsoft Corp.
[Theme]
; Windows 7
DisplayName=NEW_THEME
ThemeId={885FBC04-A22E-49A6-9450-07E30B2AC6BC}
; Computer
[CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-109
; UsersFiles
[CLSID\{59031A47-3F72-44A7-89C5-5595FE6B30EE}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-123
; 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
[Control Panel\Cursors]
AppStarting=%SystemRoot%\cursors\aero_working.ani
Arrow=%SystemRoot%\cursors\aero_arrow.cur
Hand=%SystemRoot%\cursors\aero_link.cur
Help=%SystemRoot%\cursors\aero_helpsel.cur
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
[Control Panel\Desktop]
Wallpaper=%USERPROFILE%\AppData\Local\Microsoft\Windows\Themes\NEW_THEME\DesktopBackground\001 (1).jpg
Pattern=
MultimonBackgrounds=0
PicturePosition=3
[VisualStyles]
Path=%SystemRoot%\resources\themes\Aero\Aero.msstyles
ColorStyle=NormalColor
Size=NormalSize
ColorizationColor=0XA66D0913
Transparency=1
Composition=1
VisualStyleVersion=10
AutoColorization=0
[boot]
SCRNSAVE.EXE=%SystemRoot%\system32\Bubbles.scr
[MasterThemeSelector]
MTSM=RJSPBS
[Sounds]
; IDS_SCHEME_DEFAULT
SchemeName=@mmres.dll,-800
[Control Panel\Colors]
Scrollbar=200 200 200
Background=109 9 19
ActiveTitle=153 180 209
InactiveTitle=191 205 219
Menu=240 240 240
Window=255 255 255
WindowFrame=100 100 100
MenuText=0 0 0
WindowText=0 0 0
TitleText=0 0 0
ActiveBorder=180 180 180
InactiveBorder=244 247 252
AppWorkspace=171 171 171
Hilight=51 153 255
HilightText=255 255 255
ButtonFace=240 240 240
ButtonShadow=160 160 160
GrayText=109 109 109
ButtonText=0 0 0
InactiveTitleText=0 0 0
ButtonHilight=255 255 255
ButtonDkShadow=105 105 105
ButtonLight=227 227 227
InfoText=0 0 0
InfoWindow=255 255 225
ButtonAlternateFace=0 0 0
HotTrackingColor=0 102 204
GradientActiveTitle=185 209 234
GradientInactiveTitle=215 228 242
MenuHilight=51 153 255
MenuBar=240 240 240
[Slideshow]
ImagesRootPIDL=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 AHAlBAAAMBAAAAAAAAAAAAAAAAAAAAGAAAA
Interval=500000
Shuffle=1
1) Can anyone confirm what takes precedence, from the values within the .theme file, the values in the .msstyle file that the .theme file references, and any hard switches (like Transparency) that the user adjusts?
2) Can someone explain, in the Slideshow section of the .theme file, the "ImagesRootPIDL" variable and how it works? In the guide I link to above they reference a "ImagesRootPath" which makes sense, and you point it directly where you want. However that is not what happens in these custom made themes, as you can see, there is instead the ImagesRootPIDL and a crazy and unintelligible string of characters after it. This unintelligible string is important though, because if it is not there the theme will not find your images. Is it possible to use the ImagesRootPath command instead? It seems like it would make it easier when working within a theme file, especialy if you wanted to tweak anything. It would also let you call things like a users Pictures folder, or any of the other default folder that have unalterable paths.
3) Is there somewhere in that .theme file that I can force the transparency or the taskbar/start menu color that I am missing? There could also be commands that aren't included in this file, never mind commands with different variables, but since I cannot find a comprehensive guide I am not sure.
4) Following up on #3, I suppose, can anyone give a breakdown of the functions for all of the variables in the "VisualStyles" section as well as the "ControlPanel/Colors" and "MasterThemeSelector" sections? I feel like there are a lot of little tweaks possible here but I don't know what each variable actually changes and, like I said, testing them one at a time would take a while...
5) Can anyone offer some help on navigating the craziness that is a .msstyle file? I am using the small, free msstyle editing program found here, and to be honest I have no idea what is going on in there. Which variable affect thing like windows title bars (active or inactive), and shadow, border depth, transparency, taskbar transparency, etc.?
6) Assuming that there are no changes we can make to the .theme file that will force transparency and changing the taskbar color, does anyone know a batch command that can change it without tweaking the registry? It is a harmless tweak, obviously, but the less direct engaging with the registry the better, in my opinion, but I could not find any other way to make it happen except for what I listed above.
I think that's it... Basically I want to see how many other modifications I can sneak into the .theme file itself, which I can then hopefully compile into a .themepack using the method above and not requiring runing a batch command. Then, on top of that, I want to see what additional functionality I can get out of playing in the .msstyle file, because if there is a lot at offer there I can make a new .msstyle file, place it in the same directory as the pre-existing ones, and reference it in my new .theme. Of course, that would require the batch command, in order to copy the file onto the users computer, but that is simple enough...
Thanks for any and all thoughts and opinions!