From e03eaad9abc4cd617fb22b12a49bd41260f610fc Mon Sep 17 00:00:00 2001 From: eSh Date: Fri, 16 Sep 2022 01:14:20 +0200 Subject: [PATCH] initial commit --- Makefile | 12 ++++ PKGBUILD | 31 +++++++++ README.md | 21 ++++++ alpm-hooks/chaotic-keyring-refresh.hook | 11 +++ alpm-hooks/reinstall-for-qt.hook | 11 +++ bin/periodic/fix-flatpaks-theming | 7 ++ bin/periodic/fix-theming | 39 +++++++++++ bin/periodic/fix-tweaked-desktop-files | 89 +++++++++++++++++++++++++ bin/standalone/app-finder | 2 + bin/standalone/fix-chaotic-keyring | 3 + bin/standalone/reinstall-for-qt | 3 + flatpak-overrides/global | 2 + 12 files changed, 231 insertions(+) create mode 100644 Makefile create mode 100644 PKGBUILD create mode 100644 README.md create mode 100644 alpm-hooks/chaotic-keyring-refresh.hook create mode 100644 alpm-hooks/reinstall-for-qt.hook create mode 100755 bin/periodic/fix-flatpaks-theming create mode 100755 bin/periodic/fix-theming create mode 100755 bin/periodic/fix-tweaked-desktop-files create mode 100755 bin/standalone/app-finder create mode 100755 bin/standalone/fix-chaotic-keyring create mode 100755 bin/standalone/reinstall-for-qt create mode 100644 flatpak-overrides/global diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9a3bf4a --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +# makefile for tromjaro fixes package +build: + makepkg + +install: + pamac-installer tromjaro-fixes-*.tar.xz + +remove: + pamac-installer --remove tromjaro-fixes + +clean: + $(RM) -rf src/ pkg/ *.tar.xz \ No newline at end of file diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..fa22def --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,31 @@ +# Maintainer: TROM +pkgname=tromjaro-fixes +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Various fixes for TROMjaro OS" +arch=(any) +url="" +license=(unknown) +depends=() +provides=('tromjaro-fixes') +backup=() +options=(!strip) + +prepare() { + cp -R ../bin ../flatpak-overrides ../alpm-hooks . +} + +package() { + # copy scripts + install -d ${pkgdir}/usr/bin + install -Dm755 ${srcdir}/bin/standalone/* ${pkgdir}/usr/bin + install -Dm755 ${srcdir}/bin/periodic/* ${pkgdir}/usr/bin + + # copy alpm hooks + install -d ${pkgdir}/usr/share/libalpm/hooks + install -Dm644 ${srcdir}/alpm-hooks/* ${pkgdir}/usr/share/libalpm/hooks + + # copy flatpak overrides + install -d ${pkgdir}/var/lib/flatpak/overrides + install -Dm644 ${srcdir}/flatpak-overrides/* ${pkgdir}/var/lib/flatpak/overrides +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..f963cd1 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# TROMjaro fixes package + +Various fixes for TROMjaro OS + +## Building the package + +Open Terminal and issue the command: + +`make` + +To install the package right after the building, use: + +`make install` + +To remove just installed package, use: + +`make remove` + +To cleanup the project, use: + +`make clean` diff --git a/alpm-hooks/chaotic-keyring-refresh.hook b/alpm-hooks/chaotic-keyring-refresh.hook new file mode 100644 index 0000000..d55dddc --- /dev/null +++ b/alpm-hooks/chaotic-keyring-refresh.hook @@ -0,0 +1,11 @@ +[Trigger] +Operation = Upgrade +Operation = Remove +Operation = Install +Type = Package +Target = * + +[Action] +Description = Refreshing the chaotic-aur keyring... +When = PreTransaction +Exec = /usr/bin/chaotic-keyring-refresh \ No newline at end of file diff --git a/alpm-hooks/reinstall-for-qt.hook b/alpm-hooks/reinstall-for-qt.hook new file mode 100644 index 0000000..7fb0f94 --- /dev/null +++ b/alpm-hooks/reinstall-for-qt.hook @@ -0,0 +1,11 @@ +[Trigger] +Operation = Upgrade +Type = Package +Target = qt5-base +Target = qt6-base + + +[Action] +Description = Reinstalling needed packages for theming QT applications... +When = PostTransaction +Exec = /usr/bin/reinstall-for-qt \ No newline at end of file diff --git a/bin/periodic/fix-flatpaks-theming b/bin/periodic/fix-flatpaks-theming new file mode 100755 index 0000000..c4ab141 --- /dev/null +++ b/bin/periodic/fix-flatpaks-theming @@ -0,0 +1,7 @@ +#!/bin/sh +while :; do + rm -r ~/.themes/* 2> /dev/null + rsync -av --progress /usr/share/themes/* ~/.themes/ --exclude Windowck + rsync -av --progress ~/.local/share/themes/* ~/.themes/ --exclude Windowck-dark + sleep 600 +done \ No newline at end of file diff --git a/bin/periodic/fix-theming b/bin/periodic/fix-theming new file mode 100755 index 0000000..bed9078 --- /dev/null +++ b/bin/periodic/fix-theming @@ -0,0 +1,39 @@ +#!/bin/sh +sync_theme() { + # Get the current system theme + theme=$(xfconf-query -c xsettings -p /Net/ThemeName) + # Find the best match for the xfwm4 theme that corresponds with the current system theme + xfwm4_theme=$(find /usr/share/themes/ /usr/local/share/themes/ "$HOME"/.themes/ "$HOME"/.local/share/themes/ -mindepth 2 -maxdepth 2 -type d -name xfwm4 -printf '%h\n' 2>/dev/null | grep -o "/${theme}[^/]*$" | sort | head -n1) + # If a match is not found then use the Default theme + [ -z "$xfwm4_theme" ] && xfwm4_theme='Default' + # Apply the xfwm4 theme + xfconf-query -c xfwm4 -p /general/theme -n -t string -s "${xfwm4_theme#/}" + # Apply the current theme with gsettings + gsettings set org.gnome.desktop.interface gtk-theme "$theme" +} + +sync_icon_theme() { + # Get the current icon theme + icon_theme=$(xfconf-query -c xsettings -p /Net/IconThemeName) + # Apply the same theme in qt5ct and qt6ct configuration + sed -i "s/^icon_theme=.*$/icon_theme=$icon_theme/" "$HOME"/.config/qt5ct/qt5ct.conf + sed -i "s/^icon_theme=.*$/icon_theme=$icon_theme/" "$HOME"/.config/qt6ct/qt6ct.conf +} + +while :; do + # Get the current system theme + theme_new=$(xfconf-query -c xsettings -p /Net/ThemeName) + # Get the current icon theme + icon_theme_new=$(xfconf-query -c xsettings -p /Net/IconThemeName) + + # Run sync_theme if the new system theme doesn't match the previous one + [ "$theme_new" != "$theme_prev" ] && sync_theme + # Run sync_icon_theme if the new icon theme doesn't match the previous one + [ "$icon_theme_new" != "$icon_theme_prev" ] && sync_icon_theme + + # The new values become the previous values + theme_prev=$theme_new + icon_theme_prev=$icon_theme_new + + sleep 3 +done diff --git a/bin/periodic/fix-tweaked-desktop-files b/bin/periodic/fix-tweaked-desktop-files new file mode 100755 index 0000000..f9bc687 --- /dev/null +++ b/bin/periodic/fix-tweaked-desktop-files @@ -0,0 +1,89 @@ +#!/bin/bash +pidof -sq -o %PPID -x "$(basename "$0")" && exit +data="$HOME"/.local/share/applications/tweaked-desktop-files +data2="$HOME"/.local/share/applications/bakkedup-desktop-files + +# Directories where desktop files are stored +user="$HOME"/.local/share/applications +flatpak_local="$HOME"/.local/share/flatpak/exports/share/applications +flatpak_global=/var/lib/flatpak/exports/share/applications +pacman_local=/usr/local/share/applications +pacman_global=/usr/share/applications +snap=/var/lib/snapd/desktop/applications + +detectfiles() { + for file in "$user"/*.desktop; do + name=$(basename "$file") || continue + [ -d "$file" ] || grep -xq "\(flatpak-local\|flatpak-global\|pacman-local\|pacman-global\|snap\)/$name" "$data" && continue + if [ -f "$flatpak_local/$name" ]; then + echo "flatpak-local/$name" >> "$data" + elif [ -f "$flatpak_global/$name" ]; then + echo "flatpak-global/$name" >> "$data" + elif [ -f "$pacman_local/$name" ]; then + echo "pacman-local/$name" >> "$data" + elif [ -f "$pacman_global/$name" ]; then + echo "pacman-global/$name" >> "$data" + elif [ -f "$snap/$name" ]; then + echo "snap/$name" >> "$data" + fi + done +} + +fixfiles() { + lastmod=$(stat -c "%Y" "$data") + tmp="$(mktemp)" + trap 'rm $tmp' EXIT + [ -f "$data" ] && cp "$data" "$tmp" && copied='true' + lineno=0 + [ "$copied" = 'true' ] && while IFS= read -r line; do + ((lineno++)) + name=${line#*/} + file="$user/$name" + # shellcheck disable=2015 # To disable shellcheck error here, line below is intended to work this way + echo "$line" | grep -xq '\(flatpak-local\|flatpak-global\|pacman-local\|pacman-global\|snap\)/.\+' && [ -f "$file" ] || { sed -i "${lineno}d" "$tmp" && ((lineno--)) ; continue; } + [ -f "$flatpak_local/$name" ] || + [ -f "$flatpak_global/$name" ] || + [ -f "$pacman_local/$name" ] || + [ -f "$pacman_global/$name" ] || + [ -f "$snap/$name" ] || + { mv "$file" "$file.bak" && echo "$line" >> "$data2"; } + done < "$data" + + [ "$copied" = 'true' ] && [ "$(stat -c '%Y' "$data")" = "$lastmod" ] && sort "$tmp" | uniq > "$data" + + [ -n "$(sort "$data2" | uniq -d)" ] && cp "$data2" "$tmp" && sort "$tmp" | uniq > "$data2" + + for bakfile in "$user"/*.desktop.bak; do + origfile="${bakfile%.bak}" + [ -f "$origfile" ] && continue + name=$(basename "$origfile") || continue + [ -f "$flatpak_local/$name" ] || + [ -f "$flatpak_global/$name" ] || + [ -f "$pacman_local/$name" ] || + [ -f "$pacman_global/$name" ] || + [ -f "$snap/$name" ] && + mv "$bakfile" "$origfile" + done +} + +while :; do + user_new=$(ls -ad "$user"/*.desktop 2>/dev/null) + flatpak_local_new=$(ls -ad "$flatpak_local"/*.desktop 2>/dev/null) + flatpak_global_new=$(ls -ad "$flatpak_global"/*.desktop 2>/dev/null) + pacman_local_new=$(ls -ad "$pacman_local"/*.desktop 2>/dev/null) + pacman_global_new=$(ls -ad "$pacman_global"/*.desktop 2>/dev/null) + snap_new=$(ls -ad "$snap"/*.desktop 2>/dev/null) + [ "$user_new" != "$user_old" ] && detectfiles + [ "$flatpak_local_new" != "$flatpak_local_old" ] || + [ "$flatpak_global_new" != "$flatpak_global_old" ] || + [ "$pacman_local_new" != "$pacman_local_old" ] || + [ "$pacman_global_new" != "$pacman_global_old" ] || + [ "$snap_new" != "$snap_old" ] && fixfiles + user_old=$user_new + flatpak_local_old=$flatpak_local_new + flatpak_global_old=$flatpak_global_new + pacman_local_old=$pacman_local_new + pacman_global_old=$pacman_global_new + snap_old=$snap_new + sleep 5 +done \ No newline at end of file diff --git a/bin/standalone/app-finder b/bin/standalone/app-finder new file mode 100755 index 0000000..a3b18a8 --- /dev/null +++ b/bin/standalone/app-finder @@ -0,0 +1,2 @@ +#!/bin/bash +xdotool search --onlyvisible --class xfce4-appfinder windowkill || setsid -f xfce4-appfinder diff --git a/bin/standalone/fix-chaotic-keyring b/bin/standalone/fix-chaotic-keyring new file mode 100755 index 0000000..75d3196 --- /dev/null +++ b/bin/standalone/fix-chaotic-keyring @@ -0,0 +1,3 @@ +#!/bin/bash +sudo pacman-key --populate chaotic & +rm ~/.local/bin/fix-chaotic-keyring diff --git a/bin/standalone/reinstall-for-qt b/bin/standalone/reinstall-for-qt new file mode 100755 index 0000000..e0f1abf --- /dev/null +++ b/bin/standalone/reinstall-for-qt @@ -0,0 +1,3 @@ +#!/bin/bash +rm /var/lib/pacman/db.lck +pacman --noconfirm -S qt5-styleplugins qt6gtk2 diff --git a/flatpak-overrides/global b/flatpak-overrides/global new file mode 100644 index 0000000..4e047e9 --- /dev/null +++ b/flatpak-overrides/global @@ -0,0 +1,2 @@ +[Context] +filesystems=~/.themes; \ No newline at end of file