Drop support for install.sh
Meson will be the only supported build system.
Closes https://github.com/nana-4/materia-theme/issues/554
By using this site, you agree to have cookies stored on your device, strictly for functional purposes, such as storing your session and preferences.
Meson will be the only supported build system.
Closes https://github.com/nana-4/materia-theme/issues/554
roundabout,
created on Tuesday, 23 March 2021, 16:38:00 (1616517480),
received on Sunday, 11 May 2025, 13:23:02 (1746969782)
Author identity: nana-4 <hnmaigo@gmail.com>
822e77e607c77f46ddae4e3f5f24f766e6df8a32
meson _build -Dprefix="$HOME/.local" -Dcolors=default,dark -Dsizes=compact ``` ## Installation for older distributionsIf you can't use Meson `>= 0.47.0`, you can use `./install.sh` instead:```shsudo ./install.sh```For installation options, run: `./install.sh --help`## Uninstallation Delete the installed directories:
- The included symbolic icons are based on [Material Design icons](https://github.com/google/material-design-icons) by Google. - The Chrome scrollbar extension was forked from [Adwaita-chrome-scrollbar](https://github.com/gnome-integration-team/chrome-gnome-scrollbar) by GNOME Integration Team. - Yauhen Kirylau (@actionless) who is oomox author polished scripts and supported Materia with [oomox](https://github.com/themix-project/oomox). - @n3oxmind who helped improve the installation script.- @n3oxmind who helped improve the installation script we had.- @smurphos who made and provided the Cinnamon theme for Materia. - Our Meson code is heavily influenced by @monday15's [lounge-gtk-theme](https://github.com/monday15/lounge-gtk-theme).
#!/bin/bashset -ueo pipefail#set -xREPO_DIR="$(cd "$(dirname "$0")" && pwd)"SRC_DIR="$REPO_DIR/src"DEST_DIR="/usr/share/themes"THEME_NAME="Materia"COLOR_VARIANTS=('' '-dark' '-light')SIZE_VARIANTS=('' '-compact')# Set a proper gtk4 theme versionif [[ -z "${GTK4_VERSION:-}" ]]; thenif [[ "$(command -v gtk4-launch)" ]]; thenGTK4_FULL_VERSION="$(gtk4-launch --version)"GTK4_MAJOR_VERSION="$(echo "$GTK4_FULL_VERSION" | cut -d . -f 1)"GTK4_MINOR_VERSION="$(echo "$GTK4_FULL_VERSION" | cut -d . -f 2)"if (( "$GTK4_MINOR_VERSION" % 2 == 0 )); thenGTK4_VERSION="$GTK4_MAJOR_VERSION.$GTK4_MINOR_VERSION"elseGTK4_VERSION="$GTK4_MAJOR_VERSION.$((GTK4_MINOR_VERSION + 1))"fielseecho "'gtk4-launch' not found, using styles for last gtk4 version available."GTK4_VERSION="4.0"fifi# Set a proper gnome-shell theme versionif [[ -z "${GS_VERSION:-}" ]]; thenif [[ "$(command -v gnome-shell)" ]]; thenGS_FULL_VERSION="$(gnome-shell --version | rev | cut -d ' ' -f 1 | rev)"GS_MAJOR_VERSION="$(echo "$GS_FULL_VERSION" | cut -d . -f 1)"GS_MINOR_VERSION="$(echo "$GS_FULL_VERSION" | cut -d . -f 2)"if (( "$GS_MAJOR_VERSION" >= 40 )); thenGS_VERSION="$GS_MAJOR_VERSION"elif (( "$GS_MINOR_VERSION" % 2 == 0 )); thenGS_VERSION="$GS_MAJOR_VERSION.$GS_MINOR_VERSION"elseGS_VERSION="$GS_MAJOR_VERSION.$((GS_MINOR_VERSION + 1))"fielseecho "'gnome-shell' not found, using styles for last gnome-shell version available."GS_VERSION="3.36"fifiif [[ ! "$(command -v sassc)" ]]; thenecho "'sassc' needs to be installed to generate the CSS."exit 1fiSASSC_OPT=('-M' '-t' 'expanded')usage() {cat << EOFUsage: $0 [OPTION]...OPTIONS:-d, --dest DIR Specify destination directory (Default: $DEST_DIR)-n, --name NAME Specify theme name (Default: $THEME_NAME)-c, --color VARIANT... Specify color variant(s) [standard|dark|light] (Default: All variants)-s, --size VARIANT Specify size variant [standard|compact] (Default: All variants)-g, --gdm Install and apply GDM theme (for advanced users)See also: src/gnome-shell/README.md-h, --help Show helpINSTALLATION EXAMPLES:Install all theme variants into ~/.themes$0 --dest ~/.themesInstall all theme variants including GDM theme$0 --gdmInstall standard theme variant only$0 --color standard --size standardInstall specific theme variants with different name into ~/.themes$0 --dest ~/.themes --name MyTheme --color light dark --size compactEOF}install_theme() {local dest="$1"local name="$2$3$4"local color="$3"local size="$4"if [[ "$color" == '' ]]; thenlocal scss_dark_theme="false"local scss_light_topbar="false"elif [[ "$color" == '-light' ]]; thenlocal scss_dark_theme="false"local scss_light_topbar="true"elif [[ "$color" == '-dark' ]]; thenlocal scss_dark_theme="true"local scss_light_topbar="false"fiif [[ "$size" == '' ]]; thenlocal scss_compact="false"elif [[ "$size" == '-compact' ]]; thenlocal scss_compact="true"fi[[ "$color" == '-dark' ]] && local ELSE_DARK="$color"[[ "$color" == '-light' ]] && local ELSE_LIGHT="$color"local THEME_DIR="$dest/$name"# SC2115: Protect /.[[ -d "$THEME_DIR" ]] && rm -rf "${THEME_DIR:?}"echo "Installing '$THEME_DIR'..."## COPYING, INSTALL_GDM_THEME.md & index.theme#mkdir -p "$THEME_DIR"cp \"$REPO_DIR/COPYING" \"$REPO_DIR/INSTALL_GDM_THEME.md" \"$THEME_DIR"sed \-e "s|@theme_name@|$name|g" \"$SRC_DIR/index.theme.in" > \"$THEME_DIR/index.theme"## Chrome extensions#mkdir -p "$THEME_DIR/chrome"cp -T \"$SRC_DIR/chrome/chrome-scrollbar${ELSE_DARK:-}.crx" \"$THEME_DIR/chrome/chrome-scrollbar.crx"cp -T \"$SRC_DIR/chrome/chrome-theme$color.crx" \"$THEME_DIR/chrome/chrome-theme.crx"## Cinnamon#mkdir -p "$THEME_DIR/cinnamon"cp -r \"$SRC_DIR/cinnamon/assets" \"$THEME_DIR/cinnamon"cp \"$SRC_DIR/cinnamon/thumbnail.png" \"$THEME_DIR/cinnamon"sed \-e "s|@dark_theme@|$scss_dark_theme|g" \-e "s|@light_topbar@|$scss_light_topbar|g" \-e "s|@compact@|$scss_compact|g" \-e "s|@current_source_dir@|$SRC_DIR/cinnamon|g" \"$SRC_DIR/cinnamon/cinnamon.scss.in" | \sassc --stdin "${SASSC_OPT[@]}" \"$THEME_DIR/cinnamon/cinnamon.css"## GNOME Shell#mkdir -p "$THEME_DIR/gnome-shell"cp -r -T \"$SRC_DIR/gnome-shell/assets${ELSE_DARK:-}" \"$THEME_DIR/gnome-shell/assets"cp -r \"$SRC_DIR/gnome-shell/extensions" \"$SRC_DIR/gnome-shell/icons" \"$THEME_DIR/gnome-shell"cp \"$SRC_DIR/gnome-shell/gnome-shell-start.svg" \"$SRC_DIR/gnome-shell/gnome-shell-theme.gresource.xml" \"$SRC_DIR/gnome-shell/noise-texture.png" \"$SRC_DIR/gnome-shell/pad-osd.css" \"$SRC_DIR/gnome-shell/process-working.svg" \"$THEME_DIR/gnome-shell"sed \-e "s|@dark_theme@|$scss_dark_theme|g" \-e "s|@light_topbar@|$scss_light_topbar|g" \-e "s|@compact@|$scss_compact|g" \-e "s|@version@|$GS_VERSION|g" \-e "s|@current_source_dir@|$SRC_DIR/gnome-shell|g" \"$SRC_DIR/gnome-shell/gnome-shell.scss.in" | \sassc --stdin "${SASSC_OPT[@]}" \"$THEME_DIR/gnome-shell/gnome-shell.css"## GTK 2#mkdir -p "$THEME_DIR/gtk-2.0"cp -r -T \"$SRC_DIR/gtk-2.0/assets${ELSE_DARK:-}" \"$THEME_DIR/gtk-2.0/assets"cp -T \"$SRC_DIR/gtk-2.0/gtkrc$color" \"$THEME_DIR/gtk-2.0/gtkrc"cp \"$SRC_DIR/gtk-2.0/apps.rc" \"$SRC_DIR/gtk-2.0/hacks.rc" \"$SRC_DIR/gtk-2.0/main.rc" \"$THEME_DIR/gtk-2.0"## GTK 3 & 4#local GTK_VARIANTS=('')[[ "$color" != '-dark' ]] && local GTK_VARIANTS+=('-dark')for version in "3.0" "4.0"; domkdir -p "$THEME_DIR/gtk-$version"cp -r \"$SRC_DIR/gtk-3.0/assets" \"$SRC_DIR/gtk-3.0/icons" \"$THEME_DIR/gtk-$version"for variant in "${GTK_VARIANTS[@]}"; dosed \-e "s|@dark_theme@|$scss_dark_theme|g" \-e "s|@light_topbar@|$scss_light_topbar|g" \-e "s|@compact@|$scss_compact|g" \-e "s|@version@|$GTK4_VERSION|g" \-e "s|@current_source_dir@|$SRC_DIR/gtk-$version|g" \"$SRC_DIR/gtk-$version/gtk$variant.scss.in" | \sassc --stdin "${SASSC_OPT[@]}" \"$THEME_DIR/gtk-$version/gtk$variant.css"donedone## Metacity#mkdir -p "$THEME_DIR/metacity-1"cp -r \"$SRC_DIR/metacity-1/assets" \"$THEME_DIR/metacity-1"cp -T \"$SRC_DIR/metacity-1/metacity-theme-2$color.xml" \"$THEME_DIR/metacity-1/metacity-theme-2.xml"cp \"$SRC_DIR/metacity-1/metacity-theme-3.xml" \"$THEME_DIR/metacity-1"## Plank#mkdir -p "$THEME_DIR/plank"cp \"$SRC_DIR/plank/dock.theme" \"$THEME_DIR/plank"## Unity#mkdir -p "$THEME_DIR/unity"cp -r -T \"$SRC_DIR/unity/dash-buttons" \"$THEME_DIR/unity"cp -r -T \"$SRC_DIR/unity/launcher" \"$THEME_DIR/unity"cp -r -T \"$SRC_DIR/unity/window-buttons${ELSE_LIGHT:-}" \"$THEME_DIR/unity"cp \"$SRC_DIR/unity/dash-widgets.json" \"$THEME_DIR/unity"## Xfwm4#mkdir -p "$THEME_DIR/xfwm4"cp -r -T \"$SRC_DIR/xfwm4/xfwm4$color" \"$THEME_DIR/xfwm4"}# Bakup and install files related to GDM themeinstall_gdm_theme() {local THEME_DIR="$1/$2$3$4"local GS_THEME_FILE="/usr/share/gnome-shell/gnome-shell-theme.gresource"local UBUNTU_THEME_FILE="/usr/share/gnome-shell/theme/ubuntu.css"if [[ -f "$GS_THEME_FILE" ]] && command -v glib-compile-resources >/dev/null; thenecho "Installing '$GS_THEME_FILE'..."cp -an "$GS_THEME_FILE" "$GS_THEME_FILE.bak"glib-compile-resources \--sourcedir="$THEME_DIR/gnome-shell" \--target="$GS_THEME_FILE" \"$THEME_DIR/gnome-shell/gnome-shell-theme.gresource.xml"elseechoecho "ERROR: Failed to install '$GS_THEME_FILE'"exit 1fiif [[ -f "$UBUNTU_THEME_FILE" ]]; thenecho "Installing '$UBUNTU_THEME_FILE'..."cp -an "$UBUNTU_THEME_FILE" "$UBUNTU_THEME_FILE.bak"cp -af "$THEME_DIR/gnome-shell/gnome-shell.css" "$UBUNTU_THEME_FILE"fi}colors=()sizes=()while [[ "$#" -gt 0 ]]; docase "${1:-}" in-d|--dest)dest="$2"mkdir -p "$dest"shift 2;;-n|--name)_name="$2"shift 2;;-g|--gdm)gdm='true'shift 1;;-c|--color)shiftfor variant in "$@"; docase "$variant" instandard)colors+=("${COLOR_VARIANTS[0]}")shift;;dark)colors+=("${COLOR_VARIANTS[1]}")shift;;light)colors+=("${COLOR_VARIANTS[2]}")shift;;-*)break;;*)echo "ERROR: Unrecognized color variant '$1'."echo "Try '$0 --help' for more information."exit 1;;esacdone;;-s|--size)shiftfor variant in "$@"; docase "$variant" instandard)sizes+=("${SIZE_VARIANTS[0]}")shift;;compact)sizes+=("${SIZE_VARIANTS[1]}")shift;;-*)break;;*)echo "ERROR: Unrecognized size variant '${1:-}'."echo "Try '$0 --help' for more information."exit 1;;esacdone;;-h|--help)usageexit 0;;*)echo "ERROR: Unrecognized installation option '${1:-}'."echo "Try '$0 --help' for more information."exit 1;;esacdoneif [[ ! -w "${dest:-$DEST_DIR}" ]]; thenecho "Please run as root."exit 1fiif [[ "${#colors[@]}" -eq 0 ]] ; thencolors=("${COLOR_VARIANTS[@]}")fiif [[ "${#sizes[@]}" -eq 0 ]] ; thensizes=("${SIZE_VARIANTS[@]}")fifor color in "${colors[@]}"; dofor size in "${sizes[@]}"; doinstall_theme "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$color" "$size"donedoneif [[ "${gdm:-}" == 'true' ]]; theninstall_gdm_theme "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$color" "$size"fiechoecho "Done."