|
|
@ -0,0 +1,200 @@ |
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
# This script installs a user selected theme file for all existing |
|
|
|
# PlayOnLinux wine prefixes. |
|
|
|
# The purpose of this script is to automate theme selection process |
|
|
|
# in a case user has many wineprefixes which would otherwise |
|
|
|
# require manual tweaking, individually. |
|
|
|
# |
|
|
|
# USAGE: Change your theme preferences here and then run the script. |
|
|
|
# |
|
|
|
# NOTE: If you change VistaPerfection theme to another one, please |
|
|
|
# make sure you change corresponding registry values below! |
|
|
|
|
|
|
|
######################################################################### |
|
|
|
|
|
|
|
REGFILE=user.reg |
|
|
|
MAINFOLDER=$HOME/.PlayOnLinux/wineprefix/ |
|
|
|
THEMEFILE=VistaPerfection.msstyles |
|
|
|
THEMEFOLDER=drive_c/windows/Resources/Themes/VistaPerfection/ |
|
|
|
|
|
|
|
######################################################################### |
|
|
|
# Add VistaPerfection theme to each existing PlayOnLinux Wine prefix |
|
|
|
# folder. |
|
|
|
|
|
|
|
for i in $MAINFOLDER/* ; do |
|
|
|
if [[ -d $i ]]; then # Filter directories only and exclude all files |
|
|
|
|
|
|
|
######################################################################### |
|
|
|
# Copy theme file into correct folder. |
|
|
|
|
|
|
|
mkdir -p $i/$THEMEFOLDER |
|
|
|
cp -rf ./$THEMEFILE $i/$THEMEFOLDER |
|
|
|
|
|
|
|
######################################################################### |
|
|
|
# If pattern [Control Panel\\Colors] exists in user.reg (basically, it always does) |
|
|
|
|
|
|
|
if [[ $(cat $i/$REGFILE | grep -c "\[Control Panel\\\\\\\\Colors\]") -eq 1 ]]; then |
|
|
|
|
|
|
|
# If no theme is applied, ThemeManager registry key shouldn't exist. We check this, and if the check returns 0, then |
|
|
|
if [[ $(cat $i/$REGFILE | grep -c "\[Software\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\CurrentVersion\\\\\\\\ThemeManager\]") -eq 0 ]]; then |
|
|
|
|
|
|
|
# Delete lines between [Control Panel\\Colors] and #time |
|
|
|
sed -i '/\[Control Panel\\\\Colors\]/,/#time/ { // { x; s/$/./; x; }; x; /.../! { x; d; }; x; }' $i/$REGFILE |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
# Else, we expect that some theme is already applied and range of lines [Control Panel\\Colors] - "WindowText" exists. |
|
|
|
|
|
|
|
# Delete all between lines [Control Panel\\Colors] to the next "WindowText" line (including these lines themselves, too). |
|
|
|
# First match only. |
|
|
|
|
|
|
|
sed -i '/\[Control Panel\\\\Colors\]/,/.*WindowText/ { // { x; s/$/./; x; }; x; /.../! { x; d; }; x; }' $i/$REGFILE |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
######################################################################### |
|
|
|
# If pattern [Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager] |
|
|
|
# exists in user.reg. |
|
|
|
|
|
|
|
if [[ $(cat $i/$REGFILE | grep -c "\[Software\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\CurrentVersion\\\\\\\\ThemeManager\]") -eq 1 ]]; then |
|
|
|
|
|
|
|
# Then delete all between lines [Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager] |
|
|
|
# to the next "ThemeActive" line (including these lines themselves, too). |
|
|
|
# First match only. |
|
|
|
|
|
|
|
sed -i '/\[Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\ThemeManager\]/,/.*ThemeActive/ { // { x; s/$/./; x; }; x; /.../! { x; d; }; x; }' $i/$REGFILE |
|
|
|
fi |
|
|
|
|
|
|
|
######################################################################### |
|
|
|
# If pattern [Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager\\Control Panel\\Colors] |
|
|
|
# exists in user reg. |
|
|
|
|
|
|
|
if [[ $(cat $i/$REGFILE | grep -c "\[Software\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\CurrentVersion\\\\\\\\ThemeManager\\\\\\\\Control Panel\\\\\\\\Colors]") -eq 1 ]]; then |
|
|
|
|
|
|
|
# Then delete all between lines [Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager\\Control Panel\\Colors] |
|
|
|
# to the next "WindowText" line (including these lines themselves, too). |
|
|
|
# First match only. |
|
|
|
|
|
|
|
sed -i '/\[Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\ThemeManager\\\\Control Panel\\\\Colors\]/,/.*WindowText/ { // { x; s/$/./; x; }; x; /.../! { x; d; }; x; }' $i/$REGFILE |
|
|
|
fi |
|
|
|
|
|
|
|
######################################################################### |
|
|
|
# Insert the following lines before [Control Panel\\Desktop] entry. |
|
|
|
# To modify theme colors universally for all PlayOnLinux wineprefixes, modify these values and re-run this bash script. |
|
|
|
# |
|
|
|
# If you use another theme file than VistaPefection, you must change these values! |
|
|
|
|
|
|
|
sed -i '/\[Control Panel\\\\Desktop\]/i \ |
|
|
|
[Control Panel\\\\Colors] 1412354567 0 \ |
|
|
|
#time=1cfdf290fdf9d80 \ |
|
|
|
"ActiveBorder"="212 208 200" \ |
|
|
|
"ActiveTitle"="185 209 234" \ |
|
|
|
"AppWorkSpace"="128 128 128" \ |
|
|
|
"Background"="0 0 0" \ |
|
|
|
"ButtonAlternateFace"="181 181 181" \ |
|
|
|
"ButtonDkShadow"="160 160 160" \ |
|
|
|
"ButtonFace"="240 240 240" \ |
|
|
|
"ButtonHilight"="255 255 255" \ |
|
|
|
"ButtonLight"="227 227 227" \ |
|
|
|
"ButtonShadow"="213 213 213" \ |
|
|
|
"ButtonText"="0 0 0" \ |
|
|
|
"GradientActiveTitle"="185 209 234" \ |
|
|
|
"GradientInactiveTitle"="215 228 242" \ |
|
|
|
"GrayText"="128 128 128" \ |
|
|
|
"Hilight"="51 153 255" \ |
|
|
|
"HilightText"="255 255 255" \ |
|
|
|
"HotTrackingColor"="0 102 204" \ |
|
|
|
"InactiveBorder"="212 208 200" \ |
|
|
|
"InactiveTitle"="191 205 219" \ |
|
|
|
"InactiveTitleText"="67 78 84" \ |
|
|
|
"InfoText"="0 0 0" \ |
|
|
|
"InfoWindow"="255 255 255" \ |
|
|
|
"Menu"="240 240 240" \ |
|
|
|
"MenuBar"="240 240 240" \ |
|
|
|
"MenuHilight"="51 153 255" \ |
|
|
|
"MenuText"="0 0 0" \ |
|
|
|
"Scrollbar"="212 208 200" \ |
|
|
|
"TitleText"="0 0 0" \ |
|
|
|
"Window"="255 255 255" \ |
|
|
|
"WindowFrame"="0 0 0" \ |
|
|
|
"WindowText"="0 0 0" \ |
|
|
|
\ |
|
|
|
[Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\ThemeManager] 1424057405 0 \ |
|
|
|
#time=1d04998dae45c80 \ |
|
|
|
"ColorName"="NormalColor" \ |
|
|
|
"DllName"="C:\\\\windows\\\\Resources\\\\Themes\\\\VistaPerfection\\\\VistaPerfection.msstyles" \ |
|
|
|
"FlatMenu"=dword:00000000 \ |
|
|
|
"GradientCaption"=dword:00000001 \ |
|
|
|
"IconTitleFont"=hex:f5,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,22,4d,00,53,00,20,00,53,00,68,00,65,00,6c,00,6c,00,\\ \ |
|
|
|
20,00,44,00,6c,00,67,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 \ |
|
|
|
"NonClientMetrics"=hex:f8,01,00,00,01,00,00,00,10,00,00,00,10,00,00,00,12,00,\\ \ |
|
|
|
00,00,12,00,00,00,f5,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,bc,02,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,22,4d,00,53,00,20,00,53,00,68,00,65,00,6c,00,6c,00,\\ \ |
|
|
|
20,00,44,00,6c,00,67,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0f,00,\\ \ |
|
|
|
00,00,0f,00,00,00,f5,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,22,4d,00,53,00,20,00,53,00,68,00,65,00,6c,00,6c,00,\\ \ |
|
|
|
20,00,44,00,6c,00,67,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,00,\\ \ |
|
|
|
00,00,12,00,00,00,f5,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,22,4d,00,53,00,20,00,53,00,68,00,65,00,6c,00,6c,00,\\ \ |
|
|
|
20,00,44,00,6c,00,67,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,f5,ff,\\ \ |
|
|
|
ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
22,4d,00,53,00,20,00,53,00,68,00,65,00,6c,00,6c,00,20,00,44,00,6c,00,67,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,f5,ff,ff,ff,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,22,4d,00,53,00,20,00,53,\\ \ |
|
|
|
00,68,00,65,00,6c,00,6c,00,20,00,44,00,6c,00,67,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\ \ |
|
|
|
00,00,00,00,00,00,00,00,00,00,00 \ |
|
|
|
"SizeName"="NormalSize" \ |
|
|
|
"ThemeActive"="1" \ |
|
|
|
\ |
|
|
|
[Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\ThemeManager\\\\Control Panel\\\\Colors] 1424057405 0 \ |
|
|
|
#time=1d04998dae45c80 \ |
|
|
|
"ActiveBorder"="212 208 200" \ |
|
|
|
"ActiveTitle"="10 36 106" \ |
|
|
|
"AppWorkSpace"="128 128 128" \ |
|
|
|
"Background"="58 110 165" \ |
|
|
|
"ButtonAlternateFace"="181 181 181" \ |
|
|
|
"ButtonDkShadow"="64 64 64" \ |
|
|
|
"ButtonFace"="212 208 200" \ |
|
|
|
"ButtonHilight"="255 255 255" \ |
|
|
|
"ButtonLight"="212 208 200" \ |
|
|
|
"ButtonShadow"="128 128 128" \ |
|
|
|
"ButtonText"="0 0 0" \ |
|
|
|
"GradientActiveTitle"="166 202 240" \ |
|
|
|
"GradientInactiveTitle"="192 192 192" \ |
|
|
|
"GrayText"="128 128 128" \ |
|
|
|
"Hilight"="10 36 106" \ |
|
|
|
"HilightText"="255 255 255" \ |
|
|
|
"HotTrackingColor"="0 0 200" \ |
|
|
|
"InactiveBorder"="212 208 200" \ |
|
|
|
"InactiveTitle"="128 128 128" \ |
|
|
|
"InactiveTitleText"="212 208 200" \ |
|
|
|
"InfoText"="0 0 0" \ |
|
|
|
"InfoWindow"="255 255 225" \ |
|
|
|
"Menu"="212 208 200" \ |
|
|
|
"MenuBar"="212 208 200" \ |
|
|
|
"MenuHilight"="10 36 106" \ |
|
|
|
"MenuText"="0 0 0" \ |
|
|
|
"Scrollbar"="212 208 200" \ |
|
|
|
"TitleText"="255 255 255" \ |
|
|
|
"Window"="255 255 255" \ |
|
|
|
"WindowFrame"="0 0 0" \ |
|
|
|
"WindowText"="0 0 0" \ |
|
|
|
' $i/$REGFILE |
|
|
|
|
|
|
|
#################################################### |
|
|
|
# Replace double blank lines with one blank line. |
|
|
|
|
|
|
|
sed -i '/^$/N;/^\n$/D' $i/$REGFILE |
|
|
|
|
|
|
|
#################################################### |
|
|
|
|
|
|
|
fi |
|
|
|
done |