forked from vinceliuice/Canta-theme
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install.sh
executable file
·122 lines (101 loc) · 6.14 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/bash
#set -ueo pipefail
#set -x
ROOT_UID=0
DEST_DIR=
# Destination directory
if [ "$UID" -eq "$ROOT_UID" ]; then
DEST_DIR="/usr/share/themes"
else
DEST_DIR="$HOME/.themes"
fi
SRC_DIR=$(cd $(dirname $0) && pwd)
THEME_NAME=Canta
COLOR_VARIANTS=('' '-dark' '-light')
SIZE_VARIANTS=('' '-compact')
RADIUS_VARIANTS=('' '-square')
usage() {
printf "%s\n" "Usage: $0 [OPTIONS...]"
printf "\n%s\n" "OPTIONS:"
printf " %-25s%s\n" "-d, --dest DIR" "Specify theme destination directory (Default: ${DEST_DIR})"
printf " %-25s%s\n" "-n, --name NAME" "Specify theme name (Default: ${THEME_NAME})"
printf " %-25s%s\n" "-c, --color VARIANTS..." "Specify theme color variant(s) [standard|dark|light] (Default: All variants)"
printf " %-25s%s\n" "-s, --size VARIANT" "Specify theme size variant [standard|compact] (Default: All variants)"
printf " %-25s%s\n" "-h, --help" "Show this help"
printf "\n%s\n" "INSTALLATION EXAMPLES:"
printf "%s\n" "Install all theme variants into ~/.themes"
printf " %s\n" "$0 --dest ~/.themes"
printf "%s\n" "Install standard theme variant only"
printf " %s\n" "$0 --color standard --size standard"
printf "%s\n" "Install specific theme variants with different name into ~/.themes"
printf " %s\n" "$0 --dest ~/.themes --name MyTheme --color light dark --size compact"
}
install() {
local dest=${1}
local name=${2}
local color=${3}
local size=${4}
local radius=${5}
[[ ${color} == '-dark' ]] && local ELSE_DARK=${color}
[[ ${color} == '-light' ]] && local ELSE_LIGHT=${color}
local THEME_DIR=${DEST_DIR}/${name}${color}${size}${radius}
[[ -d ${THEME_DIR} ]] && rm -rf ${THEME_DIR}
echo "Installing '${THEME_DIR}'..."
mkdir -p ${THEME_DIR}
cp -ur ${SRC_DIR}/COPYING ${THEME_DIR}
cp -ur ${SRC_DIR}/AUTHORS ${THEME_DIR}
echo "[Desktop Entry]" >> ${THEME_DIR}/index.theme
echo "Type=X-GNOME-Metatheme" >> ${THEME_DIR}/index.theme
echo "Name=Canta${color}${size}${radius}" >> ${THEME_DIR}/index.theme
echo "Comment=An Flat Gtk+ theme based on Material Design" >> ${THEME_DIR}/index.theme
echo "Encoding=UTF-8" >> ${THEME_DIR}/index.theme
echo "" >> ${THEME_DIR}/index.theme
echo "[X-GNOME-Metatheme]" >> ${THEME_DIR}/index.theme
echo "GtkTheme=Canta${color}${size}${radius}" >> ${THEME_DIR}/index.theme
echo "MetacityTheme=Canta${color}${size}${radius}" >> ${THEME_DIR}/index.theme
echo "IconTheme=Adwaita" >> ${THEME_DIR}/index.theme
echo "CursorTheme=Adwaita" >> ${THEME_DIR}/index.theme
echo "ButtonLayout=menu:minimize,maximize,close" >> ${THEME_DIR}/index.theme
mkdir -p ${THEME_DIR}/gnome-shell
cp -ur ${SRC_DIR}/src/gnome-shell/{*.svg,extensions,noise-texture.png,pad-osd.css} ${THEME_DIR}/gnome-shell
cp -ur ${SRC_DIR}/src/gnome-shell/assets${ELSE_DARK} ${THEME_DIR}/gnome-shell/assets
cp -ur ${SRC_DIR}/src/gnome-shell/common-assets/{*.svg,dash} ${THEME_DIR}/gnome-shell/assets
cp -ur ${SRC_DIR}/src/gnome-shell/custom-assets/activities${ELSE_LIGHT}.svg ${THEME_DIR}/gnome-shell/assets/activities.svg
cp -ur ${SRC_DIR}/src/gnome-shell/custom-assets/activities-active${ELSE_LIGHT}.svg ${THEME_DIR}/gnome-shell/assets/activities-active.svg
cp -ur ${SRC_DIR}/src/gnome-shell/gnome-shell${color}${size}.css ${THEME_DIR}/gnome-shell/gnome-shell.css
# glib-compile-resources \
# --sourcedir=${THEME_DIR}/gnome-shell \
# --target=${THEME_DIR}/gnome-shell/gnome-shell-theme.gresource \
# ${SRC_DIR}/src/gnome-shell/gnome-shell-theme.gresource.xml
mkdir -p ${THEME_DIR}/gtk-2.0
cp -ur ${SRC_DIR}/src/gtk-2.0/{apps.rc,hacks.rc,main.rc} ${THEME_DIR}/gtk-2.0
cp -ur ${SRC_DIR}/src/gtk-2.0/assets${ELSE_DARK} ${THEME_DIR}/gtk-2.0/assets
cp -ur ${SRC_DIR}/src/gtk-2.0/gtkrc${color} ${THEME_DIR}/gtk-2.0/gtkrc
cp -ur ${SRC_DIR}/src/gtk/assets ${THEME_DIR}/gtk-assets
mkdir -p ${THEME_DIR}/gtk-3.0
ln -sf ../gtk-assets ${THEME_DIR}/gtk-3.0/assets
cp -ur ${SRC_DIR}/src/gtk/gtk${color}${size}${radius}.css ${THEME_DIR}/gtk-3.0/gtk.css
[[ ${color} != '-dark' ]] && \
cp -ur ${SRC_DIR}/src/gtk/gtk-dark${size}${radius}.css ${THEME_DIR}/gtk-3.0/gtk-dark.css
mkdir -p ${THEME_DIR}/metacity-1
cp -ur ${SRC_DIR}/src/metacity-1/assets/*.png ${THEME_DIR}/metacity-1
cp -ur ${SRC_DIR}/src/metacity-1/metacity-theme-1${color}.xml ${THEME_DIR}/metacity-1/metacity-theme-1.xml
cd ${THEME_DIR}/metacity-1
ln -s metacity-theme-1.xml metacity-theme-2.xml
ln -s metacity-theme-1.xml metacity-theme-3.xml
mkdir -p ${THEME_DIR}/unity
cp -ur ${SRC_DIR}/src/unity/{*.svg,*.png,dash-widgets.json} ${THEME_DIR}/unity
cp -ur ${SRC_DIR}/src/unity/assets${ELSE_LIGHT} ${THEME_DIR}/unity/assets
mkdir -p ${THEME_DIR}/xfwm4
cp -ur ${SRC_DIR}/src/xfwm4/{*.svg,themerc} ${THEME_DIR}/xfwm4
cp -ur ${SRC_DIR}/src/xfwm4/assets${ELSE_LIGHT} ${THEME_DIR}/xfwm4/assets
}
for color in "${colors[@]:-${COLOR_VARIANTS[@]}}"; do
for size in "${sizes[@]:-${SIZE_VARIANTS[@]}}"; do
for radius in "${radiuss[@]:-${RADIUS_VARIANTS[@]}}"; do
install "${dest:-${DEST_DIR}}" "${name:-${THEME_NAME}}" "${color}" "${size}" "${radius}"
done
done
done
echo
echo Done.