mirror of
https://github.com/vinceliuice/WhiteSur-icon-theme.git
synced 2024-11-22 13:50:13 +00:00
0a7a41b996
This commit aims to resolve issue #30 It add 2 "alternative" icons, for softwarecenter and file-manager. To use them, I added a parameter (-a or --alternative) in the install.sh. When specified, it will call a function to change the name of the icons and use the "alternative" one instead of the "apple" icons during installation. At the end of the installation, it reset the icons to their default value.
239 lines
No EOL
8.6 KiB
Bash
Executable file
239 lines
No EOL
8.6 KiB
Bash
Executable file
#! /usr/bin/env bash
|
|
|
|
ROOT_UID=0
|
|
DEST_DIR=
|
|
|
|
# Destination directory
|
|
if [ "$UID" -eq "$ROOT_UID" ]; then
|
|
DEST_DIR="/usr/share/icons"
|
|
else
|
|
DEST_DIR="$HOME/.local/share/icons"
|
|
fi
|
|
|
|
SRC_DIR=$(cd $(dirname $0) && pwd)
|
|
|
|
THEME_NAME=WhiteSur
|
|
COLOR_VARIANTS=('' '-dark')
|
|
THEME_VARIANTS=('' '-purple' '-pink' '-red' '-orange' '-yellow' '-green' '-grey')
|
|
|
|
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" "-t, --theme VARIANTS" "Specify folder color [default|purple|pink|red|orange|yellow|green|grey|all] (Default: MacOS blue)"
|
|
printf " %-25s%s\n" "-a, --alternative" "Install alternative icons for software center and file-manager"
|
|
printf " %-25s%s\n" "-h, --help" "Show this help"
|
|
}
|
|
|
|
# change the name of software and file-manager to use the alternative
|
|
alternative() {
|
|
local dir="${SRC_DIR}/src/apps/scalable"
|
|
if [[ ${1} == 'unset' ]]; then
|
|
# Software
|
|
mv ${dir}/softwarecenter.svg ${dir}/softwarecenter-alternative.svg
|
|
mv ${dir}/softwarecenter-old.svg ${dir}/softwarecenter.svg
|
|
# File-manager
|
|
mv ${dir}/file-manager.svg ${dir}/file-manager-alternative.svg
|
|
mv ${dir}/file-manager-old.svg ${dir}/file-manager.svg
|
|
else
|
|
# Software
|
|
mv ${dir}/softwarecenter.svg ${dir}/softwarecenter-old.svg
|
|
mv ${dir}/softwarecenter-alternative.svg ${dir}/softwarecenter.svg
|
|
# File-manager
|
|
mv ${dir}/file-manager.svg ${dir}/file-manager-old.svg
|
|
mv ${dir}/file-manager-alternative.svg ${dir}/file-manager.svg
|
|
fi
|
|
}
|
|
|
|
|
|
install() {
|
|
local dest=${1}
|
|
local name=${2}
|
|
local theme=${3}
|
|
local color=${4}
|
|
|
|
local THEME_DIR=${dest}/${name}${theme}${color}
|
|
|
|
[[ -d ${THEME_DIR} ]] && rm -rf ${THEME_DIR}
|
|
|
|
echo "Installing '${THEME_DIR}'..."
|
|
|
|
mkdir -p ${THEME_DIR}
|
|
cp -r ${SRC_DIR}/{COPYING,AUTHORS} ${THEME_DIR}
|
|
cp -r ${SRC_DIR}/src/index.theme ${THEME_DIR}
|
|
|
|
cd ${THEME_DIR}
|
|
sed -i "s/${name}/${name}${theme}${color}/g" index.theme
|
|
|
|
if [[ ${color} == '' ]]; then
|
|
mkdir -p ${THEME_DIR}/status
|
|
cp -r ${SRC_DIR}/src/{actions,animations,apps,categories,devices,emblems,mimes,places} ${THEME_DIR}
|
|
cp -r ${SRC_DIR}/src/status/{16,22,24,32,symbolic} ${THEME_DIR}/status
|
|
cp -r ${SRC_DIR}/links/{actions,apps,categories,devices,emblems,mimes,places,status} ${THEME_DIR}
|
|
|
|
if [[ $DESKTOP_SESSION == '/usr/share/xsessions/budgie-desktop' ]]; then
|
|
cp -r ${SRC_DIR}/src/status/symbolic-budgie/*.svg ${THEME_DIR}/status/symbolic
|
|
fi
|
|
fi
|
|
|
|
if [[ ${color} == '' && ${theme} != '' ]]; then
|
|
cp -r ${SRC_DIR}/colors/color${theme}/*.svg ${THEME_DIR}/places/scalable
|
|
fi
|
|
|
|
if [[ ${color} == '-dark' ]]; then
|
|
mkdir -p ${THEME_DIR}/{apps,categories,emblems,devices,mimes,places,status}
|
|
|
|
cp -r ${SRC_DIR}/src/actions ${THEME_DIR}
|
|
cp -r ${SRC_DIR}/src/apps/symbolic ${THEME_DIR}/apps
|
|
cp -r ${SRC_DIR}/src/categories/symbolic ${THEME_DIR}/categories
|
|
cp -r ${SRC_DIR}/src/emblems/symbolic ${THEME_DIR}/emblems
|
|
cp -r ${SRC_DIR}/src/mimes/symbolic ${THEME_DIR}/mimes
|
|
cp -r ${SRC_DIR}/src/devices/{16,22,24,symbolic} ${THEME_DIR}/devices
|
|
cp -r ${SRC_DIR}/src/places/{16,22,24,symbolic} ${THEME_DIR}/places
|
|
cp -r ${SRC_DIR}/src/status/{16,22,24,symbolic} ${THEME_DIR}/status
|
|
|
|
if [[ $DESKTOP_SESSION == '/usr/share/xsessions/budgie-desktop' ]]; then
|
|
cp -r ${SRC_DIR}/src/status/symbolic-budgie/*.svg ${THEME_DIR}/status/symbolic
|
|
fi
|
|
|
|
# Change icon color for dark theme
|
|
sed -i "s/#363636/#dedede/g" "${THEME_DIR}"/{actions,devices,places,status}/{16,22,24}/*
|
|
sed -i "s/#363636/#dedede/g" "${THEME_DIR}"/actions/32/*
|
|
sed -i "s/#363636/#dedede/g" "${THEME_DIR}"/{actions,apps,categories,emblems,devices,mimes,places,status}/symbolic/*
|
|
|
|
cp -r ${SRC_DIR}/links/actions/{16,22,24,32,symbolic} ${THEME_DIR}/actions
|
|
cp -r ${SRC_DIR}/links/devices/{16,22,24,symbolic} ${THEME_DIR}/devices
|
|
cp -r ${SRC_DIR}/links/places/{16,22,24,symbolic} ${THEME_DIR}/places
|
|
cp -r ${SRC_DIR}/links/status/{16,22,24,symbolic} ${THEME_DIR}/status
|
|
cp -r ${SRC_DIR}/links/apps/symbolic ${THEME_DIR}/apps
|
|
cp -r ${SRC_DIR}/links/categories/symbolic ${THEME_DIR}/categories
|
|
cp -r ${SRC_DIR}/links/mimes/symbolic ${THEME_DIR}/mimes
|
|
|
|
cd ${dest}
|
|
ln -s ../${name}${theme}/animations ${name}${theme}-dark/animations
|
|
ln -s ../../${name}${theme}/categories/32 ${name}${theme}-dark/categories/32
|
|
ln -s ../../${name}${theme}/emblems/16 ${name}${theme}-dark/emblems/16
|
|
ln -s ../../${name}${theme}/emblems/22 ${name}${theme}-dark/emblems/22
|
|
ln -s ../../${name}${theme}/emblems/24 ${name}${theme}-dark/emblems/24
|
|
ln -s ../../${name}${theme}/mimes/16 ${name}${theme}-dark/mimes/16
|
|
ln -s ../../${name}${theme}/mimes/22 ${name}${theme}-dark/mimes/22
|
|
ln -s ../../${name}${theme}/mimes/scalable ${name}${theme}-dark/mimes/scalable
|
|
ln -s ../../${name}${theme}/apps/scalable ${name}${theme}-dark/apps/scalable
|
|
ln -s ../../${name}${theme}/devices/scalable ${name}${theme}-dark/devices/scalable
|
|
ln -s ../../${name}${theme}/places/scalable ${name}${theme}-dark/places/scalable
|
|
ln -s ../../${name}${theme}/status/32 ${name}${theme}-dark/status/32
|
|
fi
|
|
|
|
cd ${THEME_DIR}
|
|
ln -sf actions actions@2x
|
|
ln -sf animations animations@2x
|
|
ln -sf apps apps@2x
|
|
ln -sf categories categories@2x
|
|
ln -sf devices devices@2x
|
|
ln -sf emblems emblems@2x
|
|
ln -sf mimes mimes@2x
|
|
ln -sf places places@2x
|
|
ln -sf status status@2x
|
|
|
|
cd ${dest}
|
|
gtk-update-icon-cache ${name}${theme}${color}
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1}" in
|
|
-d|--dest)
|
|
dest="${2}"
|
|
if [[ ! -d "${dest}" ]]; then
|
|
echo "ERROR: Destination directory does not exist."
|
|
exit 1
|
|
fi
|
|
shift 2
|
|
;;
|
|
-n|--name)
|
|
name="${2}"
|
|
shift 2
|
|
;;
|
|
-t|--theme)
|
|
shift
|
|
for theme in "${@}"; do
|
|
case "${theme}" in
|
|
default)
|
|
themes+=("${THEME_VARIANTS[0]}")
|
|
shift
|
|
;;
|
|
purple)
|
|
themes+=("${THEME_VARIANTS[1]}")
|
|
shift
|
|
;;
|
|
pink)
|
|
themes+=("${THEME_VARIANTS[2]}")
|
|
shift
|
|
;;
|
|
red)
|
|
themes+=("${THEME_VARIANTS[3]}")
|
|
shift
|
|
;;
|
|
orange)
|
|
themes+=("${THEME_VARIANTS[4]}")
|
|
shift
|
|
;;
|
|
yellow)
|
|
themes+=("${THEME_VARIANTS[5]}")
|
|
shift
|
|
;;
|
|
green)
|
|
themes+=("${THEME_VARIANTS[6]}")
|
|
shift
|
|
;;
|
|
grey)
|
|
themes+=("${THEME_VARIANTS[7]}")
|
|
shift
|
|
;;
|
|
all)
|
|
themes+=("${THEME_VARIANTS[@]}")
|
|
shift
|
|
;;
|
|
-*|--*)
|
|
break
|
|
;;
|
|
*)
|
|
prompt -e "ERROR: Unrecognized theme variant '$1'."
|
|
prompt -i "Try '$0 --help' for more information."
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
;;
|
|
-a|--alternative)
|
|
alternative
|
|
alternative=true
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "ERROR: Unrecognized installation option '$1'."
|
|
echo "Try '$0 --help' for more information."
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
install_theme() {
|
|
|
|
for theme in "${themes[@]-${THEME_VARIANTS[0]}}"; do
|
|
for color in "${colors[@]-${COLOR_VARIANTS[@]}}"; do
|
|
install "${dest:-${DEST_DIR}}" "${name:-${THEME_NAME}}" "${theme}" "${color}"
|
|
done
|
|
done
|
|
|
|
# restore the names in the source file
|
|
if [[ $alternative == true ]]; then
|
|
alternative 'unset'
|
|
fi
|
|
}
|
|
|
|
install_theme |