Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 438 lines (358 sloc) 15.6 KB
REPO_DIR="$(dirname "$(readlink -m "${0}")")"
SRC_DIR="$REPO_DIR/src"
source "${REPO_DIR}/gtkrc.sh"
ROOT_UID=0
DEST_DIR=
# Destination directory
if [[ "$UID" -eq "$ROOT_UID" ]]; then
DEST_DIR="/usr/share/themes"
else
DEST_DIR="$HOME/.themes"
fi
SASSC_OPT="-M -t expanded"
THEME_NAME=Orchis
THEME_VARIANTS=('' '-Purple' '-Pink' '-Red' '-Orange' '-Yellow' '-Green' '-Teal' '-Grey')
COLOR_VARIANTS=('' '-Light' '-Dark')
SIZE_VARIANTS=('' '-Compact')
# Old name variants
OLD_THEME_VARIANTS=('' '-purple' '-pink' '-red' '-orange' '-yellow' '-green' '-grey')
OLD_COLOR_VARIANTS=('' '-light' '-dark')
OLD_SIZE_VARIANTS=('' '-compact')
ctype=
# Check command availability
function has_command() {
command -v $1 > /dev/null
}
install() {
local dest="$1"
local name="$2"
local theme="$3"
local color="$4"
local size="$5"
local ctype="$6"
[[ "$color" == '-Dark' ]] && local ELSE_DARK="$color"
[[ "$color" == '-Light' ]] && local ELSE_LIGHT="$color"
local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
[[ -d "$THEME_DIR" ]] && rm -rf "$THEME_DIR"
theme_tweaks && install_theme_color
echo "Installing '$THEME_DIR'..."
mkdir -p "$THEME_DIR"
cp -r "$REPO_DIR/COPYING" "$THEME_DIR"
echo "[Desktop Entry]" >> "$THEME_DIR/index.theme"
echo "Type=X-GNOME-Metatheme" >> "$THEME_DIR/index.theme"
echo "Name==${2}${3}${4}${5}${6}" >> "$THEME_DIR/index.theme"
echo "Comment=An flat Materia Gtk+ theme based on Elegant 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==${2}${3}${4}${5}${6}" >> "$THEME_DIR/index.theme"
echo "MetacityTheme==${2}${3}${4}${5}${6}" >> "$THEME_DIR/index.theme"
echo "IconTheme=Tela-circle${ELSE_DARK:-}" >> "$THEME_DIR/index.theme"
echo "CursorTheme=Vimix${ELSE_DARK:-}" >> "$THEME_DIR/index.theme"
echo "ButtonLayout=close,minimize,maximize:menu" >> "$THEME_DIR/index.theme"
mkdir -p "$THEME_DIR/gnome-shell"
cp -r "$SRC_DIR/gnome-shell/pad-osd.css" "$THEME_DIR/gnome-shell"
if [[ "$tweaks" == 'true' ]]; then
sassc $SASSC_OPT "$SRC_DIR/gnome-shell/shell-$GS_VERSION/gnome-shell${ELSE_DARK:-}$size.scss" "$THEME_DIR/gnome-shell/gnome-shell.css"
else
cp -r "$SRC_DIR/gnome-shell/shell-$GS_VERSION/gnome-shell${ELSE_DARK:-}$size.css" "$THEME_DIR/gnome-shell/gnome-shell.css"
fi
cp -r "$SRC_DIR/gnome-shell/common-assets" "$THEME_DIR/gnome-shell/assets"
cp -r "$SRC_DIR/gnome-shell/assets${ELSE_DARK:-}/"*.svg "$THEME_DIR/gnome-shell/assets"
if [[ "$primary" == 'true' ]]; then
cp -r "$SRC_DIR/gnome-shell/theme$theme$ctype/checkbox${ELSE_DARK:-}.svg" "$THEME_DIR/gnome-shell/assets/checkbox.svg"
fi
cp -r "$SRC_DIR/gnome-shell/theme$theme$ctype/more-results${ELSE_DARK:-}.svg" "$THEME_DIR/gnome-shell/assets/more-results.svg"
cp -r "$SRC_DIR/gnome-shell/theme$theme$ctype/toggle-on${ELSE_DARK:-}.svg" "$THEME_DIR/gnome-shell/assets/toggle-on.svg"
cd "$THEME_DIR/gnome-shell"
ln -s assets/no-events.svg no-events.svg
ln -s assets/process-working.svg process-working.svg
ln -s assets/no-notifications.svg no-notifications.svg
mkdir -p "$THEME_DIR/gtk-2.0"
cp -r "$SRC_DIR/gtk-2.0/common/"{apps.rc,hacks.rc,main.rc} "$THEME_DIR/gtk-2.0"
cp -r "$SRC_DIR/gtk-2.0/assets-folder/assets-common${ELSE_DARK:-}$ctype" "$THEME_DIR/gtk-2.0/assets"
cp -r "$SRC_DIR/gtk-2.0/assets-folder/assets$theme${ELSE_DARK:-}$ctype/"*"png" "$THEME_DIR/gtk-2.0/assets"
if [[ "$primary" != "true" ]]; then
cp -rf "$SRC_DIR/gtk-2.0/assets-folder/assets-default-radio${ELSE_DARK:-}$ctype"/*.png "$THEME_DIR/gtk-2.0/assets"
fi
mkdir -p "$THEME_DIR/gtk-3.0"
cp -r "$SRC_DIR/gtk/assets$theme$ctype" "$THEME_DIR/gtk-3.0/assets"
cp -r "$SRC_DIR/gtk/scalable" "$THEME_DIR/gtk-3.0/assets"
cp -r "$SRC_DIR/gtk/thumbnails/thumbnail$theme${ELSE_DARK:-}$ctype.png" "$THEME_DIR/gtk-3.0/thumbnail.png"
if [[ "$tweaks" == 'true' ]]; then
sassc $SASSC_OPT "$SRC_DIR/gtk/3.0/gtk$color$size.scss" "$THEME_DIR/gtk-3.0/gtk.css"
sassc $SASSC_OPT "$SRC_DIR/gtk/3.0/gtk-Dark$size.scss" "$THEME_DIR/gtk-3.0/gtk-dark.css"
else
cp -r "$SRC_DIR/gtk/3.0/gtk$color$size.css" "$THEME_DIR/gtk-3.0/gtk.css"
cp -r "$SRC_DIR/gtk/3.0/gtk-Dark$size.css" "$THEME_DIR/gtk-3.0/gtk-dark.css"
fi
mkdir -p "$THEME_DIR/gtk-4.0"
cp -r "$SRC_DIR/gtk/assets$theme$ctype" "$THEME_DIR/gtk-4.0/assets"
cp -r "$SRC_DIR/gtk/scalable" "$THEME_DIR/gtk-4.0/assets"
if [[ "$tweaks" == 'true' ]]; then
sassc $SASSC_OPT "$SRC_DIR/gtk/4.0/gtk$color$size.scss" "$THEME_DIR/gtk-4.0/gtk.css"
sassc $SASSC_OPT "$SRC_DIR/gtk/4.0/gtk-Dark$size.scss" "$THEME_DIR/gtk-4.0/gtk-dark.css"
else
cp -r "$SRC_DIR/gtk/4.0/gtk$color$size.css" "$THEME_DIR/gtk-4.0/gtk.css"
cp -r "$SRC_DIR/gtk/4.0/gtk-Dark$size.css" "$THEME_DIR/gtk-4.0/gtk-dark.css"
fi
mkdir -p "$THEME_DIR/xfwm4"
if [[ "$macstyle" == "true" ]] ; then
cp -r "$SRC_DIR/xfwm4/assets${ELSE_LIGHT:-}$ctype-mac/"*.png "$THEME_DIR/xfwm4"
else
cp -r "$SRC_DIR/xfwm4/assets${ELSE_LIGHT:-}$ctype/"*.png "$THEME_DIR/xfwm4"
fi
cp -r "$SRC_DIR/xfwm4/themerc${ELSE_LIGHT:-}$ctype" "$THEME_DIR/xfwm4/themerc"
mkdir -p "$THEME_DIR/cinnamon"
cp -r "$SRC_DIR/cinnamon/common-assets" "$THEME_DIR/cinnamon/assets"
cp -r "$SRC_DIR/cinnamon/assets${ELSE_DARK:-}/"*.svg "$THEME_DIR/cinnamon/assets"
cp -r "$SRC_DIR/cinnamon/theme$theme$ctype/add-workspace-active${ELSE_DARK:-}.svg" "$THEME_DIR/cinnamon/assets/add-workspace-active.svg"
cp -r "$SRC_DIR/cinnamon/theme$theme$ctype/corner-ripple${ELSE_DARK:-}.svg" "$THEME_DIR/cinnamon/assets/corner-ripple.svg"
cp -r "$SRC_DIR/cinnamon/theme$theme$ctype/toggle-on${ELSE_DARK:-}.svg" "$THEME_DIR/cinnamon/assets/toggle-on.svg"
if [[ "$primary" == 'true' ]]; then
cp -r "$SRC_DIR/cinnamon/theme$theme$ctype/checkbox${ELSE_DARK:-}.svg" "$THEME_DIR/cinnamon/assets/checkbox.svg"
cp -r "$SRC_DIR/cinnamon/theme$theme$ctype/radiobutton${ELSE_DARK:-}.svg" "$THEME_DIR/cinnamon/assets/radiobutton.svg"
fi
if [[ "$tweaks" == 'true' ]]; then
sassc $SASSC_OPT "$SRC_DIR/cinnamon/cinnamon${ELSE_DARK:-}$size.scss" "$THEME_DIR/cinnamon/cinnamon.css"
else
cp -r "$SRC_DIR/cinnamon/cinnamon${ELSE_DARK:-}$size.css" "$THEME_DIR/cinnamon/cinnamon.css"
fi
cp -r "$SRC_DIR/cinnamon/thumbnails/thumbnail$theme${ELSE_DARK:-}$ctype.png" "$THEME_DIR/cinnamon/thumbnail.png"
mkdir -p "$THEME_DIR/metacity-1"
cp -r "$SRC_DIR/metacity-1/metacity-theme-2${color}.xml" "$THEME_DIR/metacity-1/metacity-theme-2.xml"
cp -r "$SRC_DIR/metacity-1/metacity-theme-3.xml" "$THEME_DIR/metacity-1"
cp -r "$SRC_DIR/metacity-1/assets" "$THEME_DIR/metacity-1"
cp -r "$SRC_DIR/metacity-1/thumbnail${ELSE_DARK:-}.png" "$THEME_DIR/metacity-1/thumbnail.png"
cd "$THEME_DIR/metacity-1" && ln -s metacity-theme-2.xml metacity-theme-1.xml
mkdir -p "$THEME_DIR/plank"
cp -r "$SRC_DIR/plank/"* "$THEME_DIR/plank"
}
uninstall() {
local dest="$1"
local name="$2"
local theme="$3"
local color="$4"
local size="$5"
local ctype="$6"
local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
[[ -d "$THEME_DIR" ]] && rm -rf "$THEME_DIR" && echo -e "Uninstalling "$THEME_DIR" ..."
}
clean() {
local dest="$1"
local name="$2"
local theme="$3"
local color="$4"
local size="$5"
local THEME_DIR="$dest/$name$theme$color$size"
if [[ "${theme}" == '' && "${color}" == '' && "${size}" == '' ]]; then
todo='nothing'
elif [[ -d "${THEME_DIR}" ]]; then
rm -rf "${THEME_DIR}"
echo -e "Find: ${THEME_DIR} ! removing it ..."
fi
}
uninstall_link() {
rm -rf "${HOME}/.config/gtk-4.0/"{assets,gtk.css,gtk-dark.css}
echo -e "\nRemoving ${HOME}/.config/gtk-4.0 links..."
}
link_libadwaita() {
local dest="$1"
local name="$2"
local theme="$3"
local color="$4"
local size="$5"
local ctype="$6"
local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
echo -e "\nLink '$THEME_DIR/gtk-4.0' to '${HOME}/.config/gtk-4.0' for libadwaita..."
mkdir -p "${HOME}/.config/gtk-4.0"
rm -rf "${HOME}/.config/gtk-4.0/"{assets,gtk.css,gtk-dark.css}
ln -sf "${THEME_DIR}/gtk-4.0/assets" "${HOME}/.config/gtk-4.0/assets"
ln -sf "${THEME_DIR}/gtk-4.0/gtk.css" "${HOME}/.config/gtk-4.0/gtk.css"
ln -sf "${THEME_DIR}/gtk-4.0/gtk-dark.css" "${HOME}/.config/gtk-4.0/gtk-dark.css"
}
# Install needed packages
install_package() {
if [ ! "$(which sassc 2> /dev/null)" ]; then
echo sassc needs to be installed to generate the css.
if has_command zypper; then
sudo zypper in sassc
elif has_command apt-get; then
sudo apt-get install sassc
elif has_command dnf; then
sudo dnf install sassc
elif has_command pacman; then
sudo pacman -S --noconfirm sassc
fi
fi
}
tweaks_temp() {
cp -rf ${SRC_DIR}/_sass/_tweaks.scss ${SRC_DIR}/_sass/_tweaks-temp.scss
}
change_radio_color() {
sed -i "/\$check_radio:/s/default/primary/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_compact_panel() {
sed -i "/\$panel_style:/s/float/compact/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_solid() {
sed -i "/\$opacity:/s/default/solid/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_black() {
sed -i "/\$blackness:/s/false/true/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_mac() {
sed -i "/\$mac_style:/s/false/true/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
round_corner() {
sed -i "/\$default_corner:/s/12px/${corner}/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_submenu() {
sed -i "/\$submenu_style:/s/false/true/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_nord() {
sed -i "/\@import/s/color-palette-default/color-palette-nord/" ${SRC_DIR}/_sass/_tweaks-temp.scss
sed -i "/\$colorscheme:/s/default/nord/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_dracula() {
sed -i "/\@import/s/color-palette-default/color-palette-dracula/" ${SRC_DIR}/_sass/_tweaks-temp.scss
sed -i "/\$colorscheme:/s/default/dracula/" ${SRC_DIR}/_sass/_tweaks-temp.scss
}
install_theme_color() {
if [[ "$theme" != '' ]]; then
case "$theme" in
-Purple)
theme_color='purple'
;;
-Pink)
theme_color='pink'
;;
-Red)
theme_color='red'
;;
-Orange)
theme_color='orange'
;;
-Yellow)
theme_color='yellow'
;;
-Green)
theme_color='green'
;;
-Teal)
theme_color='teal'
;;
-Grey)
theme_color='grey'
;;
esac
sed -i "/\$theme:/s/default/${theme_color}/" ${SRC_DIR}/_sass/_tweaks-temp.scss
fi
}
theme_tweaks() {
install_package; tweaks_temp
if [[ "$panel" == "compact" || "$opacity" == 'solid' || "$blackness" == "true" || "$accent" == "true" || "$primary" == "true" || "$round" == "true" || "$macstyle" == "true" || "$submenu" == "true" || "$nord" == 'true' || "$dracula" == 'true' ]]; then
tweaks='true'
fi
if [[ "$panel" == "compact" ]] ; then
install_compact_panel
fi
if [[ "$opacity" == "solid" ]] ; then
install_solid
fi
if [[ "$blackness" == "true" ]] ; then
install_black
fi
if [[ "$primary" == "true" ]] ; then
change_radio_color
fi
if [[ "$round" == "true" ]] ; then
round_corner
fi
if [[ "$macstyle" == "true" ]] ; then
install_mac
fi
if [[ "$submenu" == "true" ]] ; then
install_submenu
fi
if [[ "$nord" == "true" ]] ; then
install_nord
fi
if [[ "$dracula" == "true" ]] ; then
install_dracula
fi
}
check_shell() {
if [[ "$shell" == "38" ]]; then
GS_VERSION="3-28"
echo "Install for gnome-shell version < 40.0"
elif [[ "$shell" == "40" ]]; then
GS_VERSION="40-0"
echo "Install for gnome-shell version = 40.0"
elif [[ "$shell" == "42" ]]; then
GS_VERSION="42-0"
echo "Install for gnome-shell version = 42.0"
elif [[ "$shell" == "44" ]]; then
GS_VERSION="44-0"
echo "Install for gnome-shell version = 44.0"
elif [[ "$(command -v gnome-shell)" ]]; then
gnome-shell --version
SHELL_VERSION="$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -1)"
if [[ "${SHELL_VERSION:-}" -ge "44" ]]; then
GS_VERSION="44-0"
elif [[ "${SHELL_VERSION:-}" -ge "42" ]]; then
GS_VERSION="42-0"
elif [[ "${SHELL_VERSION:-}" -ge "40" ]]; then
GS_VERSION="40-0"
else
GS_VERSION="3-28"
fi
else
echo "'gnome-shell' not found, using styles for last gnome-shell version available."
GS_VERSION="44-0"
fi
}
install_theme() {
check_shell
for theme in "${themes[@]}"; do
for color in "${colors[@]}"; do
for size in "${sizes[@]}"; do
install "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype"
make_gtkrc "${dest:-$DEST_DIR}" "${name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype"
done
done
done
if (which xfce4-popup-whiskermenu 2> /dev/null); then
sed -i "s|.*menu-opacity=.*|menu-opacity=0|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc"
fi
if (pgrep xfce4-session &> /dev/null); then
xfce4-panel -r
fi
}
uninstall_theme() {
for theme in "${THEME_VARIANTS[@]}"; do
for color in "${colors[@]}"; do
for size in "${sizes[@]}"; do
uninstall "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype"
done
done
done
}
clean_theme() {
for theme in "${othemes[@]}"; do
for color in "${ocolors[@]}"; do
for size in "${osizes[@]}"; do
clean "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size"
done
done
done
}
link_theme() {
for theme in "${themes[@]}"; do
for color in "${lcolors[@]}"; do
for size in "${sizes[0]}"; do
link_libadwaita "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype"
done
done
done
}