|
#!/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
|