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