aerothemeplasma/install.sh

288 lines
8.9 KiB
Bash
Executable file

#!/usr/bin/env bash
# Somewhat automatic install script for AeroThemePlasma
# This installer is a WIP and doesn't do much other than
# copy files to their intended locations.
# Currently only works on Arch based systems, support for Debian
# based distros is planned.
# Read INSTALL.md for more information.
# wackyideas 2024, https://gitgud.io/wackyideas/aerothemeplasma
# Defining some useful paths
# User directories
set -e
USER_CONFIG=~/.config/
USER_LOCAL=~/.local/share/
PLASMA_THEMES=${USER_LOCAL}plasma/desktoptheme/
USER_PLASMOIDS=${USER_LOCAL}plasma/plasmoids/
USER_LOOK_AND_FEEL=${USER_LOCAL}plasma/look-and-feel/
COLOR_SCHEMES=${USER_LOCAL}color-schemes/
USER_ICONS=${USER_LOCAL}icons/
KWIN_SWITCHER_DIR=${USER_LOCAL}kwin/tabbox/
#EMERALD_PATH=~/.emerald/
KVANTUM_THEMES=${USER_CONFIG}Kvantum/
CURSOR_USER=~/.icons/default/
CURSOR_SYSTEM=/usr/share/icons/
# System directories
KWIN_PLUGIN_DIR=/usr/lib/qt/plugins/org.kde.kdecoration2/ # Used for installing Smaragd
KWIN_EFFECTS_DIR=/usr/lib/qt/plugins/kwin/effects/plugins/ # Used for installing the reflection effect
KWIN_CONFIGS_DIR=/usr/lib/qt/plugins/kwin/effects/configs/ # Used for installing the reflection effect config
SYSTEM_PLASMOIDS=/usr/share/plasma/plasmoids/ # No longer necessary
PLASMOID_PLUGINS=/usr/lib/qt/plugins/plasma/applets/ # Used for installing C++ components of SevenTasks and SevenStart
TOOLTIP_DIR=/usr/lib/qt/qml/org/kde/plasma/core/private/ # Used for installing the modified tooltip component
SOUNDS_DIR=/usr/share/sounds/ # Used for installing sounds, will most likely be deprecated when KDE 6 is out
SDDM_DIR=/usr/share/sddm/themes/
FONTS_DIR=/usr/share/fonts/windows/
# Inner directories
# Plasma
INNER_PLASMA_WIDGETS=./Plasma/Plasma_Widgets/
INNER_COLOR_SCHEME=./Plasma/Color_Scheme/
INNER_SOUNDS="./Plasma/Sounds/"
INNER_GLOBAL_THEME=./Plasma/Global_Theme/ # Unused
INNER_PLASMA_THEME=./Plasma/KDE_Plasma_Theme/
INNER_LOOK_AND_FEEL=./Plasma/Look_and_Feel/
INNER_SDDM_THEME=./Plasma/SDDM/
# Qt
INNER_KVANTUM_THEME=./Qt/Application_Theme/Kvantum/
# Icons and cursors
INNER_ICON_THEME=./Icons\ and\ cursors/
# KWin
INNER_KWIN="./KWin/"
# NAMES
# System plasmoids
TOOLTIP_QML=DefaultToolTip.qml
SYSTRAY=org.kde.plasma.private.systemtray
KEYBOARD_LAYOUT=org.kde.plasma.keyboardlayout
DESKTOP_CONTAINMENT=org.kde.desktopcontainment
# User plasmoids
SEVEN_START=io.gitgud.wackyideas.SevenStart
SEVEN_TASKS=io.gitgud.wackyideas.seventasks
DIGITALCLOCKLITE=io.gitgud.wackyideas.digitalclocklite
SHOW_DESKTOP=io.gitgud.wackyideas.win7showdesktop
SEVEN_TASKS_PLUGIN=plasma_applet_seventasks.so
SEVEN_START_PLUGIN=plasma_applet_SevenStart.so
# Themes
PLASMA_THEME=Seven-Black
KVANTUM_THEME=Windows7Kvantum_Aero
SPLASH_SCREEN=authui7
COLOR_SCHEME=AeroColorScheme.colors
# KWin
KWIN_EFFECT=libkwin4_effect_reflect.so
KWIN_CONFIG=kwin4_effect_reflect_config.so
KWIN_SWITCHER=thumbnail_seven
# Icons and cursors
ICONTHEME=windowsicon
CURSORTHEME=aero-drop
function print_help {
printf "WARNING: This script is early in development\n"
printf "AeroThemePlasma installer usage:\n\n"
printf " ./install.sh [command]\n"
printf " Semi-automated installer for AeroThemePlasma.\n\n"
printf "Available commands:\n"
printf " help Shows this screen.\n"
printf " install Performs a CLEAN install of AeroThemePlasma. Recommended for first time installations.\n"
printf " fix Replaces system files (This should be run after every system upgrade).\n"
printf "For more information, see the INSTALL.md page.\n"
exit
}
function warning {
printf "\nWARNING:\nThe installer requires root privileges as it installs certain components in locations not writable by regular users, and also modifies a few system components tied to KDE.\n"
printf "Important notes:\n- The installer will NOT install Windows fonts\n- The installer will only copy the necessary files to their intended locations\n- The configuration and customization steps are still left for the user to do after this script is finished\n"
local answer="N"
read -p "Do you want to continue? [y/N] " answer
if [[ $answer != [Yy] ]]
then
printf "Exiting installer.\n"
exit
else
return
fi
}
function dependencies {
local answer="N"
if (( EUID != 0 ))
then
printf "Not running as root. The installer will now exit.\n"
exit 1
fi
if [ command -v pacman &> /dev/null ]
then
read -p "The installer couldn't detect an Arch-based distribution installed on your computer.\nCurrently only Arch-based distributions are supported by the installer. Do you wish to continue? [y/N]\n\n" answer
if [[ $answer != [Yy] ]]
then
printf "Exiting installer.\n"
exit
fi
fi
printf "Required dependencies:\n- git\n- kvantum\n- tar\n- cmake\n- extra-cmake-modules\n- Qt5 GraphicalEffects\n"
printf "Checking dependencies..."
if [[ $XDG_CURRENT_DESKTOP != KDE ]]
then
printf "\nThe installer couldn't detect KDE running on this system. The installer will now exit.\n"
exit
fi
for cmd in git tar cmake kvantummanager \
/usr/lib/qt/qml/QtGraphicalEffects/qmldir \
/usr/share/ECM/cmake/ECMConfig.cmake
do
if ! command -v "$cmd" >/dev/null
then
printf "Dependency '%s' is missing. The installer will now exit.\n" "$cmd"
exit 1
else
printf " done.\n"
fi
done
}
function install_system {
echo "Overwriting system components..."
sudo echo "Permissions granted, installing desktop modifications..."
sudo mkdir -p "${TOOLTIP_DIR}"
echo "Backing up DefaultToolTip.qml..."
if [[ ! -f ${TOOLTIP_DIR}${TOOLTIP_QML}.bak ]]; then
sudo cp "${TOOLTIP_DIR}${TOOLTIP_QML}" "${TOOLTIP_DIR}${TOOLTIP_QML}.bak"
fi
echo "Installing DefaultToolTip.qml..."
sudo cp "${INNER_PLASMA_WIDGETS}System/${TOOLTIP_QML}" "${TOOLTIP_DIR}${TOOLTIP_QML}"
}
function install {
printf "Running AeroThemePlasma installer\n"
warning
install_system
mkdir -p \
"$PLASMA_THEMES" \
"$USER_PLASMOIDS" \
"$COLOR_SCHEMES" \
"$USER_ICONS" \
"$USER_LOOK_AND_FEEL" \
"$KWIN_SWITCHER_DIR" \
"$CURSOR_USER"
echo "Installing user plasmoids..."
sudo mkdir -p "${PLASMOID_PLUGINS}"
sudo cp "${INNER_PLASMA_WIDGETS}User/${SEVEN_TASKS_PLUGIN}" "${PLASMOID_PLUGINS}"
sudo cp "${INNER_PLASMA_WIDGETS}User/${SEVEN_START_PLUGIN}" "${PLASMOID_PLUGINS}"
rm -r \
"${USER_PLASMOIDS}${SEVEN_TASKS}" \
"${USER_PLASMOIDS}${SEVEN_START}" \
"${USER_PLASMOIDS}${DIGITALCLOCKLITE}" \
"${USER_PLASMOIDS}${SHOW_DESKTOP}"
sudo rm -r "${USER_PLASMOIDS}${SYSTRAY}" \
"${USER_PLASMOIDS}${KEYBOARD_LAYOUT}" \
"${USER_PLASMOIDS}${DESKTOP_CONTAINMENT}"
rm -rf \
"${CURSOR_USER}" \
"${USER_ICONS}${CURSORTHEME}" \
"${USER_LOOK_AND_FEEL}${SPLASH_SCREEN}" \
"${PLASMA_THEMES}${PLASMA_THEME}" \
"${KWIN_SWITCHER_DIR}${KWIN_SWITCHER}"
for f in ${INNER_PLASMA_WIDGETS}User/io.gitgud.wackyideas.*; do
cp -r "$f" "${USER_PLASMOIDS}"
done
for f in ${INNER_PLASMA_WIDGETS}User/org.kde.*; do
sudo cp -r "$f" "${USER_PLASMOIDS}"
done
echo "Installing icon theme..."
tar -xf "${INNER_ICON_THEME}${ICONTHEME}.tar.gz"
mv "${ICONTHEME}" "${USER_ICONS}"
echo "Installing cursor theme..."
tar -xf "${INNER_ICON_THEME}${CURSORTHEME}.tar.gz"
sudo mv "${CURSORTHEME}" "${CURSOR_SYSTEM}"
cp "${INNER_ICON_THEME}index.theme" "${CURSOR_USER}index.theme"
ln -s "${CURSOR_SYSTEM}${CURSORTHEME}/cursors" "${CURSOR_USER}cursors"
local rootdir=$PWD
echo "Installing KWin decoration theme..."
cd "${INNER_KWIN}smod_kwin_theme"
chmod +x ./install-resources.sh && ./install-resources.sh
chmod +x ./build-decoration.sh && ./build-decoration.sh
chmod +x ./install-decoration.sh && ./install-decoration.sh
echo "Installing KWin caption button glow effect..."
chmod +x ./build-effect.sh && ./build-effect.sh
chmod +x ./install-effect.sh && ./install-effect.sh
cd "$rootdir"
echo "Installing Reflection effect..."
local rootdir=$PWD
local script=./install.sh
cd "${INNER_KWIN}kwin_reflect"
chmod +x "$script" && "$script"
cd "$rootdir"
echo "Installing Firefox Blur Region Fix effect..."
local rootdir=$PWD
local script=./install.sh
cd "${INNER_KWIN}kwin_fixblur"
chmod +x "$script" && "$script"
cd "$rootdir"
cp -r "${INNER_KWIN}.ffblurfix" ~
echo "Installing task switcher..."
cp -r "${INNER_KWIN}${KWIN_SWITCHER}" "${KWIN_SWITCHER_DIR}"
echo "Installing sounds..."
sudo mkdir -p "${SOUNDS_DIR}"
for f in ${INNER_SOUNDS}*; do
sudo cp -r "$f" "${SOUNDS_DIR}"
done
echo "Installing splash screen..."
cp -r "${INNER_LOOK_AND_FEEL}${SPLASH_SCREEN}" "${USER_LOOK_AND_FEEL}"
echo "Installing color scheme..."
cp "${INNER_COLOR_SCHEME}${COLOR_SCHEME}" "${COLOR_SCHEMES}"
echo "Installing KDE Plasma theme..."
cp -r "${INNER_PLASMA_THEME}${PLASMA_THEME}" "${PLASMA_THEMES}"
echo "Installing Kvantum theme..."
mkdir -p "${KVANTUM_THEMES}${KVANTUM_THEME}"
cp -r "${INNER_KVANTUM_THEME}${KVANTUM_THEME}" "${KVANTUM_THEMES}"
echo "AeroThemePlasma has been installed on your system. In order to apply the theme, follow INSTALL.md for more instructions."
}
if [[ $1 = "install" ]]
then
dependencies
install
elif [[ $1 = "fix" ]]
then
dependencies
install_system
else
print_help
fi