A fork of the Materia GTK theme.

Important information: Google announced that, from September 2026, Android devices will require ALL apps to be signed by Google, effectively leading to an iOS situation. Value your right to a computer that does what you want; do not tolerate this monopolistic practice! Contact me if you don't understand why it is bad. Click to learn more.

 change_color.sh

View raw Download
text/x-shellscript • 11.52 kiB
Bourne-Again shell script, ASCII text executable
        
            
1
#!/usr/bin/env bash
2
#set -x
3
set -ue
4
SRC_PATH=$(readlink -f $(dirname $0))
5
6
darker () {
7
"${SRC_PATH}/scripts/darker.sh" $@
8
}
9
mix () {
10
"${SRC_PATH}/scripts/mix.sh" $@
11
}
12
13
14
print_usage() {
15
echo "usage: $0 [-o OUTPUT_THEME_NAME] [-p PATH_LIST] PATH_TO_PRESET"
16
echo "examples:"
17
echo " $0 -o my-theme-name <(echo -e "BG=d8d8d8\\nFG=101010\\nMENU_BG=3c3c3c\\nMENU_FG=e6e6e6\\nSEL_BG=ad7fa8\\nSEL_FG=ffffff\\nTXT_BG=ffffff\\nTXT_FG=1a1a1a\\nBTN_BG=f5f5f5\\nBTN_FG=111111\\n")"
18
echo " $0 ../colors/retro/twg"
19
exit 1
20
}
21
22
23
while [[ $# > 0 ]]
24
do
25
case ${1} in
26
-p|--path-list)
27
CUSTOM_PATHLIST="${2}"
28
shift
29
;;
30
-o|--output)
31
OUTPUT_THEME_NAME="${2}"
32
shift
33
;;
34
*)
35
if [[ "${1}" == -* ]] || [[ ${THEME-} ]]; then
36
echo "unknown option ${1}"
37
print_usage
38
exit 2
39
fi
40
THEME="${1}"
41
;;
42
esac
43
shift
44
done
45
46
if [[ -z "${THEME:-}" ]] ; then
47
print_usage
48
fi
49
50
PATHLIST=(
51
'./src/gtk-2.0/gtkrc'
52
'./src/gtk-2.0/gtkrc-dark'
53
'./src/gtk-2.0/gtkrc-light'
54
'./src/gtk-3.0/3.22/sass/_colors.scss'
55
'./src/gnome-shell/3.18/sass/_colors.scss'
56
'./src/gtk-2.0/assets.svg'
57
'./src/gtk-2.0/assets-dark.svg'
58
'./src/gtk-3.0/gtk-common/assets.svg'
59
)
60
if [ ! -z "${CUSTOM_PATHLIST:-}" ] ; then
61
IFS=', ' read -r -a PATHLIST <<< "${CUSTOM_PATHLIST:-}"
62
fi
63
64
EXPORT_QT5CT=0
65
for FILEPATH in "${PATHLIST[@]}"; do
66
if [[ ${FILEPATH} == *qt5ct* ]] ;then
67
EXPORT_QT5CT=1
68
fi
69
done
70
71
if [[ ${THEME} == */* ]] || [[ ${THEME} == *.* ]] ; then
72
source "$THEME"
73
THEME=$(basename ${THEME})
74
else
75
if [[ -f "$SRC_PATH/../colors/$THEME" ]] ; then
76
source "$SRC_PATH/../colors/$THEME"
77
else
78
echo "Theme '${THEME}' not found"
79
exit 1
80
fi
81
fi
82
ACCENT_BG=${ACCENT_BG-$SEL_BG}
83
HDR_BTN_BG=${HDR_BTN_BG-$BTN_BG}
84
HDR_BTN_FG=${HDR_BTN_FG-$BTN_FG}
85
WM_BORDER_FOCUS=${WM_BORDER_FOCUS-$SEL_BG}
86
WM_BORDER_UNFOCUS=${WM_BORDER_UNFOCUS-$MENU_BG}
87
88
MATERIA_STYLE_COMPACT=$(echo ${MATERIA_STYLE_COMPACT-True} | tr '[:upper:]' '[:lower:]')
89
MATERIA_MENUBAR_STYLE=$(echo ${MATERIA_MENUBAR_STYLE-same} | tr '[:upper:]' '[:lower:]')
90
GTK3_GENERATE_DARK=$(echo ${GTK3_GENERATE_DARK-True} | tr '[:upper:]' '[:lower:]')
91
GTK2_HIDPI=$(echo ${GTK2_HIDPI-False} | tr '[:upper:]' '[:lower:]')
92
UNITY_DEFAULT_LAUNCHER_STYLE=$(echo ${UNITY_DEFAULT_LAUNCHER_STYLE-False} | tr '[:upper:]' '[:lower:]')
93
94
SPACING=${SPACING-3}
95
GRADIENT=${GRADIENT-0}
96
ROUNDNESS=${ROUNDNESS-2}
97
ROUNDNESS_GTK2_HIDPI=$(( ${ROUNDNESS} * 2 ))
98
99
INACTIVE_FG=$(mix ${FG} ${BG} 0.75)
100
INACTIVE_MENU_FG=$(mix ${MENU_FG} ${MENU_BG} 0.75)
101
INACTIVE_TXT_FG=$(mix ${TXT_FG} ${TXT_BG} 0.75)
102
103
light_folder_base_fallback="$(darker ${SEL_BG} -10)"
104
medium_base_fallback="$(darker ${SEL_BG} 37)"
105
dark_stroke_fallback="$(darker ${SEL_BG} 50)"
106
107
ICONS_LIGHT_FOLDER="${ICONS_LIGHT_FOLDER-$light_folder_base_fallback}"
108
ICONS_LIGHT="${ICONS_LIGHT-$SEL_BG}"
109
ICONS_MEDIUM="${ICONS_MEDIUM-$medium_base_fallback}"
110
ICONS_DARK="${ICONS_DARK-$dark_stroke_fallback}"
111
112
CARET1_FG="${CARET1_FG-$TXT_FG}"
113
CARET2_FG="${CARET2_FG-$TXT_FG}"
114
CARET_SIZE="${CARET_SIZE-0.04}"
115
116
OUTPUT_THEME_NAME="${OUTPUT_THEME_NAME-oomox-$THEME}"
117
DEST_PATH="$HOME/.themes/${OUTPUT_THEME_NAME/\//-}"
118
119
test "$SRC_PATH" = "$DEST_PATH" && echo "can't do that" && exit 1
120
121
122
tempdir=$(mktemp -d)
123
function post_clean_up {
124
rm -r "${tempdir}" || true
125
}
126
trap post_clean_up EXIT SIGHUP SIGINT SIGTERM
127
cp -r ${SRC_PATH}/* ${tempdir}/
128
cd ${tempdir}
129
130
131
echo "== Converting theme into template..."
132
for FILEPATH in "${PATHLIST[@]}"; do
133
find "${FILEPATH}" -type f -exec sed -i'' \
134
-e 's/^\(\$dark_fg_color:\).*;.*$/\1 %FG%;/g' \
135
-e 's/^\(\$light_fg_color:\).*;.*$/\1 %BG%;/g' \
136
\
137
-e 's/^\(\$fg_color:\).*;.*$/\1 %FG%;/g' \
138
-e 's/^\(\$button_fg_color:\).*;.*$/\1 %BTN_FG%;/g' \
139
-e 's/^\(\$secondary_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%BTN_FG%\2%BTN_FG%\3/g' \
140
-e 's/^\(\$hint_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%FG%\2%FG%\3/g' \
141
-e 's/^\(\$disabled_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%FG%\2%FG%\3/g' \
142
-e 's/^\(\$disabled_secondary_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%BTN_FG%\2%BTN_FG%\3/g' \
143
-e 's/^\(\$track_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%FG%\2%FG%\3/g' \
144
-e 's/^\(\$divider_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%FG%\2%FG%\3/g' \
145
\
146
-e 's/^\(\$titlebar_fg_color:\).*;.*$/\1 %MENU_FG%;/g' \
147
-e 's/^\(\$titlebar_secondary_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%MENU_FG%\2%MENU_FG%\3/g' \
148
-e 's/^\(\$titlebar_hint_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%MENU_FG%\2%MENU_FG%\3/g' \
149
-e 's/^\(\$titlebar_disabled_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%MENU_FG%\2%MENU_FG%\3/g' \
150
-e 's/^\(\$titlebar_disabled_secondary_fg_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%MENU_FG%\2%MENU_FG%\3/g' \
151
-e 's/^\(\$titlebar_track_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%MENU_FG%\2%MENU_FG%\3/g' \
152
-e 's/^\(\$titlebar_divider_color:.*\)\$black\(.*\)\$white\(.*\)$/\1%MENU_FG%\2%MENU_FG%\3/g' \
153
\
154
-e 's/^\(\$inverse_fg_color:\).*;.*$/\1 %SEL_FG%;/g' \
155
-e 's/^\(\$inverse_secondary_fg_color:.*\)$white\(.*\)$/\1%SEL_FG%\2/g' \
156
-e 's/^\(\$inverse_hint_fg_color:.*\)\$white\(.*\)$/\1%SEL_FG%\2/g' \
157
-e 's/^\(\$inverse_disabled_fg_color:.*\)\$white\(.*\)$/\1%SEL_FG%\2/g' \
158
-e 's/^\(\$inverse_disabled_secondary_fg_color:.*\)\$white\(.*\)$/\1%SEL_FG%\2/g' \
159
-e 's/^\(\$inverse_track_color:.*\)\$white\(.*\)$/\1%SEL_FG%\2/g' \
160
-e 's/^\(\$inverse_divider_color:.*\)\$white\(.*\)$/\1%SEL_FG%\2/g' \
161
\
162
-e 's/^\(\$bg_color:.*\$variant.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%BG%\2%MENU_BG%\3/g' \
163
-e 's/^\(\$base_color:.*\$variant.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%TXT_BG%\2%MENU_BG%\3/g' \
164
-e 's/^\(\$alt_base_color:.*\$variant.*\)\$\w\+\(.*\)$/\1%BTN_BG%\2/g' \
165
-e 's/^\(\$lighter_bg_color:.*\$variant.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%BTN_BG%\2%BTN_BG%\3/g' \
166
-e 's/^\(\$darker_bg_color:.*\$variant.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%BG%\2%MENU_BG%\3/g' \
167
\
168
-e 's/^\(\$titlebar_bg_color:.*\$variant.*\)\$\w\+\(.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%MENU_BG%\2%MENU_BG%\3%MENU_BG%\4/g' \
169
-e 's/^\(\$alt_titlebar_bg_color:.*\$titlebar.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%MENU_BG%\2%MENU_BG%\3/g' \
170
-e 's/^\(\$panel_bg_color:.*\)$black\(.*\)$/\1%MENU_BG%\2/g' \
171
-e 's/^\(\$solid_panel_bg_color:.*\$titlebar.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%MENU_BG%\2%MENU_BG%\3/g' \
172
-e 's/^\(\$opaque_panel_bg_color:.*\$titlebar.*\)\$\w\+\(.*\)\$\w\+\(.*\)\$\w\+\(.*\)$/\1%MENU_BG%\2%MENU_BG%\3%MENU_BG%\4/g' \
173
-e 's/^\(\$alt_panel_bg_color:.*\)$black\(.*\)$/\1%MENU_BG%\2/g' \
174
\
175
-e 's/^\(\$primary_color:\).*;.*$/\1 %SEL_BG%;/g' \
176
-e 's/^\(\$alt_primary_color:\).*;.*$/\1 %SEL_BG2%;/g' \
177
-e 's/^\(\$accent_color:\).*;.*$/\1 %ACCENT_BG%;/g' \
178
\
179
-e 's/$black/%FG%/g' \
180
-e 's/#000000/%FG%/g' \
181
-e 's/$grey_900/%FG%/g' \
182
-e 's/#212121/%FG%/g' \
183
-e 's/$grey_500/%INACTIVE_FG%/g' \
184
-e 's/$9E9E9E/%INACTIVE_FG%/g' \
185
-e 's/$grey_400/%MENU_BG2%/g' \
186
-e 's/#BDBDBD/%MENU_BG2%/g' \
187
-e 's/$grey_300/%SEL_BG%/g' \
188
-e 's/#E0E0E0/%SEL_BG%/g' \
189
-e 's/$grey_200/%BG2%/g' \
190
-e 's/$grey_100/%BG%/g' \
191
-e 's/#F5F5F5/%BG%/g' \
192
-e 's/$grey_50/%BTN_BG%/g' \
193
-e 's/#FAFAFA/%BTN_BG%/g' \
194
-e 's/$pink_A200/%ACCENT_BG%/g' \
195
-e 's/#FF4081/%ACCENT_BG%/g' \
196
-e 's/$blue_400/%SEL_BG%/g' \
197
-e 's/#42A5F5/%SEL_BG%/g' \
198
-e 's/$light_blue_A200/%SEL_BG2%/g' \
199
-e 's/$white/%TXT_BG%/g' \
200
-e 's/#FFFFFF/%TXT_BG%/g' \
201
-e 's/$blue_grey_700/%MENU_BG%/g' \
202
-e 's/#333e43/%MENU_BG%/g' \
203
-e 's/#455A64/%MENU_BG%/g' \
204
-e 's/$blue_grey_800/%MENU_BG2%/g' \
205
-e 's/#3b484e/%MENU_BG2%/g' \
206
-e 's/$blue_grey_900/%MENU_BG3%/g' \
207
-e 's/#414f56/%MENU_BG3%/g' \
208
-e 's/Materia/%OUTPUT_THEME_NAME%/g' \
209
{} \; ;
210
done
211
212
#Not implemented yet:
213
#-e 's/%HDR_BTN_BG%/'"$HDR_BTN_BG"'/g' \
214
#-e 's/%HDR_BTN_FG%/'"$HDR_BTN_FG"'/g' \
215
#-e 's/%WM_BORDER_FOCUS%/'"$WM_BORDER_FOCUS"'/g' \
216
#-e 's/%WM_BORDER_UNFOCUS%/'"$WM_BORDER_UNFOCUS"'/g' \
217
#-e 's/%ROUNDNESS%/'"$ROUNDNESS"'/g' \
218
#-e 's/%SPACING%/'"$SPACING"'/g' \
219
#-e 's/%INACTIVE_FG%/'"$INACTIVE_FG"'/g' \
220
#-e 's/%INACTIVE_TXT_FG%/'"$INACTIVE_TXT_FG"'/g' \
221
#-e 's/%INACTIVE_MENU_FG%/'"$INACTIVE_MENU_FG"'/g' \
222
#-e 's/%ICONS_DARK%/'"$ICONS_DARK"'/g' \
223
#-e 's/%ICONS_MEDIUM%/'"$ICONS_MEDIUM"'/g' \
224
#-e 's/%ICONS_LIGHT%/'"$ICONS_LIGHT"'/g' \
225
#-e 's/%ICONS_LIGHT_FOLDER%/'"$ICONS_LIGHT_FOLDER"'/g' \
226
227
#echo "You can debug TEMP DIR: ${tempdir}, press [Enter] when finish" && read
228
229
echo "== Filling the template with the new colorscheme..."
230
for FILEPATH in "${PATHLIST[@]}"; do
231
find "${FILEPATH}" -type f -exec sed -i'' \
232
-e 's/%BG%/#'"$BG"'/g' \
233
-e 's/%BG2%/#'"$(darker $BG)"'/g' \
234
-e 's/%FG%/#'"$FG"'/g' \
235
-e 's/%ACCENT_BG%/#'"$ACCENT_BG"'/g' \
236
-e 's/%SEL_BG%/#'"$SEL_BG"'/g' \
237
-e 's/%SEL_BG2%/#'"$(darker $SEL_BG -20)"'/g' \
238
-e 's/%SEL_FG%/#'"$SEL_FG"'/g' \
239
-e 's/%TXT_BG%/#'"$TXT_BG"'/g' \
240
-e 's/%TXT_FG%/#'"$TXT_FG"'/g' \
241
-e 's/%MENU_BG%/#'"$MENU_BG"'/g' \
242
-e 's/%MENU_BG2%/#'"$(darker $MENU_BG 10)"'/g' \
243
-e 's/%MENU_BG3%/#'"$(darker $MENU_BG 20)"'/g' \
244
-e 's/%MENU_FG%/#'"$MENU_FG"'/g' \
245
-e 's/%BTN_BG%/#'"$BTN_BG"'/g' \
246
-e 's/%BTN_FG%/#'"$BTN_FG"'/g' \
247
-e 's/%HDR_BTN_BG%/#'"$HDR_BTN_BG"'/g' \
248
-e 's/%HDR_BTN_FG%/#'"$HDR_BTN_FG"'/g' \
249
-e 's/%WM_BORDER_FOCUS%/#'"$WM_BORDER_FOCUS"'/g' \
250
-e 's/%WM_BORDER_UNFOCUS%/#'"$WM_BORDER_UNFOCUS"'/g' \
251
-e 's/%ROUNDNESS%/'"$ROUNDNESS"'/g' \
252
-e 's/%SPACING%/'"$SPACING"'/g' \
253
-e 's/%INACTIVE_FG%/#'"$INACTIVE_FG"'/g' \
254
-e 's/%INACTIVE_TXT_FG%/#'"$INACTIVE_TXT_FG"'/g' \
255
-e 's/%INACTIVE_MENU_FG%/#'"$INACTIVE_MENU_FG"'/g' \
256
-e 's/%ICONS_DARK%/#'"$ICONS_DARK"'/g' \
257
-e 's/%ICONS_MEDIUM%/#'"$ICONS_MEDIUM"'/g' \
258
-e 's/%ICONS_LIGHT%/#'"$ICONS_LIGHT"'/g' \
259
-e 's/%ICONS_LIGHT_FOLDER%/#'"$ICONS_LIGHT_FOLDER"'/g' \
260
-e 's/%OUTPUT_THEME_NAME%/'"$OUTPUT_THEME_NAME"'/g' \
261
{} \; ;
262
done
263
264
rm ./src/gtk-3.0/3.{18,20,22}/*.css
265
if [[ ${MATERIA_MENUBAR_STYLE} == "contrast" ]] ; then
266
rm ./src/gtk-3.0/3.{18,20,22}/gtk-light*.scss
267
else
268
rm ./src/gtk-3.0/3.{18,20,22}/gtk{,-compact}.scss || true
269
fi
270
if [[ ${GTK3_GENERATE_DARK} != "true" ]] ; then
271
grep -v "\-dark" ./src/gtk-3.0/gtk-common/assets.txt > ./new_assets.txt
272
mv ./new_assets.txt ./src/gtk-3.0/gtk-common/assets.txt
273
rm ./src/gtk-3.0/3.{20,22}/gtk-dark-compact.scss
274
rm ./src/gtk-3.0/3.{18,20,22}/gtk-dark.scss
275
fi
276
if [[ ${GTK2_HIDPI} == "true" ]] ; then
277
mv ./src/gtk-2.0/main.rc.hidpi ./src/gtk-2.0/main.rc
278
fi
279
if [[ ${EXPORT_QT5CT} = 1 ]] ; then
280
config_home=${XDG_CONFIG_HOME:-}
281
if [[ -z "${config_home}" ]] ; then
282
config_home="${HOME}/.config"
283
fi
284
qt5ct_colors_dir="${config_home}/qt5ct/colors/"
285
test -d ${qt5ct_colors_dir} || mkdir -p ${qt5ct_colors_dir}
286
mv ./src/qt5ct_palette.conf "${qt5ct_colors_dir}/${OUTPUT_THEME_NAME}.conf"
287
fi
288
if [[ ${UNITY_DEFAULT_LAUNCHER_STYLE} == "true" ]] ; then
289
rm ./src/unity/launcher*.svg
290
fi
291
292
if [[ ${MATERIA_STYLE_COMPACT} == "true" ]] ; then
293
SIZE_VARIANTS="-compact"
294
else
295
SIZE_VARIANTS=","
296
fi
297
if [[ ${MATERIA_MENUBAR_STYLE} == "contrast" ]] ; then
298
COLOR_VARIANTS=","
299
else
300
COLOR_VARIANTS="-light"
301
fi
302
303
SIZE_VARIANTS="${SIZE_VARIANTS}" COLOR_VARIANTS="${COLOR_VARIANTS}" THEME_DIR_BASE=${DEST_PATH} ./parse-sass.sh
304
305
rm ./src/gtk-2.0/assets/*.png || true
306
rm ./src/gtk-2.0/assets-dark/*.png || true
307
rm ./src/gtk-3.0/gtk-common/assets/*.png || true
308
309
echo "== Rendering GTK+2 assets..."
310
cd ./src/gtk-2.0
311
GTK2_HIDPI=${GTK2_HIDPI} ./render-assets.sh
312
cd ../../
313
314
echo "== Rendering GTK+3 assets..."
315
cd ./src/gtk-3.0/gtk-common
316
./render-assets.sh
317
cd ../../..
318
319
SIZE_VARIANTS="${SIZE_VARIANTS}" COLOR_VARIANTS="${COLOR_VARIANTS}" THEME_DIR_BASE=${DEST_PATH} ./install.sh
320
321
GENERATED_PATH="${DEST_PATH}$(tr -d ',' <<<${COLOR_VARIANTS})$(tr -d ',' <<<${SIZE_VARIANTS})"
322
if [[ ! "${GENERATED_PATH}" = "${DEST_PATH}" ]] ; then
323
if [[ -d "${DEST_PATH}" ]] ; then
324
rm -r "${DEST_PATH}"
325
fi
326
mv "${GENERATED_PATH}" "${DEST_PATH}"
327
fi
328
329
echo
330
echo "== SUCCESS"
331
echo "== The theme was installed to '${DEST_PATH}'"
332
exit 0
333