1#!/bin/bash
2
3TMP='/tmp/flat-remix-gtk'
4VARIANTS=(Blue Red Green Yellow)
5VARIANT_COLORS=('#2777ff' '#ec0101' '#06a284' '#ffd86e')
6VARIANT_SELECTED_FONT_COLORS=('white' 'white' 'white' 'black' )
7DEFAULT_COLOR='#367bf0'
8
9
10function generate_variant_template {
11	variant="$1"
12	variant_name="$2"
13	variant_color="$3"
14	variant_selected_font_color="$4"
15	for theme in variant-templates/*
16	do
17		theme_basename="$(basename "$theme")"
18		variant_dir="$TMP/${variant_name}${theme_basename#Flat-Remix-GTK}"
19		cp -a "$theme" "$variant_dir"
20		find "$variant_dir" -type f -exec sed "s/${DEFAULT_COLOR}/${variant_color}/gi" -i {} \;
21		sed "s/selected_fg_color: #ffffff/selected_fg_color: $variant_selected_font_color/" -i "$variant_dir"/gtk-2.0/gtkrc
22		case "$theme_basename" in
23			*Darkest*)
24				cp thumbnails/gtk-3.0/thumbnail-darkest-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/gtk-3.0/thumbnail.png
25				cp thumbnails/cinnamon/thumbnail-darkest-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/cinnamon/thumbnail.png
26				icon_variant='-Dark'
27				;;
28			*Dark|*Dark-*)
29				cp thumbnails/gtk-3.0/thumbnail-dark-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/gtk-3.0/thumbnail.png
30				cp thumbnails/cinnamon/thumbnail-dark-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/cinnamon/thumbnail.png
31				icon_variant='-Dark'
32				;;
33			*Darker)
34				cp thumbnails/gtk-3.0/thumbnail-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/gtk-3.0/thumbnail.png
35				cp thumbnails/cinnamon/thumbnail-darker-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/cinnamon/thumbnail.png
36				icon_variant=''
37				;;
38			*)
39				cp thumbnails/gtk-3.0/thumbnail-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/gtk-3.0/thumbnail.png
40				cp thumbnails/cinnamon/thumbnail-"${variant_name##Flat-Remix-GTK-}".png "$variant_dir"/cinnamon/thumbnail.png
41				icon_variant=''
42				;;
43		esac
44		sed -e "s/Flat-Remix-GTK/${variant_name}/g" \
45		    -e "s/IconTheme=Flat-Remix/IconTheme=Flat-Remix-${variant}${icon_variant}/" \
46		    -i "$variant_dir/index.theme"
47	done
48}
49
50function generate_css_files { (
51	variant_name="$1"
52	variant_color="$2"
53	variant_selected_font_color="$3"
54	mkdir -p "$TMP/css/$variant_name"
55	cd sass || return
56	for scss in *.scss
57	do
58		echo -e "Generate $variant_name \t $scss"
59		echo "\$selected_bg_color: $variant_color; \$selected_fg_color: ${variant_selected_font_color};" | \
60				cat - "$scss" | \
61				scss --sourcemap=none -C -q -s "$TMP/css/$variant_name/$(basename "${scss%%.scss}")".css &
62	done
63	wait
64) }
65
66function copy_css_files {
67	variant_name="$1"
68	cp "$TMP/css/${variant_name}/gtk.css" "$TMP/${variant_name}/gtk-3.0/gtk.css"
69	cp "$TMP/css/${variant_name}/gtk-solid.css" "$TMP/${variant_name}-Solid/gtk-3.0/gtk.css"
70
71	cp "$TMP/css/${variant_name}/gtk-dark.css" "$TMP/${variant_name}/gtk-3.0/gtk-dark.css"
72	cp "$TMP/css/${variant_name}/gtk-dark.css" "$TMP/${variant_name}-Dark/gtk-3.0/gtk.css"
73	cp "$TMP/css/${variant_name}/gtk-dark.css" "$TMP/${variant_name}-Darker/gtk-3.0/gtk-dark.css"
74	cp "$TMP/css/${variant_name}/gtk-dark-solid.css" "$TMP/${variant_name}-Solid/gtk-3.0/gtk-dark.css"
75	cp "$TMP/css/${variant_name}/gtk-dark-solid.css" "$TMP/${variant_name}-Dark-Solid/gtk-3.0/gtk.css"
76	cp "$TMP/css/${variant_name}/gtk-dark-solid.css" "$TMP/${variant_name}-Darker-Solid/gtk-3.0/gtk-dark.css"
77
78	cp "$TMP/css/${variant_name}/gtk-darker.css" "$TMP/${variant_name}-Darker/gtk-3.0/gtk.css"
79	cp "$TMP/css/${variant_name}/gtk-darker-solid.css" "$TMP/${variant_name}-Darker-Solid/gtk-3.0/gtk.css"
80
81	cp "$TMP/css/${variant_name}/gtk-darkest.css" "$TMP/${variant_name}-Darkest/gtk-3.0/gtk.css"
82	cp "$TMP/css/${variant_name}/gtk-darkest-solid.css" "$TMP/${variant_name}-Darkest-Solid/gtk-3.0/gtk.css"
83	cp "$TMP/css/${variant_name}/gtk-darkest-noBorder.css" "$TMP/${variant_name}-Darkest-NoBorder/gtk-3.0/gtk.css"
84	cp "$TMP/css/${variant_name}/gtk-darkest-solid-noBorder.css" "$TMP/${variant_name}-Darkest-Solid-NoBorder/gtk-3.0/gtk.css"
85
86
87	cp "$TMP/css/${variant_name}/cinnamon.css" "$TMP/${variant_name}/cinnamon/cinnamon.css"
88	cp "$TMP/css/${variant_name}/cinnamon-solid.css" "$TMP/${variant_name}-Solid/cinnamon/cinnamon.css"
89
90	cp "$TMP/css/${variant_name}/cinnamon-darker.css" "$TMP/${variant_name}-Darker/cinnamon/cinnamon.css"
91	cp "$TMP/css/${variant_name}/cinnamon-darker-solid.css" "$TMP/${variant_name}-Darker-Solid/cinnamon/cinnamon.css"
92
93	cp "$TMP/css/${variant_name}/cinnamon-dark.css" "$TMP/${variant_name}-Dark/cinnamon/cinnamon.css"
94	cp "$TMP/css/${variant_name}/cinnamon-dark-solid.css" "$TMP/${variant_name}-Dark-Solid/cinnamon/cinnamon.css"
95
96	cp "$TMP/css/${variant_name}/cinnamon-darkest.css" "$TMP/${variant_name}-Darkest/cinnamon/cinnamon.css"
97	cp "$TMP/css/${variant_name}/cinnamon-darkest.css" "$TMP/${variant_name}-Darkest-NoBorder/cinnamon/cinnamon.css"
98	cp "$TMP/css/${variant_name}/cinnamon-darkest-solid.css" "$TMP/${variant_name}-Darkest-Solid/cinnamon/cinnamon.css"
99	cp "$TMP/css/${variant_name}/cinnamon-darkest-solid.css" "$TMP/${variant_name}-Darkest-Solid-NoBorder/cinnamon/cinnamon.css"
100}
101
102function generate_assets {
103	variant_name="$1"
104	variant_color="$2"
105	mkdir -p "$TMP/assets-renderer"
106	cp -r assets-renderer "$TMP/assets-renderer/$variant_name"
107	find "$TMP/assets-renderer/$variant_name" -type f -exec sed "s/${DEFAULT_COLOR}/${variant_color}/gi" -i {} \;
108	"$TMP"/assets-renderer/"$variant_name"/gtk2/render-assets.sh &
109	"$TMP"/assets-renderer/"$variant_name"/gtk3/render-assets.sh &
110	"$TMP"/assets-renderer/"$variant_name"/metacity/render-assets.sh &
111	"$TMP"/assets-renderer/"$variant_name"/xfwm4/render-assets.sh &
112	wait
113
114	for theme in "$TMP/$variant_name"*
115	do
116		case "$theme" in
117			*Darkest*)
118				cp "$TMP"/assets-renderer/"$variant_name"/gtk2/assets-darkest/* "$theme"/gtk-2.0/assets/
119				cp "$TMP"/assets-renderer/"$variant_name"/metacity/metacity-darkest/* "$theme"/metacity-1/
120				if [[ "$theme" == *NoBorder* ]]
121					then cp "$TMP"/assets-renderer/"$variant_name"/xfwm4/assets-darkest-noBorder/* "$theme"/xfwm4/
122					else cp "$TMP"/assets-renderer/"$variant_name"/xfwm4/assets-darkest/* "$theme"/xfwm4/
123				fi
124				;;
125			*Dark|*Dark-*)
126				cp "$TMP"/assets-renderer/"$variant_name"/gtk2/assets-dark/* "$theme"/gtk-2.0/assets/
127				cp "$TMP"/assets-renderer/"$variant_name"/metacity/metacity-dark/* "$theme"/metacity-1/
128				cp "$TMP"/assets-renderer/"$variant_name"/xfwm4/assets-dark/* "$theme"/xfwm4/
129				;;
130			*Darker|*Darker-*)
131				cp "$TMP"/assets-renderer/"$variant_name"/gtk2/assets/* "$theme"/gtk-2.0/assets/
132				cp "$TMP"/assets-renderer/"$variant_name"/metacity/metacity-darkest/* "$theme"/metacity-1/
133				cp "$TMP"/assets-renderer/"$variant_name"/xfwm4/assets-darkest-noBorder/* "$theme"/xfwm4/
134				;;
135			*)
136				cp "$TMP"/assets-renderer/"$variant_name"/gtk2/assets/* "$theme"/gtk-2.0/assets/
137				cp "$TMP"/assets-renderer/"$variant_name"/metacity/metacity/* "$theme"/metacity-1/
138				cp "$TMP"/assets-renderer/"$variant_name"/xfwm4/assets/* "$theme"/xfwm4/
139				;;
140		esac
141		cp "$TMP"/assets-renderer/"$variant_name"/gtk2/menubar-toolbar/* "$theme"/gtk-2.0/menubar-toolbar/
142		cp "$TMP"/assets-renderer/"$variant_name"/gtk3/assets/* "$theme"/gtk-3.0/assets/
143		cp "$TMP"/assets-renderer/"$variant_name"/cinnamon/* "$theme"/cinnamon/assets/
144	done
145}
146
147function generate_variant {
148	variant="$2"
149	variant_name="$3"
150	variant_color="$4"
151	variant_selected_font_color="$5"
152
153	generate_variant_template "$variant" "$variant_name" "$variant_color" "$variant_selected_font_color"
154	generate_css_files "$variant_name" "$variant_color" "$variant_selected_font_color"
155	copy_css_files "$variant_name"
156	[[ $1 != "--no-assets" ]] && generate_assets "$variant_name" "$variant_color"
157	cp -a "$TMP/$variant_name"* ..
158}
159
160
161rm -rf "$TMP"
162mkdir -p "$TMP"
163
164for i in $(seq 0 $((${#VARIANTS[*]}-1)))
165do
166	variant="${VARIANTS[$i]}"
167	variant_name="Flat-Remix-GTK-${variant}"
168	variant_color="${VARIANT_COLORS[$i]}"
169	variant_selected_font_color="${VARIANT_SELECTED_FONT_COLORS[$i]}"
170	generate_variant "$1" "$variant" "$variant_name" "$variant_color" "$variant_selected_font_color" &
171done
172wait
173
174