Permalink
Cannot retrieve contributors at this time
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?
Orchis-theme/core.sh
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
438 lines (358 sloc)
15.6 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | |
| } |