mirror of
https://gitgud.io/wackyideas/aerothemeplasma.git
synced 2024-08-15 00:43:43 +00:00
288 lines
8.9 KiB
Bash
Executable file
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
|
|
|