test.sh
Bourne-Again shell script, ASCII text executable
1
#!/bin/bash
2
#
3
# Once run the script, no need to run ./install.sh for testing. ;)
4
# Without an argument, this will install only normal variant.
5
# Valid arguments are:
6
#
7
# compact dark dark-compact light light-compact all uninstall
8
#
9
# FIXME: `unity` and `xfwm4` are not fully supported for now since `*.svg` link incorrect locales (with '-light' variant).
10
# FIXME: Multiple arguments should be allowed.
11
12
REPO_DIR=$(cd $(dirname $0) && pwd)
13
SRC_PATH=${REPO_DIR}/src
14
15
DEST_DIR=~/.themes
16
THEME_NAME=Materia.dev
17
COLOR_VARIANTS=('' '-dark' '-light')
18
SIZE_VARIANTS=('' '-compact')
19
20
GTK_VERSIONS=('3.18' '3.20' '3.22')
21
GS_VERSIONS=('3.18' '3.20' '3.22' '3.24' '3.26')
22
LATEST_GS_VERSION=${GS_VERSIONS[@]: -1}
23
24
# Set a proper gnome-shell theme version
25
if [[ $(which gnome-shell 2> /dev/null) ]]; then
26
CURRENT_GS_VERSION=$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -2)
27
for version in "${GS_VERSIONS[@]}"; do
28
if (( $(echo "$CURRENT_GS_VERSION <= $version" | bc) )); then
29
GS_VERSION=${version}
30
break
31
elif (( $(echo "$CURRENT_GS_VERSION > $LATEST_GS_VERSION" | bc) )); then
32
GS_VERSION=${LATEST_GS_VERSION}
33
break
34
fi
35
done
36
else
37
GS_VERSION=${LATEST_GS_VERSION}
38
fi
39
40
test() {
41
local color=${1}
42
local size=${2}
43
44
[[ ${color} == '-dark' ]] && local ELSE_DARK=${color}
45
[[ ${color} == '-light' ]] && local ELSE_LIGHT=${color}
46
47
local THEME_DIR=${DEST_DIR}/${THEME_NAME}${color}${size}
48
49
mkdir -p ${THEME_DIR}
50
ln -sfT ${SRC_PATH}/index${color}${size}.theme ${THEME_DIR}/index.theme
51
52
mkdir -p ${THEME_DIR}/gnome-shell
53
ln -sf ${SRC_PATH}/gnome-shell/${GS_VERSION}/{extensions,pad-osd.css} ${THEME_DIR}/gnome-shell
54
ln -sfT ${SRC_PATH}/gnome-shell/${GS_VERSION}/assets${ELSE_DARK} ${THEME_DIR}/gnome-shell/assets
55
ln -sfT ${SRC_PATH}/gnome-shell/${GS_VERSION}/gnome-shell${color}${size}.css ${THEME_DIR}/gnome-shell/gnome-shell.css
56
57
mkdir -p ${THEME_DIR}/gtk-2.0
58
ln -sf ${SRC_PATH}/gtk-2.0/{apps.rc,hacks.rc,main.rc} ${THEME_DIR}/gtk-2.0
59
ln -sfT ${SRC_PATH}/gtk-2.0/assets${ELSE_DARK} ${THEME_DIR}/gtk-2.0/assets
60
ln -sfT ${SRC_PATH}/gtk-2.0/gtkrc${color} ${THEME_DIR}/gtk-2.0/gtkrc
61
62
mkdir -p ${THEME_DIR}/gtk-common
63
ln -sf ${SRC_PATH}/gtk-3.0/gtk-common/assets ${THEME_DIR}/gtk-common
64
65
for version in "${GTK_VERSIONS[@]}"; do
66
if [[ ${version} == '3.18' ]]; then
67
mkdir -p ${THEME_DIR}/gtk-3.0
68
ln -sf ${SRC_PATH}/gtk-3.0/${version}/assets ${THEME_DIR}/gtk-3.0
69
ln -sfT ${SRC_PATH}/gtk-3.0/${version}/gtk${color}.css ${THEME_DIR}/gtk-3.0/gtk.css
70
[[ ${color} != '-dark' ]] && \
71
ln -sfT ${SRC_PATH}/gtk-3.0/${version}/gtk-dark.css ${THEME_DIR}/gtk-3.0/gtk-dark.css
72
else
73
mkdir -p ${THEME_DIR}/gtk-${version}
74
ln -sf ${SRC_PATH}/gtk-3.0/${version}/assets ${THEME_DIR}/gtk-${version}
75
ln -sfT ${SRC_PATH}/gtk-3.0/${version}/gtk${color}${size}.css ${THEME_DIR}/gtk-${version}/gtk.css
76
[[ ${color} != '-dark' ]] && \
77
ln -sfT ${SRC_PATH}/gtk-3.0/${version}/gtk-dark${size}.css ${THEME_DIR}/gtk-${version}/gtk-dark.css
78
fi
79
done
80
81
mkdir -p ${THEME_DIR}/metacity-1
82
ln -sf ${SRC_PATH}/metacity-1/assets ${THEME_DIR}/metacity-1
83
ln -sfT ${SRC_PATH}/metacity-1/metacity-theme-2${ELSE_LIGHT}.xml ${THEME_DIR}/metacity-1/metacity-theme-2.xml
84
ln -sfT ${SRC_PATH}/metacity-1/metacity-theme-3${ELSE_LIGHT}.xml ${THEME_DIR}/metacity-1/metacity-theme-3.xml
85
86
mkdir -p ${THEME_DIR}/unity
87
ln -sf ${SRC_PATH}/unity/{*.svg,*.png,dash-widgets.json} ${THEME_DIR}/unity
88
ln -sfT ${SRC_PATH}/unity/assets${ELSE_LIGHT} ${THEME_DIR}/unity/assets
89
90
mkdir -p ${THEME_DIR}/xfwm4
91
ln -sf ${SRC_PATH}/xfwm4/{*.svg,themerc} ${THEME_DIR}/xfwm4
92
ln -sfT ${SRC_PATH}/xfwm4/assets${ELSE_LIGHT} ${THEME_DIR}/xfwm4/assets
93
94
echo Installed to ${THEME_DIR}
95
}
96
97
case "${1}" in
98
"")
99
test '' ''
100
;;
101
compact)
102
test '' '-compact'
103
;;
104
dark)
105
test '-dark' ''
106
;;
107
dark-compact)
108
test '-dark' '-compact'
109
;;
110
light)
111
test '-light' ''
112
;;
113
light-compact)
114
test '-light' '-compact'
115
;;
116
all)
117
test '' ''
118
test '' '-compact'
119
test '-dark' ''
120
test '-dark' '-compact'
121
test '-light' ''
122
test '-light' '-compact'
123
;;
124
uninstall)
125
rm -rf ${DEST_DIR}/${THEME_NAME}{,-compact,-dark,-dark-compact,-light,-light-compact}
126
;;
127
*)
128
echo "Invalid argument: ${1}"
129
echo "Valid arguments are: compact dark dark-compact light light-compact all uninstall"
130
;;
131
esac
132