From fe9175f6c9a18df74e6144b4d379ff2731540e32 Mon Sep 17 00:00:00 2001 From: wackyideas Date: Sun, 1 Feb 2026 18:37:19 +0100 Subject: [PATCH 01/14] Add uninstall script, update INSTALL.md This script undoes the install process that is performed by the install scripts. It doesn't revert settings back to their defaults, consult the install guide for details. The install guide also has a written manual guide on uninstalling AeroThemePlasma, for additional clarity. This script also acts as a migration script for the future restructuring of the project, which will make everything installable by only using CMake, which is what should have been implemented a long time ago. This will be one of the last few commits before the project is restructured, introducing AUR packages as an option for installing ATP. --- INSTALL.md | 154 ++++++++++++++++++++++ compile.sh | 18 ++- install_plasma_components.sh | 7 - install_plasmoids.sh | 19 +-- uninstall.sh | 245 +++++++++++++++++++++++++++++++++++ 5 files changed, 423 insertions(+), 20 deletions(-) create mode 100644 uninstall.sh diff --git a/INSTALL.md b/INSTALL.md index 972d3b67..d67a2bd7 100755 --- a/INSTALL.md +++ b/INSTALL.md @@ -8,6 +8,7 @@ 4. [Manual installation](#manual) 5. [Configuring AeroThemePlasma](#conf) 6. [GTK](#gtk) +7. [Uninstalling AeroThemePlasma](#uninstall) ## Prerequisites @@ -109,6 +110,11 @@ You can additionally pass `--ninja` to any of the following scripts in order to - `install_plasmoids.sh` - Any individual `install.sh` script +Other notable flags include: + +1. `--skip-libplasma` in `compile.sh`, which skips libplasma patches from being compiled and installed +2. `--skip-kpackages` in `install_plasmoids.sh`, which skips installing the QML components of plasmoids + ### Note for Wayland users The compile script must be run while passing the `--wayland` argument for KWin effects: @@ -281,3 +287,151 @@ echo -e "Microsoft Windows [Version 6.1.7600]\nCopyright (c) 2009 Microsoft Corp AeroThemePlasma officially doesn't have any kind of maintenance, development or support for GTK applications. Instead, check out [Windows 7 Better](https://gitgud.io/Gamer95875/Windows-7-Better) by [Gamer95875](https://gitgud.io/Gamer95875), which is the recommended set of themes that works best with AeroThemePlasma. + +## Uninstalling AeroThemePlasma + +AeroThemePlasma provides an uninstall script that undoes much of what's installed on the system. The script assumes that all of the CMake build files are still present in the repo, most importantly the `install_manifest.txt` files generated as a result of installing compiled parts of ATP. If these files are missing from the repo, they need to be regenerated by once again rerunning the necessary scripts like this: + +```bash +$ sh compile.sh --skip-libplasma [--wayland] [--ninja] +$ sh install_plasmoids.sh --skip-kpackages [--ninja] +``` + +Once this is done, the script is simply executed: + +```bash +$ sh uninstall.sh +``` + +This should be run outside of the AeroThemePlasma session, preferrably in a regular Plasma session. The script will ask for confirmation to uninstall components of the system. **Please check that none of the locations are ill-formed before accepting each prompt, especially those that require additional privileges to uninstall. In case this happens to you, report it as an issue ASAP.** + +Afterwards, `libplasma` and `polkit-kde-agent` should be reinstalled using your distro's package manager. For example, on Arch Linux: + +```bash +sudo pacman -Sy libplasma polkit-kde-agent +``` + +### Manual uninstallation + +The script performs the following steps in order to uninstall ATP. Uninstalling ATP should be done outside of the ATP session itself. Log into the Plasma session before performing any of these steps. + +### CMake + +- Perform `sudo make uninstall` or `sudo ninja uninstall` in the following directories if applicable: + +``` +kwin/decoration/build +plasma/sddm/login-sessions/build +plasma/aerothemeplasma-kcmloader/build +plasma/plasmoids/src/systemtray_src/build +plasma/plasmoids/src/notifications_src/build +plasma/plasmoids/src/volume_src/build +plasma/plasmoids/src/sevenstart_src/build +plasma/plasmoids/src/seventasks_src/build +plasma/plasmoids/src/desktopcontainment/build +kwin/effects_cpp/kde-effects-aeroglassblur/build +kwin/effects_cpp/kwin-effect-smodsnap-v2/build +kwin/effects_cpp/smodglow/build +kwin/effects_cpp/aeroglide/build +kwin/effects_cpp/startupfeedback/build + +# For Wayland builds +kwin/effects_cpp/kde-effects-aeroglassblur/build-wl +kwin/effects_cpp/kwin-effect-smodsnap-v2/build-wl +kwin/effects_cpp/smodglow/build-wl +kwin/effects_cpp/aeroglide/build-wl +kwin/effects_cpp/startupfeedback/build-wl +``` + +### Plasmoids + +- Perform `kpackagetool6 -t "Plasma/Applet" -r "plasmoid_id"` for each plasmoid, replacing `plasmoid_id` with the following: + +``` +io.gitgud.wackyideas.battery +io.gitgud.wackyideas.desktopcontainment +io.gitgud.wackyideas.digitalclocklite +io.gitgud.wackyideas.keyboardlayout +io.gitgud.wackyideas.networkmanagement +io.gitgud.wackyideas.panel +io.gitgud.wackyideas.SevenStart +io.gitgud.wackyideas.seventasks +io.gitgud.wackyideas.volume +io.gitgud.wackyideas.win7showdesktop +``` + +### Plasma components + +- Perform the following commands: + +```bash +kpackagetool6 -t "Plasma/LookAndFeel" -r "authui7" +kpackagetool6 -t "Plasma/LayoutTemplate" -r "io.gitgud.wackyideas.taskbar" +kpackagetool6 -t "Plasma/Theme" -r "Seven-Black" +kpackagetool6 -t "Plasma/Shell" -r "io.gitgud.wackyideas.desktop" +``` + +- Delete `~/.local/share/color-schemes/Aero.colors` +- Delete `~/.config/Kvantum/Windows7Aero` +- Delete the sound themes from `~/.local/share/sounds`: + +``` +'Windows 7' +'Windows 7 Afternoon' +'Windows 7 Calligraphy' +'Windows 7 Characters' +'Windows 7 Cityscape' +'Windows 7 Delta' +'Windows 7 Festival' +'Windows 7 Garden' +'Windows 7 Heritage' +'Windows 7 Landscape' +'Windows 7 Quirky' +'Windows 7 Raga' +'Windows 7 Savanna' +'Windows 7 Sonata' +``` + +- Delete the icon theme at `~/.local/share/icons/Windows 7 Aero` +- Delete the following files at `~/.local/share/mime/packages`: + +``` +application-vnd.microsoft.portable-executable.xml +application-x-ms-dll.xml +application-x-msdownload.xml +application-x-ms-ne-executable.xml +``` + +and run `update-mime-database ~/.local/share/mime` to refresh MIME associations + +### KWin components + +- Perform `kpackagetool6 -t "KWin/Effect" -r "effect_id"` for each effect, replacing `effect_id` with the following: + +``` +dimscreenaero +fadingpopupsaero +loginaero +seventasks-thumbnails +smodpeekeffect +squashaero +``` + +- Perform the following: + +```bash +kpackagetool6 -t "KWin/Script" -r "smodpeekscript" +kpackagetool6 -t "KWin/WindowSwitcher" -r "flip3d" +kpackagetool6 -t "KWin/WindowSwitcher" -r "thumbnail_seven" +``` + +- Delete the outline at `~/.local/share/kwin/outline` +- Delete the symlinks `~/.local/share/kwin-x11` and `~/.local/share/kwin-wayland` +- Delete the branding at `~/.config/kdedefaults/kcm-about-distrorc` and the logo (`~/.config/kdedefaults/kcminfo.png`) + +### Other components + +- Delete the cursor theme at `/usr/share/icons/aero-drop` +- Delete the SDDM theme at `/usr/share/sddm/themes/sddm-theme-mod` +- Delete the SMOD files at `/usr/share/smod` and `~/.local/share/smod` +- Delete `/opt/aerothemeplasma` diff --git a/compile.sh b/compile.sh index 3c94f555..0cb083d5 100755 --- a/compile.sh +++ b/compile.sh @@ -1,8 +1,9 @@ #!/bin/bash # You can pass the following arguments to this script: -# --ninja Uses Ninja for faster compilation -# --wayland Tells the KWin build scripts to compile the C++ effects for Wayland +# --ninja Uses Ninja for faster compilation +# --wayland Tells the KWin build scripts to compile the C++ effects for Wayland +# --skip-libplasma Skips compiling libplasma patches CUR_DIR=$(pwd) USE_SCRIPT="install.sh" @@ -21,9 +22,11 @@ fi # Compiles the libplasma patches required for other components of ATP. # Requires a restart to be applied. -cd "$PWD/misc/libplasma" -sh $USE_SCRIPT $@ -cd "$CUR_DIR" +if [[ "$*" != *"--skip-libplasma"* ]]; then + cd "$PWD/misc/libplasma" + sh $USE_SCRIPT $@ + cd "$CUR_DIR" +fi #echo "Compiling plasmoids..." #for filename in "$PWD/plasma/plasmoids/src/"*; do @@ -41,6 +44,11 @@ sh $USE_SCRIPT $@ cd "$CUR_DIR" echo "Done." +echo -e "Installing login manager entries..." +cd "$PWD/plasma/sddm/login-sessions" +sh $USE_SCRIPT +echo "Done." + # Compiles the settings KCM loader used for development and quick access of certain settings pages. echo "Compiling KCM loader..." cd "$PWD/plasma/aerothemeplasma-kcmloader" diff --git a/install_plasma_components.sh b/install_plasma_components.sh index 380dc795..25f4dbf3 100755 --- a/install_plasma_components.sh +++ b/install_plasma_components.sh @@ -7,10 +7,6 @@ if [[ -z "$(command -v kpackagetool6)" ]]; then echo "kpackagetool6 not found. Stopping." exit fi -if [[ -z "$(command -v cmake)" ]]; then - echo "CMake not found. Stopping." - exit -fi if [[ -z "$(command -v tar)" ]]; then echo "tar not found. Stopping." exit @@ -54,9 +50,6 @@ cp "$PWD/plasma/color_scheme/Aero.colors" "$COLOR_DIR" #plasma-apply-colorscheme Aero # Installs the SDDM theme, as well as the SDDM entries required for ATP. -echo -e "Installing login manager entries..." -cd "plasma/sddm/login-sessions" -sh install.sh echo -e "Installing SDDM theme..." cd "$CUR_DIR/plasma/sddm" tar -zcvf "sddm-theme-mod.tar.gz" "sddm-theme-mod" diff --git a/install_plasmoids.sh b/install_plasmoids.sh index 43316c5f..a38960b1 100755 --- a/install_plasmoids.sh +++ b/install_plasmoids.sh @@ -27,7 +27,7 @@ fi # Skips the build process of plasmoids that have C++ components # Most of the time, recompiling isn't needed as most changes are done # on the QML side. -if [[ $1 == '--no-compile' ]]; then +if [[ "$*" == *"--no-compile"* ]]; then echo "Skipping compilation..." else echo "Compiling plasmoids..." @@ -65,12 +65,15 @@ function install_plasmoid { # As such, we need to first terminate plasmashell in order to retain # saved configurations -killall plasmashell - -for filename in "$PWD/plasma/plasmoids/"*; do - install_plasmoid "$filename" -done - -setsid plasmashell --replace & # Restart plasmashell and detach it from the script +if [[ "$*" == *"--skip-kpackages"* ]]; then + echo -e "Skipping QML Plasmoids" +else + killall plasmashell + for filename in "$PWD/plasma/plasmoids/"*; do + install_plasmoid "$filename" + done + setsid plasmashell --replace & # Restart plasmashell and detach it from the script +fi + diff --git a/uninstall.sh b/uninstall.sh new file mode 100644 index 00000000..3fc88465 --- /dev/null +++ b/uninstall.sh @@ -0,0 +1,245 @@ +#!/bin/bash +CUR_DIR=$(pwd) + +# Sanity check to see if the proper tools are installed. +if [[ -z "$(command -v kpackagetool6)" ]]; then + echo "kpackagetool6 not found. Stopping." + exit +fi +if [[ -z "$(command -v qdbus6)" ]]; then + echo "qdbus6 not found. Stopping." + exit +fi + +SHELL=$(qdbus6 org.kde.plasmashell /PlasmaShell shell) + +if [ $SHELL == "io.gitgud.wackyideas.desktop" ]; then + echo -e "You shouldn't run the uninstall script from AeroThemePlasma itself." + echo -e "Please run the uninstall script from the Plasma session or another session." + exit +fi + +BUILD_FILES=("kwin/decoration/build" + "plasma/sddm/login-sessions/build" + "plasma/aerothemeplasma-kcmloader/build" + "plasma/plasmoids/src/systemtray_src/build" + "plasma/plasmoids/src/notifications_src/build" + "plasma/plasmoids/src/volume_src/build" + "plasma/plasmoids/src/sevenstart_src/build" + "plasma/plasmoids/src/seventasks_src/build" + "plasma/plasmoids/src/desktopcontainment/build" + "kwin/effects_cpp/kde-effects-aeroglassblur/build" + "kwin/effects_cpp/kwin-effect-smodsnap-v2/build" + "kwin/effects_cpp/smodglow/build" + "kwin/effects_cpp/aeroglide/build" + "kwin/effects_cpp/startupfeedback/build" + "kwin/effects_cpp/kde-effects-aeroglassblur/build-wl" + "kwin/effects_cpp/kwin-effect-smodsnap-v2/build-wl" + "kwin/effects_cpp/smodglow/build-wl" + "kwin/effects_cpp/aeroglide/build-wl" + "kwin/effects_cpp/startupfeedback/build-wl" +) + +function uninstall_cmake_component { + if [ ! -f "$CUR_DIR/$1/install_manifest.txt" ]; then + echo -e "File install_manifest.txt in $CUR_DIR/$1 was not found." + echo -e "If this component was already removed from the system, you can ignore this message.\n" + echo -e "Otherwise, to generate this file, run the compile.sh and install_plasmoids.sh scripts again like this:" + echo -e "$ sh compile.sh --skip-libplasma [--ninja]" + echo -e "$ sh install_plasmoids.sh --skip-kpackages [--ninja]" + echo -e "Afterwards, re-run this script." + else + cd "$CUR_DIR/$1" + BUILD_TOOL=make + if [ -f "build.ninja" ]; then + BUILD_TOOL=ninja + fi + sudo $BUILD_TOOL uninstall + echo -e "Done." + cd "$CUR_DIR" + fi +} + +for path in ${BUILD_FILES[@]}; do + uninstall_cmake_component "$path" +done + +function uninstall_prompt { + echo -e "Do you want to uninstall: $1? (y/N)" + if [ ! -z "$2" ]; then + echo -e "The following will be removed: $2" + fi + read answer + if [ "$answer" != "${answer#[Yy]}" ]; then + return 1 + else + return 0 + fi +} + +function uninstall_plasmoid { + PLASMOID=$(basename "$1") + if [[ $PLASMOID == 'src' ]]; then + echo "Skipping $PLASMOID" + return + fi + if [[ $PLASMOID == 'io.gitgud.wackyideas.systemtray' ]]; then + pkexec kpackagetool6 -t "Plasma/Applet" -g -r "$1" + else + kpackagetool6 -t "Plasma/Applet" -r "$1" + fi + echo -e "Uninstalled $1.\n" + cd "$CUR_DIR" +} + +function uninstall_component { + COMPONENT=$(basename "$1") + kpackagetool6 -t "$2" -r "$1" + echo -e "Uninstalled $1.\n" + cd "$CUR_DIR" +} + +uninstall_prompt "Plasmoids" +if [ "$?" == 1 ]; then + echo "Uninstalling plasmoids..." + for filename in "$PWD/plasma/plasmoids/"*; do + uninstall_plasmoid "$filename" + done +fi + +uninstall_prompt "Plasma components" +if [ "$?" == 1 ]; then + echo "Uninstalling Plasma components..." + uninstall_component "authui7" "Plasma/LookAndFeel" + uninstall_component "io.gitgud.wackyideas.taskbar" "Plasma/LayoutTemplate" + uninstall_component "Seven-Black" "Plasma/Theme" + uninstall_component "io.gitgud.wackyideas.desktop" "Plasma/Shell" +fi + + +COLOR_DIR="$HOME/.local/share/color-schemes" +uninstall_prompt "Color scheme" "$COLOR_DIR/Aero.colors" +if [ "$?" == 1 ]; then + echo "Uninstalling color scheme..." + rm "$COLOR_DIR/Aero.colors" + echo "Done." +fi + +KV_DIR="$HOME/.config/Kvantum" +uninstall_prompt "Kvantum theme" "$KV_DIR/Windows7Aero" +if [ "$?" == 1 ]; then + echo "Uninstalling Kvantum theme..." + kvantummanager --set KvAdapta + rm -r "$KV_DIR/Windows7Aero" + echo "Done." +fi + +uninstall_prompt "Sound themes" "$(echo "$HOME/.local/share/sounds/Windows 7"*)" +if [ "$?" == 1 ]; then + echo "Uninstalling sound themes..." + for filename in "$HOME/.local/share/sounds/Windows 7"*; do + rm -r "$filename" + done + echo "Done." +fi + +ICONS_DIR="$HOME/.local/share/icons" +uninstall_prompt "Icon theme" "$ICONS_DIR/Windows 7 Aero" +if [ "$?" == 1 ]; then + echo "Uninstalling icon theme..." + rm -r "$ICONS_DIR/Windows 7 Aero" + echo "Done." +fi + +MIMETYPE_DIR="$HOME/.local/share/mime/packages" +uninstall_prompt "Mimetypes" "$MIMETYPE_DIR/application-vnd.microsoft.portable-executable.xml application-x-ms-dll.xml application-x-msdownload.xml application-x-ms-ne-executable.xml" +if [ "$?" == 1 ]; then + echo "Uninstalling mimetypes..." + for filename in "$PWD/misc/mimetype/"*; do + MIME=$(basename $filename) + rm "$MIMETYPE_DIR/$MIME" + done + update-mime-database "$HOME/.local/share/mime" + echo "Done." +fi + +uninstall_prompt "KWin JS effects" +if [ "$?" == 1 ]; then + echo "Uninstalling KWin effects (JS)..." + for filename in "$PWD/kwin/effects/"*; do + uninstall_component "$filename" "KWin/Effect" + done + echo "Done." +fi + +uninstall_prompt "KWin scripts" +if [ "$?" == 1 ]; then + echo "Uninstalling KWin scripts..." + for filename in "$PWD/kwin/scripts/"*; do + uninstall_component "$filename" "KWin/Script" + done + echo "Done." +fi + +uninstall_prompt "KWin task switchers" +if [ "$?" == 1 ]; then + echo "Uninstalling KWin task switchers..." + for filename in "$PWD/kwin/tabbox/"*; do + uninstall_component "$filename" "KWin/WindowSwitcher" + done + echo "Done." +fi + +KWIN_DIR="$HOME/.local/share/kwin" +echo "Uninstalling KWin outline" +rm -r "$KWIN_DIR/outline" + +if [[ -L "$KWIN_DIR-x11" && -d "$KWIN_DIR-x11" ]]; then + echo "kwin-x11 folder is a symlink, remove it." + rm "$KWIN_DIR-x11" +fi + +if [[ -L "$KWIN_DIR-wayland" && -d "$KWIN_DIR-wayland" ]]; then + echo "kwin-wayland folder is a symlink, remove it." + rm "$KWIN_DIR-wayland" +fi + +BRANDING_DIR="$HOME/.config/kdedefaults" +if [ ! -z "$(grep -rni "aerothemeplasma" "$BRANDING_DIR/kcm-about-distrorc")" ]; then + echo "Uninstalling branding..." + rm "$BRANDING_DIR/kcm-about-distrorc" + rm "$BRANDING_DIR/kcminfo.png" +fi + +CURSOR_DIR="/usr/share/icons/aero-drop" +uninstall_prompt "Cursor theme (requires sudo privileges)" "$CURSOR_DIR" +if [ "$?" == 1 ]; then + echo "Uninstalling cursor theme..." + pkexec rm -r "$CURSOR_DIR" + echo "Done." +fi + +SDDM_DIR="/usr/share/sddm/themes/sddm-theme-mod" +uninstall_prompt "SDDM theme (requires sudo privileges)" "$SDDM_DIR" +if [ "$?" == 1 ]; then + echo "Uninstalling SDDM theme..." + pkexec rm -r "$SDDM_DIR" + echo "Done." +fi + +SMOD_DIR="/usr/share/smod" +uninstall_prompt "SMOD files (requires sudo privileges)" "$SMOD_DIR" +if [ "$?" == 1 ]; then + echo "Uninstalling SMOD files..." + pkexec rm -r "$SMOD_DIR" + echo "Done." +fi + +echo "Uninstalling /opt/aerothemeplasma..." +pkexec rm -r "/opt/aerothemeplasma" +echo "Done." + + +echo -e "Uninstallation complete." +echo -e "In order to uninstall the libplasma and polkit agent modifications, simply reinstall those packages using your distro's package manager." + From b319ffbdd7a1bafd75cf58b62f9fb2ffcbf98564 Mon Sep 17 00:00:00 2001 From: wackyideas Date: Sun, 1 Feb 2026 19:37:12 +0100 Subject: [PATCH 02/14] Explicitly use bash instead of sh --- INSTALL.md | 34 +++++++++++++++++----------------- compile.sh | 10 +++++----- install_plasmoids.sh | 2 +- uninstall.sh | 4 ++-- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index d67a2bd7..71a4793d 100755 --- a/INSTALL.md +++ b/INSTALL.md @@ -85,11 +85,11 @@ There are two ways to install AeroThemePlasma: Using the provided install script This is the recommended way of installing ATP. The install scripts compile and deploy the components required for ATP to work. Run the install scripts in the terminal: ```sh -$ sh compile.sh --ninja -$ sh install_plasmoids.sh --ninja -$ sh install_kwin_components.sh -$ sh install_plasma_components.sh -$ sh install_misc_components.sh +$ bash compile.sh --ninja +$ bash install_plasmoids.sh --ninja +$ bash install_kwin_components.sh +$ bash install_plasma_components.sh +$ bash install_misc_components.sh ``` During execution, some scripts may require admin privileges or other prompts from the user. Do **NOT** run any of the provided install scripts with sudo or as root. @@ -120,13 +120,13 @@ Other notable flags include: The compile script must be run while passing the `--wayland` argument for KWin effects: ```bash -$ sh compile.sh --wayland --ninja +$ bash compile.sh --wayland --ninja ``` If compiling individual KWin effects by running their respective `install.sh` scripts, you can also pass the `--wayland` argument there: ```bash -$ sh install.sh --wayland --ninja +$ bash install.sh --wayland --ninja ``` ### Updating AeroThemePlasma @@ -141,12 +141,12 @@ $ git pull and re-run the install scripts: ```sh -$ sh compile.sh -$ sh install_plasmoids.sh -$ sh install_plasmoids.sh --no-compile # If there's no need to recompile the C++ parts of the plasmoids, you can pass this argument to speed things up -$ sh install_kwin_components.sh -$ sh install_plasma_components.sh -$ sh install_misc_components.sh # Usually not required to run again +$ bash compile.sh +$ bash install_plasmoids.sh +$ bash install_plasmoids.sh --no-compile # If there's no need to recompile the C++ parts of the plasmoids, you can pass this argument to speed things up +$ bash install_kwin_components.sh +$ bash install_plasma_components.sh +$ bash install_misc_components.sh # Usually not required to run again ``` Typically it's enough to run the first four scripts after ATP has been updated. It's highly recommended to check for new commits and read the extended descriptions in order to see what has actually changed and what's required when updating. @@ -175,7 +175,7 @@ SevenTasks relies on modifications found in `misc/libplasma` in order to work pr 2. Compile all the C++ components found in the `plasmoids/src` directory like this for each source directory: ```bash -$ sh install.sh --ninja +$ bash install.sh --ninja ``` 3. Move `sddm/sddm-theme-mod` to `/usr/share/sddm/themes`. Optionally, to enable the Vista start screen, set `enableStartup=true` in `theme.conf.user` @@ -293,14 +293,14 @@ AeroThemePlasma officially doesn't have any kind of maintenance, development or AeroThemePlasma provides an uninstall script that undoes much of what's installed on the system. The script assumes that all of the CMake build files are still present in the repo, most importantly the `install_manifest.txt` files generated as a result of installing compiled parts of ATP. If these files are missing from the repo, they need to be regenerated by once again rerunning the necessary scripts like this: ```bash -$ sh compile.sh --skip-libplasma [--wayland] [--ninja] -$ sh install_plasmoids.sh --skip-kpackages [--ninja] +$ bash compile.sh --skip-libplasma [--wayland] [--ninja] +$ bash install_plasmoids.sh --skip-kpackages [--ninja] ``` Once this is done, the script is simply executed: ```bash -$ sh uninstall.sh +$ bash uninstall.sh ``` This should be run outside of the AeroThemePlasma session, preferrably in a regular Plasma session. The script will ask for confirmation to uninstall components of the system. **Please check that none of the locations are ill-formed before accepting each prompt, especially those that require additional privileges to uninstall. In case this happens to you, report it as an issue ASAP.** diff --git a/compile.sh b/compile.sh index 0cb083d5..31dfcc4f 100755 --- a/compile.sh +++ b/compile.sh @@ -24,7 +24,7 @@ fi # Requires a restart to be applied. if [[ "$*" != *"--skip-libplasma"* ]]; then cd "$PWD/misc/libplasma" - sh $USE_SCRIPT $@ + bash $USE_SCRIPT $@ cd "$CUR_DIR" fi #echo "Compiling plasmoids..." @@ -40,19 +40,19 @@ fi # Compiles the window decoration theme engine. echo "Compiling SMOD decorations..." cd "$PWD/kwin/decoration" -sh $USE_SCRIPT $@ +bash $USE_SCRIPT $@ cd "$CUR_DIR" echo "Done." echo -e "Installing login manager entries..." cd "$PWD/plasma/sddm/login-sessions" -sh $USE_SCRIPT +bash $USE_SCRIPT echo "Done." # Compiles the settings KCM loader used for development and quick access of certain settings pages. echo "Compiling KCM loader..." cd "$PWD/plasma/aerothemeplasma-kcmloader" -sh $USE_SCRIPT $@ +bash $USE_SCRIPT $@ cd "$CUR_DIR" echo "Done." @@ -61,7 +61,7 @@ echo "Compiling KWin effects..." for filename in "$PWD/kwin/effects_cpp/"*; do cd "$filename" echo "Compiling $(pwd)" - sh $USE_SCRIPT $@ + bash $USE_SCRIPT $@ echo "Done." cd "$CUR_DIR" done diff --git a/install_plasmoids.sh b/install_plasmoids.sh index a38960b1..a5743cff 100755 --- a/install_plasmoids.sh +++ b/install_plasmoids.sh @@ -35,7 +35,7 @@ else for filename in "$PWD/plasma/plasmoids/src/"*; do cd "$filename" echo "Compiling $(pwd)" - sh $USE_SCRIPT $@ + bash $USE_SCRIPT $@ echo "Done." cd "$CUR_DIR" done diff --git a/uninstall.sh b/uninstall.sh index 3fc88465..2466a9ac 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -45,8 +45,8 @@ function uninstall_cmake_component { echo -e "File install_manifest.txt in $CUR_DIR/$1 was not found." echo -e "If this component was already removed from the system, you can ignore this message.\n" echo -e "Otherwise, to generate this file, run the compile.sh and install_plasmoids.sh scripts again like this:" - echo -e "$ sh compile.sh --skip-libplasma [--ninja]" - echo -e "$ sh install_plasmoids.sh --skip-kpackages [--ninja]" + echo -e "$ bash compile.sh --skip-libplasma [--ninja]" + echo -e "$ bash install_plasmoids.sh --skip-kpackages [--ninja]" echo -e "Afterwards, re-run this script." else cd "$CUR_DIR/$1" From 83ea9cf9985c09a9bdd3d200a8edf2a2d8119379 Mon Sep 17 00:00:00 2001 From: wackyideas Date: Sun, 1 Feb 2026 20:21:30 +0100 Subject: [PATCH 03/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 36992a25..e38e5739 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This is a project which aims to recreate the look and feel of Windows 7 as much ATP is in constant development and testing, it has been tested on: - Arch Linux x64 and other Arch derivatives -- Plasma 6.5.0, KDE Frameworks 6.19.0, Qt 6.10.0 +- Plasma 6.5.5, KDE Frameworks 6.22.0, Qt 6.10.1 - 96 DPI scaling, multi monitor - X11, Wayland* From d0bf694f02e360b659a853b71f291f65abf34433 Mon Sep 17 00:00:00 2001 From: catpswin56 Date: Sun, 1 Feb 2026 20:54:00 -0300 Subject: [PATCH 04/14] Desktop Containment: add support for adding, modifying and removing watermarks --- .../contents/config/config.qml | 11 +- .../contents/config/main.xml | 9 + .../contents/ui/ConfigWatermark.qml | 510 ++++++++++++++++++ .../contents/ui/FolderView.qml | 14 + .../contents/ui/Watermark.qml | 59 ++ .../contents/ui/WatermarkConfigure.qml | 163 ++++++ 6 files changed, 761 insertions(+), 5 deletions(-) create mode 100644 plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/ConfigWatermark.qml create mode 100644 plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/Watermark.qml create mode 100644 plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/WatermarkConfigure.qml diff --git a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/config.qml b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/config.qml index a60eaf81..35eef806 100644 --- a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/config.qml +++ b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/config.qml @@ -10,26 +10,27 @@ import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.configuration 2.0 ConfigModel { - property bool isFolder: true //(Plasmoid.pluginName === "org.kde.plasma.folder") - ConfigCategory { name: i18n("Location") icon: "inode-directory" source: "ConfigLocation.qml" - visible: isFolder } ConfigCategory { name: i18n("Icons") icon: "preferences-desktop-icons" source: "ConfigIcons.qml" - visible: isFolder } ConfigCategory { name: i18n("Filter") icon: "preferences-desktop-filter" source: "ConfigFilter.qml" - visible: isFolder + } + + ConfigCategory { + name: i18n("Watermark") + icon: "plasma" + source: "ConfigWatermark.qml" } } diff --git a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/main.xml b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/main.xml index 0b87a731..3f2460d8 100644 --- a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/main.xml +++ b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/config/main.xml @@ -148,4 +148,13 @@ false + + + + false + + + [] + + diff --git a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/ConfigWatermark.qml b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/ConfigWatermark.qml new file mode 100644 index 00000000..3eaff489 --- /dev/null +++ b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/ConfigWatermark.qml @@ -0,0 +1,510 @@ +/* + * SPDX-FileCopyrightText: 2018 Friedrich W. H. Kossebau + * SPDX-FileCopyrightText: 2022 Ismael Asensio + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts + +import org.kde.kirigami as Kirigami +import org.kde.plasma.plasmoid +import org.kde.kcmutils as KCM + +Item { + id: root + + property var cfg_watermarks + property alias cfg_watermarkVisible: watermarkVisible.checked + + property Window watermarkConfigure: null + + component CustomGroupBox: GroupBox { + id: gbox + label: Label { + id: lbl + x: gbox.leftPadding + 2 + y: lbl.implicitHeight/2-gbox.bottomPadding-1 + width: lbl.implicitWidth + text: gbox.title + elide: Text.ElideRight + Rectangle { + anchors.fill: parent + anchors.leftMargin: -2 + anchors.rightMargin: -2 + color: "white" + z: -1 + } + } + background: Rectangle { + y: gbox.topPadding - gbox.bottomPadding*2 + width: parent.width + height: parent.height - gbox.topPadding + gbox.bottomPadding*2 + color: "transparent" + border.color: "#d5dfe5" + radius: 3 + } + } + + ListModel { + id: presets + + ListElement { text: "Windows 10" } + ListElement { text: "Windows 8.1" } + ListElement { text: "Windows 8" } + ListElement { text: "Windows 7" } + ListElement { text: "Windows Vista" } + ListElement { text: "AeroThemePlasma" } + } + + Item { + id: watermarkManager + + property var watermarks + property int count: 0 + + function setWatermark(index: int, text: string, bold: bool, color: string, horizontalAlignment: int) { + watermarks[index].text = text; + watermarks[index].bold = bold; + watermarks[index].color = color; + watermarks[index].horizontalAlignment = horizontalAlignment; + save(); + } + + function addWatermark(index: int, text: string, bold: bool, color: string, horizontalAlignment: int) { + var watermark = { + "text":text, + "bold":bold, + "color":color, + "horizontalAlignment":horizontalAlignment + }; + watermarks.push(watermark); + repeater_watermarks.selected_delegate = watermarks.length - 1; + save(); + } + + function deleteWatermark(index: int) { + watermarks.splice(index, 1); + repeater_watermarks.selected_delegate--; + repeater_watermarks.selected_delegate--; + save(); + } + + function moveUp(index: int) { + if(index !== 0) { + var object = watermarks[index]; + + watermarks.splice(index, 1); + watermarks.splice(index-1, 0, object); + } + + save(); + } + + function newWatermark() { + var component = Qt.createComponent("WatermarkConfigure.qml"); + + watermarkConfigure = component.createObject(root, { purpose: "new" }); + watermarkConfigure.done.connect(watermarkManager.addWatermark); + watermarkConfigure.show(); + } + + function modify(index: int) { + var watermark = watermarkManager.watermarks[repeater_watermarks.selected_delegate]; + var component = Qt.createComponent("WatermarkConfigure.qml"); + + watermarkConfigure = component.createObject(root, { + index: repeater_watermarks.selected_delegate, + purpose: "modify", + text: watermark.text, + bold: watermark.bold, + color: watermark.color, + horizontalAlignment: watermark.horizontalAlignment + }); + watermarkConfigure.done.connect(watermarkManager.setWatermark); + watermarkConfigure.show(); + } + + function moveDown(index: int) { + if(index < count) { + var object = watermarks[index]; + + watermarks.splice(index, 1); + watermarks.splice(index+1, 0, object); + } + + save(); + } + + function remove(index: int) { + watermarks.splice(index, 1); + repeater_watermarks.selected_delegate--; + save(); + } + + function clear() { + watermarks.splice(0, count); + save(); + } + + function save() { + repeater_watermarks.model = null; + root.cfg_watermarks = JSON.stringify(watermarks); + count = watermarks.length; + repeater_watermarks.model = count; + } + + function loadPreset(preset: int) { + clear(); + switch(preset) { + case 0: { + addWatermark(0, "Windows 10", false, "FFFFFF", 2); + addWatermark(0, "Build 22H2", false, "FFFFFF", 2); + break; + } + case 1: { + addWatermark(0, "Windows 8.1", false, "FFFFFF", 2); + addWatermark(0, "Build 9600", false, "FFFFFF", 2); + break; + } + case 2: { + addWatermark(0, "Windows 8", false, "FFFFFF", 2); + addWatermark(0, "Build 9200", false, "FFFFFF", 2); + break; + } + case 3: { + addWatermark(0, "Windows 7", false, "FFFFFF", 2); + addWatermark(0, "Build 7601", false, "FFFFFF", 2); + break; + } + case 4: { + addWatermark(0, "Windows Vista(TM)", false, "FFFFFF", 2); + addWatermark(0, "Build 6003", false, "FFFFFF", 2); + break; + } + case 5: { + addWatermark(0, "AeroThemePlasma", false, "FFFFFF", 2); + addWatermark(0, "Build 6.5.0", false, "FFFFFF", 2); + break; + } + } + } + + + Component.onCompleted: { + watermarks = JSON.parse(Plasmoid.configuration.watermarks); + count = watermarks.length; + } + } + + ColumnLayout { + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: Kirigami.Units.gridUnit*4 + anchors.rightMargin: Kirigami.Units.gridUnit*4 + + CheckBox { + id: watermarkVisible + text: i18n("Enabled") + } + + CustomGroupBox { + Layout.fillWidth: true + + title: i18n("Presets") + enabled: watermarkVisible.checked + + RowLayout { + anchors.fill: parent + + Button { + Layout.alignment: Qt.AlignTop + + text: i18n("Load") + onClicked: { + watermarkManager.loadPreset(repeater_presets.selected_delegate) + repeater_presets.selected_delegate = -1 + } + enabled: repeater_presets.selected_delegate !== -1 && watermarkVisible.checked + } + + Item { + Layout.alignment: Qt.AlignTop + + Layout.fillWidth: true + Layout.horizontalStretchFactor: 1 + Layout.minimumHeight: 22 + Layout.preferredHeight: list_presets.height + + Rectangle { + anchors.fill: parent + anchors.margins: -1 + + border.width: 1 + border.color: "lightgray" + } + + ColumnLayout { + id: list_presets + + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + spacing: 0 + + Repeater { + id: repeater_presets + + property int selected_delegate: -1 + + model: presets + delegate: Item { + id: delegate + + required property var model + required property int index + + property bool selected: repeater_presets.selected_delegate == index + property bool hovered: ma.containsMouse + + Layout.fillWidth: true + Layout.preferredHeight: 22 + + enabled: watermarkVisible.checked + opacity: enabled ? 1.0 : 0.5 + + Rectangle { + anchors.fill: parent + + color: "#3399FF" + + visible: (delegate.hovered || delegate.selected) && delegate.enabled + opacity: delegate.selected ? 1.0 : 0.5 + } + + Text { + anchors.fill: parent + + verticalAlignment: Text.AlignVCenter + text: model.text + leftPadding: 3 + rightPadding: 3 + } + + MouseArea { + id: ma + + anchors.fill: parent + + hoverEnabled: true + enabled: delegate.enabled + onPressed: repeater_presets.selected_delegate = delegate.index; + onDoubleClicked: { + watermarkManager.loadPreset(model.index); + repeater_presets.selected_delegate = -1; + } + } + } + } + } + } + + } + } + + CustomGroupBox { + Layout.fillWidth: true + + title: i18n("Watermarks") + enabled: watermarkVisible.checked + + RowLayout { + anchors.fill: parent + + ColumnLayout { + id: control_column + + Layout.alignment: Qt.AlignTop + + uniformCellSizes: true + spacing: 4 + + Button { + Layout.fillWidth: true + + text: i18n("New") + onClicked: watermarkManager.newWatermark(); + enabled: watermarkVisible.checked + } + + Button { + Layout.fillWidth: true + + text: i18n("Clear") + onClicked: watermarkManager.clear(); + enabled: watermarkVisible.checked + } + + Item { } + + Button { + Layout.fillWidth: true + + text: i18n("Remove") + onClicked: watermarkManager.remove(repeater_watermarks.selected_delegate) + enabled: repeater_watermarks.selected_delegate !== -1 && watermarkVisible.checked + } + + Button { + Layout.fillWidth: true + + text: i18n("Modify") + onClicked: watermarkManager.modify(repeater_watermarks.selected_delegate) + enabled: repeater_watermarks.selected_delegate !== -1 && watermarkVisible.checked + } + + Button { + Layout.fillWidth: true + + text: i18n("Up") + onClicked: { + watermarkManager.moveUp(repeater_watermarks.selected_delegate); + repeater_watermarks.selected_delegate--; + } + enabled: repeater_watermarks.selected_delegate !== -1 && watermarkVisible.checked + } + Button { + Layout.fillWidth: true + + text: i18n("Down") + onClicked: { + watermarkManager.moveDown(repeater_watermarks.selected_delegate); + repeater_watermarks.selected_delegate++; + } + enabled: repeater_watermarks.selected_delegate !== -1 && watermarkVisible.checked + } + } + + Item { + Layout.alignment: Qt.AlignTop + + Layout.fillWidth: true + Layout.horizontalStretchFactor: 1 + Layout.preferredHeight: control_column.height + + Rectangle { + anchors.fill: parent + anchors.margins: -1 + + border.width: 1 + border.color: "lightgray" + } + + ScrollView { + anchors.fill: parent + + ColumnLayout { + id: list_watermarks + + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + spacing: 0 + + Repeater { + id: repeater_watermarks + + property int selected_delegate: -1 + + model: watermarkManager.count + delegate: Item { + id: delegate + + required property int index + + property bool selected: repeater_watermarks.selected_delegate == index + property bool hovered: ma.containsMouse + + Layout.fillWidth: true + Layout.preferredHeight: 22 + + enabled: watermarkVisible.checked + opacity: enabled ? 1.0 : 0.5 + + Rectangle { + anchors.fill: parent + + color: "#3399FF" + + visible: delegate.hovered || delegate.selected + opacity: delegate.selected ? 1.0 : 0.5 + } + + RowLayout { + id: row + + anchors.fill: parent + anchors.leftMargin: 3 + anchors.rightMargin: 3 + + Rectangle { + Layout.alignment: Qt.AlignVCenter + + Layout.preferredWidth: 16 + Layout.preferredHeight: 16 + + color: "#" + watermarkManager.watermarks[delegate.index].color + + border.width: 1 + border.color: "gray" + } + + Text { + Layout.alignment: Qt.AlignVCenter + + Layout.fillWidth: true + Layout.fillHeight: true + + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + text: watermarkManager.watermarks[delegate.index].text + font.bold: watermarkManager.watermarks[delegate.index].bold + horizontalAlignment: { + switch(watermarkManager.watermarks[delegate.index].horizontalAlignment) { + case 0: + return Text.AlignLeft; + case 1: + return Text.AlignHCenter; + case 2: + return Text.AlignRight; + } + } + } + } + + MouseArea { + id: ma + + anchors.fill: parent + + hoverEnabled: true + enabled: delegate.enabled + onPressed: repeater_watermarks.selected_delegate = delegate.index; + onDoubleClicked: { + repeater_watermarks.selected_delegate = delegate.index; + watermarkManager.modify(repeater_watermarks.selected_delegate); + } + } + } + } + } + } + } + } + } + } +} diff --git a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderView.qml b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderView.qml index 39e584bb..c5f43fdf 100644 --- a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderView.qml +++ b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderView.qml @@ -244,6 +244,20 @@ FocusScope { id: eventGenerator } + Watermark { + id: watermark + + anchors { + right: parent.right + bottom: parent.bottom + + rightMargin: 5 + bottomMargin: 5 + } + + width: Math.floor(parent.width/4) + } + MouseEventListener { id: listener diff --git a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/Watermark.qml b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/Watermark.qml new file mode 100644 index 00000000..b32ca0ae --- /dev/null +++ b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/Watermark.qml @@ -0,0 +1,59 @@ +import QtQuick +import QtQuick.Layouts + +import org.kde.plasma.plasmoid + +ColumnLayout { + spacing: 0 + + opacity: Plasmoid.configuration.watermarkVisible + z: -1 + + Item { + id: watermarkManager + + property var watermarks + property int count: 0 + + function load() { + watermarks = JSON.parse(Plasmoid.configuration.watermarks); + count = watermarks.length; + } + + Connections { + target: Plasmoid.configuration + + function onWatermarksChanged() { + watermarkManager.load(); + } + } + + Component.onCompleted: load() + } + + Repeater { + model: watermarkManager.count + delegate: Text { + id: delegate + + required property int index + + Layout.fillWidth: true + + text: watermarkManager.watermarks[index].text + font.bold: watermarkManager.watermarks[index].bold + color: "#" + watermarkManager.watermarks[index].color + wrapMode: Text.WordWrap + horizontalAlignment: { + switch(watermarkManager.watermarks[index].horizontalAlignment) { + case 0: + return Text.AlignLeft; + case 1: + return Text.AlignHCenter; + case 2: + return Text.AlignRight; + } + } + } + } +} diff --git a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/WatermarkConfigure.qml b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/WatermarkConfigure.qml new file mode 100644 index 00000000..3edb0b64 --- /dev/null +++ b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/WatermarkConfigure.qml @@ -0,0 +1,163 @@ +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls as QQC2 + +import org.kde.kirigami as Kirigami + +Window { + id: root + + property string purpose + property int index + + property string text: "New watermark" + property bool bold: false + property string color: "FFFFFF" + property int horizontalAlignment: 2 + + signal done(int index, string text, bool bold, string color, int horizontalAlignment) + onDone: destroy(); + + minimumWidth: width + minimumHeight: height + width: 418 + height: column.height < 1 ? 1 : column.height + maximumWidth: width + maximumHeight: height + + title: i18n("Desktop") + + FontMetrics { id: systemFont; font: color.font } + + ColumnLayout { + id: column + + anchors.left: parent.left + anchors.right: parent.right + + spacing: 0 + + Rectangle { + id: topContents + + Layout.preferredWidth: parent.width + Layout.preferredHeight: row.implicitHeight + 24 + + color: "white" + + RowLayout { + id: row + + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: 12 + + spacing: 8 + + Kirigami.Icon { + Layout.alignment: Qt.AlignTop + + implicitWidth: 32 + implicitHeight: 32 + + source: "plasma" + } + + ColumnLayout { + Text { + Layout.fillWidth: true + + text: root.purpose == "new" ? i18n("Create a new watermark") : i18n("Modify an existing watermark") + color: "#003399" + font.pointSize: 11 + } + + RowLayout { + Layout.fillWidth: true + + Text { Layout.fillWidth: true; text: i18n("Text:") } + + QQC2.TextField { id: text; Layout.fillWidth: true; text: root.text } + } + + QQC2.CheckBox { + id: bold + + text: i18n("Use bold text") + checked: root.bold + } + + RowLayout { + Text { + Layout.fillWidth: true + + text: i18n("Color (HEX):") + } + + Text { + text: "#" + } + QQC2.TextField { + id: color + + Layout.minimumWidth: Math.round(systemFont.maximumCharacterWidth)*6 + Layout.maximumWidth: Math.round(systemFont.maximumCharacterWidth)*6 + + validator: RegularExpressionValidator { regularExpression: /[0-9A-Fa-f]+/ } + maximumLength: 6 + text: root.color + color: "black" + } + } + + RowLayout { + Text { + Layout.fillWidth: true + + text: i18n("Horizontal alignment:") + } + + QQC2.ComboBox { + id: horizontalAlignment + + currentIndex: root.horizontalAlignment + model: [ + "Left", + "Center", + "Right" + ] + } + } + } + } + } + + Rectangle { Layout.preferredWidth: parent.width; Layout.preferredHeight: 1; color: "#dfdfdf" } + + Rectangle { + Layout.preferredWidth: parent.width + Layout.preferredHeight: 40 + + color: "#f0f0f0" + + RowLayout { + anchors.fill: parent + anchors.rightMargin: 11 + + spacing: 8 + + Item { Layout.fillWidth: true } + + QQC2.Button { + text: i18n("OK") + onClicked: root.done(root.index, text.text, bold.checked, color.text, horizontalAlignment.currentIndex); + } + QQC2.Button { + text: i18n("Cancel") + onClicked: root.destroy(); + } + } + } + } +} From cbcabcfaa92d9b7102c7189085a327859602fceb Mon Sep 17 00:00:00 2001 From: wackyideas Date: Mon, 2 Feb 2026 01:13:34 +0100 Subject: [PATCH 05/14] Update Ubuntu 25.10 dependencies --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 71a4793d..de3be08b 100755 --- a/INSTALL.md +++ b/INSTALL.md @@ -59,7 +59,7 @@ In openSUSE, additional dependencies for X11 include: ### Ubuntu 25.10 ```bash -apt install build-essential cmake ninja-build curl libqt6virtualkeyboard6 libqt6multimedia6 libqt6core5compat6 libplasma5support6 libkdecorations3-dev libkf6colorscheme-dev libkf6i18n-dev libkf6iconthemes-dev libkf6kcmutils-dev libkirigami-dev libkf6kio-dev libkf6notifications-dev libkf6svg-dev libkf6crash-dev libkf6globalaccel-dev libplasma-dev libplasmaactivities-dev libxcb-composite0-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-damage0-dev libepoxy-dev libqt6svg6-dev kwin-dev plasma-wayland-protocols +apt install build-essential cmake ninja-build curl libqt6virtualkeyboard6 libqt6multimedia6 libqt6core5compat6 libplasma5support6 libkdecorations3-dev libkf6colorscheme-dev libkf6i18n-dev libkf6iconthemes-dev libkf6kcmutils-dev libkirigami-dev libkf6kio-dev libkf6notifications-dev libkf6svg-dev libkf6crash-dev libkf6globalaccel-dev libplasma-dev libplasmaactivities-dev libxcb-composite0-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-damage0-dev libepoxy-dev libqt6svg6-dev kwin-dev plasma-wayland-protocols libkf5qqc2desktopstyle-dev libkf6qqc2desktopstyle-dev libplasma5support-dev libkf6auth-dev libkf6newstuff-dev libkf6notifyconfig-dev libkf6attica-dev libkf6runner-dev libkf6dbusaddons-dev libkf6sonnet-dev libkf6xmlgui-dev libkf6coreaddons-dev libkf6widgetsaddons-dev libkf6guiaddons-dev qt6-base-dev qt6-5compat-dev qml-module-org-kde-qqc2desktopstyle libplasmaactivitiesstats-dev plasma-workspace-dev libkf6statusnotifieritem-dev qml-module-org-kde-kirigami-addons-sounds qml6-module-org-kde-kirigamiaddons-sounds ``` On Ubuntu, additional dependencies for X11 include: From 0f0467bfe79f4f2bff0fda1b69d7682729fa8d18 Mon Sep 17 00:00:00 2001 From: meowkatee <101366-meowkatee@users.noreply.gitgud.io> Date: Mon, 2 Feb 2026 16:46:52 +0000 Subject: [PATCH 06/14] fix: remove plasma applets in uninstall.sh --- uninstall.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/uninstall.sh b/uninstall.sh index 2466a9ac..793fd578 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -235,6 +235,18 @@ if [ "$?" == 1 ]; then echo "Done." fi +LIBDIR="/usr/lib/x86_64-linux-gnu/" +if [ ! -d ${LIBDIR} ]; then + LIBDIR="/usr/lib64/" +fi +APPLET_DIR="${LIBDIR}qt6/plugins/plasma/applets/" +uninstall_prompt "Plasma applets (requires sudo privileges)" "${APPLET_DIR}/io.gitgud.wackyideas."* +if [ "$?" == 1 ]; then + echo "Uninstalling Plasma applet plugins..." + pkexec rm -r "${APPLET_DIR}/io.gitgud.wackyideas."* + echo "Done." +fi + echo "Uninstalling /opt/aerothemeplasma..." pkexec rm -r "/opt/aerothemeplasma" echo "Done." From 144be00d9d30416eda0f77dda93cfcfe9a506a25 Mon Sep 17 00:00:00 2001 From: meowkatee <101366-meowkatee@users.noreply.gitgud.io> Date: Tue, 3 Feb 2026 08:26:44 +0000 Subject: [PATCH 07/14] fix: do not override `$SHELL` special environment --- uninstall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index 793fd578..616896ea 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -11,9 +11,9 @@ if [[ -z "$(command -v qdbus6)" ]]; then exit fi -SHELL=$(qdbus6 org.kde.plasmashell /PlasmaShell shell) +PLASMASHELL=$(qdbus6 org.kde.plasmashell /PlasmaShell shell) -if [ $SHELL == "io.gitgud.wackyideas.desktop" ]; then +if [ $PLASMASHELL == "io.gitgud.wackyideas.desktop" ]; then echo -e "You shouldn't run the uninstall script from AeroThemePlasma itself." echo -e "Please run the uninstall script from the Plasma session or another session." exit From 57f7ce5f73eb914d0100dd1c33044edc610d3b85 Mon Sep 17 00:00:00 2001 From: wackyideas Date: Tue, 3 Feb 2026 13:13:51 +0100 Subject: [PATCH 08/14] Bring back badges to SevenTasks --- .../contents/ui/Badge.qml | 72 ++++++++++++++++++ .../contents/ui/Task.qml | 15 ++++ .../contents/ui/main.qml | 13 ++++ .../contents/ui/svgs/badge.svgz | Bin 0 -> 2478 bytes 4 files changed, 100 insertions(+) create mode 100644 plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Badge.qml create mode 100644 plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/svgs/badge.svgz diff --git a/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Badge.qml b/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Badge.qml new file mode 100644 index 00000000..84951047 --- /dev/null +++ b/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Badge.qml @@ -0,0 +1,72 @@ +/* + SPDX-FileCopyrightText: 2018 Kai Uwe Broulik + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +import QtQuick + +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components as PlasmaComponents3 +import org.kde.ksvg as KSvg +import org.kde.kirigami as Kirigami +import QtQuick.Effects + +// This top-level item is an opaque background that goes behind the colored +// background, for contrast. It's not an Item since that it would be square, +// and not round, as required here +KSvg.SvgItem { + id: badgeRect + + property int number: 0 + property color badgeColor: "black" + + implicitWidth: Kirigami.Units.iconSizes.small//Math.max(height, Math.round(label.contentWidth)) // Add some padding around. + implicitHeight: Kirigami.Units.iconSizes.small//implicitWidth + + svg: badgeRing + elementId: "ring" + + KSvg.SvgItem { + id: badgeGradient + svg: badgeRing + elementId: "gradient" + z: -1 + anchors.fill: parent + layer.enabled: true + layer.effect: MultiEffect { + colorization: 1.0 + colorizationColor: badgeRect.badgeColor + brightness: { + if(badgeRect.badgeColor.hslLightness < 0.5) return 0.75; + if(badgeRect.badgeColor.hslLightness > 0.7) { return 0.15; } + return 0.25 + } + } + } + + // Number + PlasmaComponents3.Label { + id: label + anchors.centerIn: parent + anchors.alignWhenCentered: false + width: height + height: Math.min(Kirigami.Units.gridUnit * 2, Math.round(parent.height)-2) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + fontSizeMode: Text.VerticalFit + font.pointSize: 1024 + font.letterSpacing: -1 + minimumPointSize: 5 + text: { + if (badgeRect.number < 0) { + return i18nc("Invalid number of new messages, overlay, keep short", "—"); + } else if (badgeRect.number > 9) { + return i18nc("Over 9 new messages, overlay, keep short", "9+"); + } else { + return badgeRect.number.toLocaleString(Qt.locale(), 'f', 0); + } + } + textFormat: Text.PlainText + } +} diff --git a/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Task.qml b/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Task.qml index 10a969ce..3bb71cf9 100644 --- a/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Task.qml +++ b/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/Task.qml @@ -605,6 +605,7 @@ TaskManagerApplet.SmartLauncherItem { } onTapped: leftClick() function leftClick() { + if(tasksRoot.pinnedToolTipOpen) { task.hideImmediately(); tasksRoot.pinnedToolTipOpen = false; @@ -1367,6 +1368,20 @@ TaskManagerApplet.SmartLauncherItem { } onSourceChanged: { containerRect.glowColor = Plasmoid.getDominantColor(iconBox.source); + badge.badgeColor = containerRect.glowColor + } + + Badge { + id: badge + visible: task.smartLauncherItem && task.smartLauncherItem.countVisible + number: task.smartLauncherItem.count + anchors.top: parent.top + anchors.right: parent.right + anchors.rightMargin: (tasksRoot.height <= 30) ? -Kirigami.Units.largeSpacing : -Kirigami.Units.smallSpacing + anchors.topMargin: (tasksRoot.height <= 30) ? -Kirigami.Units.smallSpacing : 0 + Component.onCompleted: { + badgeColor = containerRect.glowColor + } } } diff --git a/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/main.qml b/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/main.qml index 29b61fcb..a58d121c 100644 --- a/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/main.qml +++ b/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/main.qml @@ -23,6 +23,7 @@ import org.kde.plasma.plasma5support as Plasma5Support import org.kde.kquickcontrolsaddons import org.kde.kwindowsystem +import org.kde.notificationmanager as NotificationManager import "code/layoutmetrics.js" as LayoutMetrics import "code/tools.js" as TaskTools @@ -71,6 +72,14 @@ PlasmoidItem { } ] + NotificationManager.Notifications { + id: historyModel + showExpired: true + showDismissed: true + showJobs: true + groupLimit: 2 + expandUnread: true + } onIconsOnlyChanged: { iconGeometryTimer.start(); @@ -448,6 +457,10 @@ PlasmoidItem { Drag.onDragFinished: tasks.dragSource = null; } + KSvg.Svg { + id: badgeRing + imagePath: Qt.resolvedUrl("svgs/badge.svgz") + } KSvg.FrameSvgItem { id: taskFrame diff --git a/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/svgs/badge.svgz b/plasma/plasmoids/io.gitgud.wackyideas.seventasks/contents/ui/svgs/badge.svgz new file mode 100644 index 0000000000000000000000000000000000000000..d65d64726702c6ac06a7c6b1160eaf2611ebe35f GIT binary patch literal 2478 zcmV;f2~qYRiwFP!000000L5BcZ`(Q&e($f)`n)tiB$L#IloR`4+u{@p?7;%3?aO&n zB-++SmJCUb?JV}c@9-jtx;RZv(yomJ(r`F4oXf`{liOcUyUcpvWtA5Ba)uo=vv?jC zNt$n#vu|I2v)Rn5>L^d5tjPItmKU>MSMP5BX4}@sl1DX9tYcblt$*bARUGZP^?qB| z`^9{IJRY4?6P=>m%&#olUcGyFTRm*vSr*Jn>MdvtX5wwj)6KSSUmsF_{7{^hGh`vl zbBHTGqx)%nU=eX8;lwf~NedLjAiy-3LnApU>l9MV}_#S>1 zNfGDK4%T}YB^&O5)JMqx-da@qD29=J$tzwy@V+*F+81SQuhWbx0lX}W(n{kZmr|U4 zzL}hHO7`h;76y}pXLAs2$g4%evYcIVxX>?ct>z8gnBOe5o!=0gsyLJ}UxNtlx-`*xGTzpm(388pWaXb-b?Eb^0NVDTMs6!Brl^V&Y-X$?N!?S>qW zMX`hYXAY*=)74`P$53dVLy?ae9W65kG z!xv^5Q?M5zVv5stEN6z2Ji5zxKRE?JS1FJ+)tawv=i{1O-6nipb(JaJ@N6Xsw^e=4 zc!Szaq@>Aq1y!+Ay6Uq)xSF5pd0bU`uJ||~1?v~dX@7{~`%PIK@-}SNf7&PQh=nfj zn|9#8%8fj^M!eqZv`8YUzMq52FITyQ<~5j8K(4v9IwAGnly zGoy>@6QQ%F>@rP7OUd{q5(Cdcg>5##4?ix{ASWkp6owDY#)_;%c zGCe8QhbTL60AXyQ_Iv5s7rzEt<+68DU{ATBsM8H7TctH`HkZlSIa$uW$i4|;x8J65 z6ZbtYqgudlnh!K-u}aTed2zDVF4dF_tZ1+n+mf#V=qD?3RH@HtKZbVcz~w(i|9K4m4B;vkK=0@VO%Zi$nJsGB*f($lZ|J^h$-LEsIy>@o#W|+45m3>)I4G zBdmbJ3JL2fOVfftJE>`Y9E35UY;c}YRM&e}d4OpAlKKD(E+*+zHp(!x;S^v+N1&Z=7Zr_qV_jWwcw|v8ttc=*ovdoEFK#X&-h#Okbzu+RD0`0XO;tibf)J}`57ePhbsTTl zm+5+(I78vCH**~?@Gv8u(VCf*lWfE&*y5R!-#uqxv-afSP?y4!!o5U%Uwk~oIQ+isXBj>^(qcA!GMtOsl-2E~V{h-bR=06l z#+k;H)|Mo#_E~gZq`8oF1Bj3<4rTU!l%MQM4jM+v*Yc3@MPB5Oyewc9WpU3JzXW&U zt6$YcAe`Kh>xCiq8nRFTp+V6@4oGwtATSReu*d3r#;x}f==_|i}$+Z!NFzhT5c!om8u5I5TaI%9ffZLuGTQ+t?TSO27 z2()a$NHL=>19Qbu)e8w60>zdw9BkgO5M~MRRDy`5r%@6%d_HkK&l=BH^mZm#&{75N zh8}gXM@(Wj3thLi3*%buYrAimJ(%5%JX$+ToX0VPUQgTz04)Yo(Fq^LDWwkR_oXEge{60U$?x%(SvD<*ePo{0=fTa5q)wuRW85L*l?qcMHn?P zQ;;8f03s?7~4d~)rZd2={04N`MfluARkZ~a=K@7PPX*#NmCwzPW3JrOIOG2yRW|G6B4QdHq zN)2K=MPr?$YOF&HyC$)l^-=y;0AZMfreUr_7%Tz@gJoP=`JV>hd4L#dL}MOfENn3k z=3|9<1XTD2v3VlC#ymMsW1e7cIU4BdO~VTF#3b5co}km~PDG#FP1TquCtD4-XRr{% z(mr_t^G4NY7I%k-CTukw!=Q#R65ZAt^oP%F{M!5m#9<K7*azg{4y$;P?r4;sg+Amk?1z sIP}FXc9|QpSR^_V+~Ukkk^h9{Q;zww?QX??SFGOs5A&4bG87~L0H Date: Tue, 3 Feb 2026 14:23:50 +0100 Subject: [PATCH 09/14] notifications: mitigate font rendering issues on HiDPI --- .../notifications/FullRepresentation.qml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plasma/plasmoids/src/notifications_src/notifications/FullRepresentation.qml b/plasma/plasmoids/src/notifications_src/notifications/FullRepresentation.qml index f7f89b71..9d8f0962 100644 --- a/plasma/plasmoids/src/notifications_src/notifications/FullRepresentation.qml +++ b/plasma/plasmoids/src/notifications_src/notifications/FullRepresentation.qml @@ -28,6 +28,12 @@ import "components" as Components PlasmaExtras.Representation { id: fullRepresentationRoot + function fixDpi(val) { + if(Screen.devicePixelRatio !== 1.0) { + return Math.floor(val*Screen.devicePixelRatio) / Screen.devicePixelRatio; + } + return val; + } // TODO these should be configurable in the future readonly property int dndMorningHour: 6 readonly property int dndEveningHour: 20 @@ -263,6 +269,7 @@ PlasmaExtras.Representation { anchors.fill: parent anchors.bottomMargin: 2 anchors.rightMargin: -2 + anchors.leftMargin: -2 background: null focus: true clip: true @@ -370,7 +377,7 @@ PlasmaExtras.Representation { delegate: DraggableDelegate { id: delegate - width: ListView.view.width + width: fixDpi(ListView.view.width) opacity: 0 required property int index @@ -643,8 +650,7 @@ PlasmaExtras.Representation { Loader { anchors.centerIn: parent - width: parent.width - (Kirigami.Units.gridUnit * 4) - + width: fixDpi(parent.width - Kirigami.Units.gridUnit * 4); active: list.count === 0 visible: active asynchronous: true @@ -657,6 +663,7 @@ PlasmaExtras.Representation { PlasmaExtras.PlaceholderMessage { anchors.centerIn: parent + anchors.alignWhenCentered: Screen.devicePixelRatio == 1.0 width: parent.width iconName: "checkmark" @@ -672,6 +679,7 @@ PlasmaExtras.Representation { readonly property NotificationManager.ServerInfo currentOwner: NotificationManager.Server.currentOwner anchors.centerIn: parent + anchors.alignWhenCentered: Screen.devicePixelRatio == 1.0 width: parent.width iconName: "notifications-disabled" From 6094d287ed82f05272817c25e2bda9bf461e6040 Mon Sep 17 00:00:00 2001 From: wackyideas Date: Tue, 3 Feb 2026 22:09:06 +0100 Subject: [PATCH 10/14] desktopcontainment: mitigate font rendering issues on HiDPI screens --- .../contents/ui/FolderItemDelegate.qml | 78 +++++++++++-------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderItemDelegate.qml b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderItemDelegate.qml index 1ce2fff0..0a459443 100644 --- a/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderItemDelegate.qml +++ b/plasma/plasmoids/io.gitgud.wackyideas.desktopcontainment/contents/ui/FolderItemDelegate.qml @@ -205,17 +205,7 @@ Item { active: impl.iconAndLabelsShouldlookSelected || model.selected asynchronous: true - width: { - if (root.useListViewMode) { - if (main.GridView.view.overflowing) { - return parent.width// - Kirigami.Units.smallSpacing; - } else { - return parent.width; - } - } - - return parent.width// - (Kirigami.Units.smallSpacing * 2); - } + width: parent.width height: root.useListViewMode ? parent.height @@ -322,7 +312,19 @@ Item { renderType: Text.NativeRendering font.hintingPreference: Font.PreferFullHinting z: 2 // So it's always above the highlight effect + font.kerning: Screen.devicePixelRatio == 1.0 + Timer { + id: hidpi_hack + interval: 50 + onTriggered: { + front.anchors.rightMargin += 1; + front.anchors.rightMargin -= 1; + behind.anchors.rightMargin += 1; + behind.anchors.rightMargin -= 1; + + } + } // Hacks to improve font rendering to increase contrast and text brightness // This is done to get darker subpixel rendering, closer to ClearType PlasmaComponents.Label { @@ -334,29 +336,14 @@ Item { color: model.selected && Plasmoid.configuration.selectionStyle ? "black" : "#F9000000" renderType: Text.NativeRendering font.hintingPreference: Font.PreferFullHinting + font.kerning: Screen.devicePixelRatio == 1.0 text: parent.text elide: Text.ElideRight maximumLineCount: parent.maximumLineCount wrapMode: (maximumLineCount === 1) ? Text.NoWrap : Text.Wrap horizontalAlignment: Text.AlignHCenter visible: Plasmoid.configuration.textShadows - } - /*PlasmaComponents.Label { // One is enough - id: behind_right - z: -1 - anchors.fill: parent - anchors.rightMargin: -1 - anchors.leftMargin: 1 - color: "#d9000000" - renderType: Text.NativeRendering - font.hintingPreference: Font.PreferFullHinting - text: parent.text - elide: Text.ElideRight - maximumLineCount: parent.maximumLineCount - wrapMode: (maximumLineCount === 1) ? Text.NoWrap : Text.Wrap - horizontalAlignment: Text.AlignHCenter - }*/ PlasmaComponents.Label { id: front z: -2 @@ -365,6 +352,7 @@ Item { color: model.selected && Plasmoid.configuration.selectionStyle ? "black" : "#ffffffff" renderType: Text.NativeRendering font.hintingPreference: Font.PreferFullHinting + font.kerning: Screen.devicePixelRatio == 1.0 text: parent.text elide: Text.ElideRight maximumLineCount: parent.maximumLineCount @@ -377,17 +365,42 @@ Item { State { // icon view when: !root.useListViewMode + PropertyChanges { + target: label + anchors.topMargin: Kirigami.Units.smallSpacing + // Ffs + width: Math.floor((parent.width - Kirigami.Units.smallSpacing + (Screen.devicePixelRatio != 1.0) * 2 * Screen.devicePixelRatio) * Screen.devicePixelRatio) / Screen.devicePixelRatio + maximumLineCount: Plasmoid.configuration.textLines + horizontalAlignment: Text.AlignHCenter + } AnchorChanges { target: label anchors.top: icon.bottom anchors.horizontalCenter: parent.horizontalCenter } + AnchorChanges { + target: behind + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + } + AnchorChanges { + target: front + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + } PropertyChanges { - target: label - anchors.topMargin: Kirigami.Units.smallSpacing - width: parent.width - Kirigami.Units.smallSpacing - maximumLineCount: Plasmoid.configuration.textLines - horizontalAlignment: Text.AlignHCenter + target: behind + anchors.rightMargin: 1 + anchors.leftMargin: -1 + } + StateChangeScript { + script: { + hidpi_hack.start(); + } } }, State { // list view @@ -576,7 +589,6 @@ Item { toolTip.hideImmediately(); } } - } states: [ From 1c5e228e0f7137e008bed9a98d922212d69c3ed7 Mon Sep 17 00:00:00 2001 From: wackyideas Date: Tue, 3 Feb 2026 22:36:32 +0100 Subject: [PATCH 11/14] digitalclocklite: improve font rendering for >=200% scaling --- .../contents/ui/DigitalClock.qml | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/plasma/plasmoids/io.gitgud.wackyideas.digitalclocklite/contents/ui/DigitalClock.qml b/plasma/plasmoids/io.gitgud.wackyideas.digitalclocklite/contents/ui/DigitalClock.qml index 33ef2967..cfbca229 100755 --- a/plasma/plasmoids/io.gitgud.wackyideas.digitalclocklite/contents/ui/DigitalClock.qml +++ b/plasma/plasmoids/io.gitgud.wackyideas.digitalclocklite/contents/ui/DigitalClock.qml @@ -559,11 +559,15 @@ Item { family: Plasmoid.configuration.fontFamily || Kirigami.Theme.defaultFont.family weight: Plasmoid.configuration.boldText ? Font.Bold : Kirigami.Theme.defaultFont.weight italic: Plasmoid.configuration.italicText - pointSize: Plasmoid.configuration.fontSize || Kirigami.Theme.defaultFont.pointSize + pointSize: (Plasmoid.configuration.fontSize || Kirigami.Theme.defaultFont.pointSize) hintingPreference: Font.PreferFullHinting } minimumPixelSize: 1 - style: Screen.devicePixelRatio == 1.0 ? Text.Outline : Text.Raised + style: { + if(Screen.devicePixelRatio == 1.0) return Text.Outline; + if(Screen.devicePixelRatio >= 2.0) return Text.Normal; + return Text.Raised; + } styleColor: "transparent" text: { // get the time for the given timezone from the dataengine @@ -606,8 +610,12 @@ Item { font.hintingPreference: Font.PreferFullHinting minimumPixelSize: 1 - style: Screen.devicePixelRatio == 1.0 ? Text.Outline : Text.Raised styleColor: "transparent" + style: { + if(Screen.devicePixelRatio == 1.0) return Text.Outline; + if(Screen.devicePixelRatio >= 2.0) return Text.Normal; + return Text.Raised; + } visible: false horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter @@ -625,7 +633,11 @@ Item { font.pixelSize: timeLabel.font.pixelSize font.hintingPreference: Font.PreferFullHinting minimumPixelSize: 1 - style: Screen.devicePixelRatio == 1.0 ? Text.Outline : Text.Raised + style: { + if(Screen.devicePixelRatio == 1.0) return Text.Outline; + if(Screen.devicePixelRatio >= 2.0) return Text.Normal; + return Text.Raised; + } styleColor: "transparent" horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter From 8bea94f7948412bdbdf9c83ecb117283caa21d86 Mon Sep 17 00:00:00 2001 From: wackyideas Date: Wed, 4 Feb 2026 12:14:39 +0100 Subject: [PATCH 12/14] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e38e5739..f6b482c3 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Huge thanks to everyone who helped out along the way by contributing, testing, p - [AngelBruni](https://github.com/angelbruni) for contributing several SVG textures, most notably the clock in DigitalClockLite Seven - [ricewind012](https://github.com/ricewind012/) for .bashrc Microsoft Windows header - [furkrn](https://gitgud.io/furkrn) for creating and maintaining the [Plymouth theme](https://github.com/furkrn/PlymouthVista) +- [IcyGuidance](https://gitgud.io/IcyGuidance) for designing the notification badges in SevenTasks ### Special Thanks From 5d3fc5e2f14b8b6eb5ae81e45439c83c45a1789c Mon Sep 17 00:00:00 2001 From: beryesa Date: Sat, 7 Feb 2026 19:40:54 +0100 Subject: [PATCH 13/14] chore: add extra dependencies for Fedora --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index de3be08b..90ce3d8b 100755 --- a/INSTALL.md +++ b/INSTALL.md @@ -36,7 +36,7 @@ KSysGuard has been officially deprecated by KDE, however an unofficial [port](ht Required Packages: ```bash -dnf install plasma-workspace-devel unzip kvantum qt6-qtmultimedia-devel qt6-qt5compat-devel libplasma-devel qt6-qtbase-devel qt6-qtwayland-devel plasma-activities-devel kf6-kpackage-devel kf6-kglobalaccel-devel qt6-qtsvg-devel wayland-devel plasma-wayland-protocols kf6-ksvg-devel kf6-kcrash-devel kf6-kguiaddons-devel kf6-kcmutils-devel kf6-kio-devel kdecoration-devel kf6-ki18n-devel kf6-knotifications-devel kf6-kirigami-devel kf6-kiconthemes-devel cmake gmp-ecm-devel kf5-plasma-devel libepoxy-devel kwin-devel kf6-karchive kf6-karchive-devel plasma-wayland-protocols-devel qt6-qtbase-private-devel qt6-qtbase-devel kf6-knewstuff-devel kf6-knotifyconfig-devel kf6-attica-devel kf6-krunner-devel kf6-kdbusaddons-devel kf6-sonnet-devel plasma5support-devel plasma-activities-stats-devel polkit-qt6-1-devel qt-devel libdrm-devel kf6-kitemmodels-devel kf6-kstatusnotifieritem-devel +dnf install plasma-workspace-devel unzip kvantum qt6-qtmultimedia-devel qt6-qt5compat-devel libplasma-devel qt6-qtbase-devel qt6-qtwayland-devel plasma-activities-devel kf6-kpackage-devel kf6-kglobalaccel-devel qt6-qtsvg-devel wayland-devel plasma-wayland-protocols kf6-ksvg-devel kf6-kcrash-devel kf6-kguiaddons-devel kf6-kcmutils-devel kf6-kio-devel kdecoration-devel kf6-ki18n-devel kf6-knotifications-devel kf6-kirigami-devel kf6-kiconthemes-devel cmake gmp-ecm-devel kf5-plasma-devel libepoxy-devel kwin-devel kf6-karchive kf6-karchive-devel plasma-wayland-protocols-devel qt6-qtbase-private-devel qt6-qtbase-devel kf6-knewstuff-devel kf6-knotifyconfig-devel kf6-attica-devel kf6-krunner-devel kf6-kdbusaddons-devel kf6-sonnet-devel plasma5support-devel plasma-activities-stats-devel polkit-qt6-1-devel qt-devel libdrm-devel kf6-kitemmodels-devel kf6-kstatusnotifieritem-devel kf6-frameworkintegration-devel ``` On Fedora, additional dependencies for X11 include: From 4ec86208045efb370a43259865d984cb2b0be8bb Mon Sep 17 00:00:00 2001 From: beryesa Date: Sat, 7 Feb 2026 19:26:18 +0100 Subject: [PATCH 14/14] fix: correct sanity check on Fedora --- uninstall.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index 616896ea..caaf3b92 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -1,17 +1,24 @@ #!/bin/bash CUR_DIR=$(pwd) +QDBUS_BIN="qdbus6" # Sanity check to see if the proper tools are installed. if [[ -z "$(command -v kpackagetool6)" ]]; then echo "kpackagetool6 not found. Stopping." exit fi -if [[ -z "$(command -v qdbus6)" ]]; then - echo "qdbus6 not found. Stopping." +if [[ -n "$(command -v qdbus6)" ]]; then # Arch + QDBUS_BIN=$(command -v qdbus6) +elif [[ -n "$(command -v qdbus-qt6)" ]]; then # Fedora + QDBUS_BIN=$(command -v qdbus-qt6) +else + echo "qdbus6 not found." + echo "qdbus-qt6 not found." + echo "Stopping." exit fi -PLASMASHELL=$(qdbus6 org.kde.plasmashell /PlasmaShell shell) +PLASMASHELL=$($QDBUS_BIN org.kde.plasmashell /PlasmaShell shell) if [ $PLASMASHELL == "io.gitgud.wackyideas.desktop" ]; then echo -e "You shouldn't run the uninstall script from AeroThemePlasma itself." @@ -254,4 +261,3 @@ echo "Done." echo -e "Uninstallation complete." echo -e "In order to uninstall the libplasma and polkit agent modifications, simply reinstall those packages using your distro's package manager." -