mirror of
https://gitgud.io/wackyideas/aerothemeplasma.git
synced 2024-08-15 00:43:43 +00:00
335 lines
11 KiB
Bash
335 lines
11 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Automatic installer script for AeroThemePlasma
|
||
|
# See INSTALL.md for more details on what this
|
||
|
# script does and does not do.
|
||
|
# wackyideas 2023, https://gitgud.io/wackyideas/aerothemeplasma
|
||
|
|
||
|
# kwriteconfig5
|
||
|
# kreadconfig5
|
||
|
# tar -xf [file.tar.gz]
|
||
|
|
||
|
# Defining some useful paths
|
||
|
# User directories
|
||
|
PLASMA_THEMES=~/.local/share/plasma/desktoptheme/
|
||
|
USER_PLASMOIDS=~/.local/share/plasma/plasmoids/
|
||
|
USER_LOOK_AND_FEEL=~/.local/share/plasma/look-and-feel/
|
||
|
COLOR_SCHEMES=~/.local/share/color-schemes/
|
||
|
GTK2_THEMES=/home/$USER/.themes/
|
||
|
EMERALD_PATH=~/.emerald/
|
||
|
USER_CONFIG=~/.config/
|
||
|
KVANTUM_THEMES=${USER_CONFIG}Kvantum/
|
||
|
USER_ICONS=~/.local/share/icons/
|
||
|
|
||
|
# System directories
|
||
|
FONTS_DIR=/usr/share/fonts/windows/
|
||
|
KWIN_PLUGIN_DIR=/usr/lib/qt/plugins/org.kde.kdecoration2/
|
||
|
KWIN_EFFECTS_DIR=/usr/lib/qt/plugins/kwin/effects/plugins/
|
||
|
KWIN_CONFIGS_DIR=/usr/lib/qt/plugins/kwin/effects/configs/
|
||
|
SYSTEM_PLASMOIDS=/usr/share/plasma/plasmoids/
|
||
|
PLASMOID_PLUGINS=/usr/lib/qt/plugins/plasma/applets/
|
||
|
TOOLTIP_DIR=/usr/lib/qt/qml/org/kde/plasma/core/private/
|
||
|
SOUNDS_DIR=/usr/share/sounds/
|
||
|
BIN=/usr/bin/
|
||
|
|
||
|
# 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/
|
||
|
INNER_PLASMA_THEME=./Plasma/KDE_Plasma_Theme/
|
||
|
|
||
|
# Qt
|
||
|
INNER_KVANTUM_THEME=./Qt/Application_Theme/Kvantum/
|
||
|
INNER_GTK2_THEME=./Qt/Application_Theme/QGtkStyle/
|
||
|
|
||
|
# Icons and cursors
|
||
|
INNER_ICON_THEME=./Icons\ and\ cursors/
|
||
|
|
||
|
# KWin
|
||
|
INNER_KWIN="./KWin/"
|
||
|
|
||
|
# NAMES
|
||
|
|
||
|
# System plasmoids
|
||
|
SYSTRAY=org.kde.plasma.private.systemtray
|
||
|
KEYBOARD_LAYOUT=org.kde.plasma.keyboardlayout
|
||
|
DESKTOP_CONTAINMENT=org.kde.desktopcontainment
|
||
|
TOOLTIP_QML=DefaultToolTip.qml
|
||
|
|
||
|
# User plasmoids
|
||
|
SEVEN_START=io.gitgud.wackyideas.SevenStart
|
||
|
SEVEN_TASKS=io.gitgud.wackyideas.seventasks
|
||
|
SEVEN_TASKS_PLUGIN=plasma_applet_seventasks.so
|
||
|
DIGITALCLOCKLITE=io.gitgud.wackyideas.digitalclocklite
|
||
|
SHOW_DESKTOP=io.gitgud.wackyideas.win7showdesktop
|
||
|
|
||
|
# Themes
|
||
|
PLASMA_THEME=Seven-Black
|
||
|
GTK2_THEME=win27pixmap
|
||
|
KVANTUM_THEME=Windows7Kvantum_Aero
|
||
|
SPLASH_SCREEN=io.gitgud.wackyideas.aerosplashscreen
|
||
|
COLOR_SCHEME=AeroColorScheme.colors
|
||
|
|
||
|
KWIN_PLUGIN=kwin_smaragd.so
|
||
|
KWIN_EFFECT=libkwin4_effect_reflect.so
|
||
|
KWIN_CONFIG=kwin4_effect_reflect_config.so
|
||
|
|
||
|
# Icons and cursors
|
||
|
ICONTHEME=windowsicon
|
||
|
CURSORTHEME=aero-cursors
|
||
|
|
||
|
# GTK2 Settings
|
||
|
ENV=/etc/environment
|
||
|
LINE="GTK2_RC_FILES=${GTK2_THEMES}${GTK2_THEME}/gtk-2.0/gtkrc"
|
||
|
|
||
|
BACKUP_FOLDER=~/AeroThemePlasma_Backups/
|
||
|
ORIGINAL_FOLDER="${BACKUP_FOLDER}First_Time_Backup/"
|
||
|
|
||
|
|
||
|
function backup {
|
||
|
echo "Performing backup..."
|
||
|
mkdir -p ${BACKUP_FOLDER}
|
||
|
if [ ! -d "${ORIGINAL_FOLDER}" ]
|
||
|
then
|
||
|
# Perform first time backup
|
||
|
echo "Performing first time backup..."
|
||
|
echo "Creating a backup at $ORIGINAL_FOLDER"
|
||
|
mkdir -p "${ORIGINAL_FOLDER}"
|
||
|
cp -r "${SYSTEM_PLASMOIDS}${SYSTRAY}" "${ORIGINAL_FOLDER}" # System Tray
|
||
|
cp -r "${SYSTEM_PLASMOIDS}${DESKTOP_CONTAINMENT}" "${ORIGINAL_FOLDER}" # Desktop Containment
|
||
|
cp -r "${SYSTEM_PLASMOIDS}${KEYBOARD_LAYOUT}" "${ORIGINAL_FOLDER}" # Keyboard Layout
|
||
|
cp -r "${TOOLTIP_DIR}${TOOLTIP_QML}" "${ORIGINAL_FOLDER}" # DefaultToolTip.qml
|
||
|
|
||
|
# Backing up /etc/environment
|
||
|
if grep "GTK2_RC_FILES" "$ENV" &> /dev/null
|
||
|
then
|
||
|
cp "$ENV" "$ORIGINAL_FOLDER"
|
||
|
fi
|
||
|
|
||
|
# Emerald
|
||
|
if [ -d "$EMERALD_PATH" ]
|
||
|
then
|
||
|
mkdir -p "${ORIGINAL_FOLDER}.emerald"
|
||
|
cp -r "${EMERALD_PATH}theme" "${ORIGINAL_FOLDER}.emerald/theme"
|
||
|
cp "${EMERALD_PATH}settings.ini" "${ORIGINAL_FOLDER}.emerald/settings.ini"
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
|
||
|
local answer="Y"
|
||
|
read -p "If you have already installed AeroThemePlasma before, would you like to create a backup of the currently installed version? [Y/n] " answer
|
||
|
if [[ $answer != "n" ]] && [[ $answer != "N" ]]
|
||
|
then
|
||
|
local tstamp=$(date +%Y-%m-%d_%H_%M_%S)
|
||
|
local bpath="${BACKUP_FOLDER}${tstamp}"
|
||
|
echo "Creating a backup at $bpath"
|
||
|
mkdir -p "$bpath"
|
||
|
|
||
|
echo "Backing up system files..."
|
||
|
cp -r "${SYSTEM_PLASMOIDS}${SYSTRAY}" "$bpath" # System Tray
|
||
|
cp -r "${SYSTEM_PLASMOIDS}${DESKTOP_CONTAINMENT}" "$bpath" # Desktop Containment
|
||
|
cp -r "${SYSTEM_PLASMOIDS}${KEYBOARD_LAYOUT}" "$bpath" # Keyboard Layout
|
||
|
cp -r "${TOOLTIP_DIR}${TOOLTIP_QML}" "$bpath" # DefaultToolTip.qml
|
||
|
|
||
|
echo "Backing up Smaragd..."
|
||
|
cp "${KWIN_PLUGIN_DIR}${KWIN_PLUGIN}" "$bpath" # kwin_smaragd.so
|
||
|
|
||
|
echo "Backing up Smaragd theme..."
|
||
|
mkdir -p "${bpath}/.emerald"
|
||
|
cp -r "${EMERALD_PATH}theme" "${bpath}/.emerald/theme"
|
||
|
cp "${EMERALD_PATH}settings.ini" "${bpath}/.emerald/settings.ini"
|
||
|
|
||
|
echo "Backing up Plasma theme..."
|
||
|
cp -r "${PLASMA_THEMES}${PLASMA_THEME}" "$bpath" # SevenBlack
|
||
|
|
||
|
echo "Backing up user plasmoids..."
|
||
|
|
||
|
for f in ${USER_PLASMOIDS}io.gitgud.wackyideas.*; do
|
||
|
cp -r "$f" "$bpath"
|
||
|
done
|
||
|
|
||
|
cp "${PLASMOID_PLUGINS}${SEVEN_TASKS_PLUGIN}" "$bpath" # SevenTasks plugin
|
||
|
|
||
|
#echo "Backing up splash screen..."
|
||
|
#cp -r "${USER_SPLASH}${SPLASH_SCREEN}" "$bpath" # Aero-splash-screen
|
||
|
|
||
|
echo "Backing up Kvantum theme..."
|
||
|
cp -r "${KVANTUM_THEMES}${KVANTUM_THEME}" "$bpath" # Windows7Kvantum_Aero
|
||
|
|
||
|
# ADD REFLECTION EFFECT HERE, TODO
|
||
|
echo "Backing up Reflection effect..."
|
||
|
cp -r "${KWIN_EFFECTS_DIR}${KWIN_EFFECT}" "$bpath"
|
||
|
cp -r "${KWIN_CONFIGS_DIR}${KWIN_CONFIG}" "$bpath"
|
||
|
|
||
|
echo "Backing up global theme..."
|
||
|
cp -r "${USER_LOOK_AND_FEEL}aerothemeplasma" "$bpath"
|
||
|
|
||
|
answer="N"
|
||
|
read -p "Do you want to make a backup of the icon theme? [y/N] " answer
|
||
|
if [[ $answer = "y" ]] || [[ $answer = "Y" ]]
|
||
|
then
|
||
|
echo "Backing up icon theme..."
|
||
|
cp -r "${SYSTEM_ICONS}${ICONTHEME}" "$bpath"
|
||
|
fi
|
||
|
echo "Finished backup."
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
function print_help {
|
||
|
printf "WARNING: THIS SCRIPT IS NOT READY FOR USE. IT'S LARGELY INCOMPLETE\n"
|
||
|
printf "AND MIGHT EVEN BREAK YOUR SYSTEM IN ITS CURRENT STATE.\n"
|
||
|
printf "AeroThemePlasma installer usage:\n\n"
|
||
|
printf " ./install.sh COMMAND\n"
|
||
|
printf " Semi-automated installer and updater 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 " update Pulls the latest changes from the git repo and updates AeroThemePlasma.\n"
|
||
|
printf " restore [PATH] Restores a backup provided by an absolute path to a directory. If no path is provided, the installer will restore the original backup.\n\n"
|
||
|
printf "For more information, see the INSTALL.md page.\n"
|
||
|
exit
|
||
|
}
|
||
|
function warning {
|
||
|
printf "\nWARNING:\nThis script requires root privileges as it installs certain components in locations not writable by regular users, and also\n"
|
||
|
printf "modifies certain system components tied to KDE.\n"
|
||
|
printf "For more information about the installation process, as well as all the components added or modified by this project, see\nINSTALL.md and DOCUMENTATION.md respectively.\n\n"
|
||
|
|
||
|
local answer="N"
|
||
|
read -p "Do you want to continue? [y/N] " answer
|
||
|
if [[ $answer != "y" ]] && [[ $answer != "Y" ]]
|
||
|
then
|
||
|
printf "Exiting installer.\n"
|
||
|
exit
|
||
|
else
|
||
|
return
|
||
|
fi
|
||
|
}
|
||
|
function dependencies {
|
||
|
printf "Required dependencies:\n- git\n- kdialog\n- kvantum\n- kwin\n- tar\n"
|
||
|
printf "Checking dependencies..."
|
||
|
|
||
|
if [ $(echo $XDG_CURRENT_DESKTOP | grep KDE &> /dev/null) ]
|
||
|
then
|
||
|
printf "\nThis script couldn't detect KDE running on this system. The installer will now exit.\n"
|
||
|
exit
|
||
|
fi
|
||
|
if [ command -v git &> /dev/null ] || [ command -v kdialog &> /dev/null ] || [ command -v tar &> /dev/null ] || [ command -v kvantummanager &> /dev/null ] || [ command -v kwin_x11 &> /dev/null ]
|
||
|
then
|
||
|
printf "\nMissing dependencies. The installer will now exit.\n"
|
||
|
exit
|
||
|
else
|
||
|
printf " done.\n"
|
||
|
fi
|
||
|
}
|
||
|
function install_system {
|
||
|
echo "Overwriting system components..."
|
||
|
sudo echo "Permissions granted, installing desktop modifications..."
|
||
|
|
||
|
echo "Installing DefaultToolTip.qml..."
|
||
|
sudo mkdir -p "${TOOLTIP_DIR}"
|
||
|
sudo cp "${INNER_PLASMA_WIDGETS}System/Tooltips/${TOOLTIP_QML}" "${TOOLTIP_DIR}${TOOLTIP_QML}"
|
||
|
echo "Installing system plasmoids..."
|
||
|
|
||
|
sudo rm -r "${SYSTEM_PLASMOIDS}${SYSTRAY}"
|
||
|
sudo rm -r "${SYSTEM_PLASMOIDS}${KEYBOARD_LAYOUT}"
|
||
|
sudo rm -r "${SYSTEM_PLASMOIDS}${DESKTOP_CONTAINMENT}"
|
||
|
for f in ${INNER_PLASMA_WIDGETS}System/org.kde.*; do
|
||
|
sudo cp -r "$f" "${SYSTEM_PLASMOIDS}"
|
||
|
done
|
||
|
}
|
||
|
function install {
|
||
|
printf "Running AeroThemePlasma installer\n"
|
||
|
dependencies
|
||
|
|
||
|
backup
|
||
|
mkdir -p $PLASMA_THEMES
|
||
|
mkdir -p $USER_PLASMOIDS
|
||
|
mkdir -p $COLOR_SCHEMES
|
||
|
mkdir -p $GTK2_THEMES
|
||
|
mkdir -p $USER_ICONS
|
||
|
mkdir -p $USER_LOOK_AND_FEEL
|
||
|
warning
|
||
|
install_system
|
||
|
|
||
|
echo "Installing user plasmoids..."
|
||
|
sudo mkdir -p "${PLASMOID_PLUGINS}"
|
||
|
sudo cp "${INNER_PLASMA_WIDGETS}User/${SEVEN_TASKS_PLUGIN}" "${PLASMOID_PLUGINS}"
|
||
|
rm -r "${USER_PLASMOIDS}${SEVEN_TASKS}"
|
||
|
rm -r "${USER_PLASMOIDS}${SEVEN_START}"
|
||
|
rm -r "${USER_PLASMOIDS}${DIGITALCLOCKLITE}"
|
||
|
rm -r "${USER_PLASMOIDS}${SHOW_DESKTOP}"
|
||
|
for f in ${INNER_PLASMA_WIDGETS}User/io.gitgud.wackyideas.*; do
|
||
|
cp -r "$f" "${USER_PLASMOIDS}"
|
||
|
done
|
||
|
|
||
|
echo "Installing icon theme..."
|
||
|
tar -xf "${INNER_ICON_THEME}${ICONTHEME}.tar.gz"
|
||
|
rm -rf "${USER_ICONS}${ICONTHEME}"
|
||
|
mv "${ICONTHEME}" "${USER_ICONS}"
|
||
|
echo "Installing cursor theme..."
|
||
|
tar -xf "${INNER_ICON_THEME}${CURSORTHEME}.tar.gz"
|
||
|
rm -rf "${USER_ICONS}${CURSORTHEME}"
|
||
|
mv "${CURSORTHEME}" "${USER_ICONS}"
|
||
|
|
||
|
echo "Installing Smaragd Seven..."
|
||
|
sudo mkdir -p "${KWIN_PLUGIN_DIR}"
|
||
|
sudo cp "${INNER_KWIN}smaragd_bin/${KWIN_PLUGIN}" "${KWIN_PLUGIN_DIR}"
|
||
|
cp -r "${INNER_KWIN}.emerald" ~
|
||
|
|
||
|
echo "Installing Reflection effect..."
|
||
|
|
||
|
sudo mkdir -p "${KWIN_EFFECTS_DIR}"
|
||
|
sudo mkdir -p "${KWIN_CONFIGS_DIR}"
|
||
|
sudo cp "${INNER_KWIN}reflect_bin/${KWIN_EFFECT}" "${KWIN_EFFECTS_DIR}"
|
||
|
sudo cp "${INNER_KWIN}reflect_bin/${KWIN_CONFIG}" "${KWIN_CONFIGS_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..."
|
||
|
#rm -r "${USER_SPLASH}${SPLASH_SCREEN}"
|
||
|
#cp -r "${INNER_SPLASH_SCREEN}${SPLASH_SCREEN}" "${USER_SPLASH}"
|
||
|
|
||
|
echo "Installing color scheme..."
|
||
|
cp "${INNER_COLOR_SCHEME}${COLOR_SCHEME}" "${COLOR_SCHEMES}"
|
||
|
|
||
|
echo "Installing KDE Plasma theme..."
|
||
|
rm -r "${PLASMA_THEMES}${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 "Installing GTK2 theme..."
|
||
|
cp -r "${INNER_GTK2_THEME}${GTK2_THEME}" "${GTK2_THEMES}"
|
||
|
|
||
|
echo "Installing global theme..."
|
||
|
cp -r "${INNER_GLOBAL_THEME}aerothemeplasma" "${USER_LOOK_AND_FEEL}"
|
||
|
|
||
|
local answer="N"
|
||
|
read -p "Do you want to set up a new desktop layout? WARNING: This will replace your current configuration. [y/N] " answer
|
||
|
if [[ $answer != "y" ]] && [[ $answer != "Y" ]]
|
||
|
then
|
||
|
plasma-apply-lookandfeel --reset-layout -a aerothemeplasma
|
||
|
else
|
||
|
plasma-apply-lookandfeel -a aerothemeplasma
|
||
|
fi
|
||
|
kvantummanager --set $KVANTUM_THEME
|
||
|
}
|
||
|
|
||
|
if [[ $1 = "install" ]]
|
||
|
then
|
||
|
install
|
||
|
else
|
||
|
print_help
|
||
|
fi
|
||
|
|