34 Commits

Author SHA1 Message Date
b0a58be284 added qt6gtk2-tromjaro 2025-06-24 15:26:48 +00:00
4cac9f2107 add baack qt5gtk2 2025-04-09 13:39:54 +00:00
6fa33e8a2a Clean up
Replaced qt6gtk2-git with qt6gtk2. Removed qt5gtk2.
2025-04-09 12:53:17 +00:00
1a34c770c8 remove a deprecated dependency 2025-03-26 22:01:25 +00:00
36a979547b fix the highDPI issue 2024-06-03 13:46:03 +00:00
ef045c1265 Merge pull request 'Make sure that ~/.profile will be run at boot/login' () from rokosun-patch-1 into main
Reviewed-on: 
2024-06-03 13:44:17 +00:00
7d189e0c06 Make sure that ~/.profile will be run at boot/login
Fixes issues with highDPI.
Added better comments and fixed a small bug.
2024-06-03 10:18:08 +00:00
87e64585b0 Update PKGBUILD 2024-01-06 21:47:51 +00:00
e8d7c816d0 added yad as dependency 2024-01-05 10:39:32 +00:00
2ae3788d3c Update PKGBUILD 2023-11-24 20:57:59 +01:00
c0e90900c4 icons update 2023-11-23 01:20:45 +01:00
5f89952f3f Update PKGBUILD 2023-11-07 01:44:23 +01:00
02d11a58d5 repalce qqc2-desktop-style with qqc2-desktop-style5 2023-11-07 01:44:11 +01:00
f9f5c95a7b Update PKGBUILD 2023-11-07 01:37:06 +01:00
b39dfffa5e revert 2a53d23139
revert delete the qqc2-desktop-style dependency
2023-11-06 16:36:55 +01:00
2a53d23139 delete the qqc2-desktop-style dependency 2023-11-06 16:28:53 +01:00
f989a2e1be revert 7c457fd1f7
revert removed the conflicts
2023-11-06 16:28:25 +01:00
7c457fd1f7 removed the conflicts 2023-11-06 14:41:24 +01:00
2a412d38c2 Update PKGBUILD 2023-10-27 15:19:07 +02:00
fb1c550768 Merge pull request 'Don't set the XFWM theme twice' () from rokosun-patch-1 into main
Reviewed-on: 
2023-10-27 15:18:39 +02:00
0600a8f119 Don't set the XFWM theme twice
Now the script won't set the XFWM theme twice on hiDPI systems every time the user changes their theme.
Also replaced read only variables inside loops with mutable ones.
2023-10-25 12:52:28 +02:00
b741df884e removed 'libadwaita-without-adwaita-git' 2023-10-16 01:30:18 +02:00
3195288734 Update PKGBUILD 2023-10-15 23:44:49 +02:00
de69301c82 Merge pull request 'Create symlink instead of copying directory' () from rokosun-patch-1 into main
Reviewed-on: 
2023-10-15 23:44:19 +02:00
a6dfcff64f Create symlink instead of copying directory 2023-10-15 10:48:52 +02:00
dd6743836e added libadwaita-without-adwaita-git conflict 2023-10-15 00:34:08 +02:00
573d116696 added conflicts 2023-10-15 00:27:26 +02:00
e3da289b27 switching to qt6gtk2 2023-10-15 00:26:55 +02:00
5c9e44bbcb typo 2023-10-15 00:17:50 +02:00
88d7f94095 replaced qt5-styleplugins with qt5gkt2 2023-10-15 00:09:28 +02:00
7e57c04518 Merge pull request 'Sync gtk-4.0 directory to fix theming' () from rokosun-patch-1 into main
Reviewed-on: 
2023-10-14 22:26:03 +02:00
b2a3bb83b4 Sync gtk-4.0 directory to fix theming
Also removed old code for flatpak_icons_dir which is not needed anymore.
2023-10-14 22:06:49 +02:00
07f4fc3c64 Merge pull request 'Don't change XFWM theme or mouse cursor size on reboot' () from rokosun-patch-1 into main
Reviewed-on: 
2023-10-13 23:58:53 +02:00
af5514884e Don't change XFWM theme or mouse cursor size on reboot
Also made the code easier to read by using descriptive functions and read-only variables. Removed some unnecessary comments that cluttered the code.
2023-10-12 16:55:05 +02:00
3 changed files with 155 additions and 85 deletions

@ -1,7 +1,7 @@
# Maintainer: TROM <contact@tromsite.com>
pkgname=tromjaro-fixes
pkgver=1.8
pkgrel=6
pkgver=3
pkgrel=2
pkgdesc="Various fixes for TROMjaro OS"
arch=(any)
url=""
@ -10,9 +10,10 @@ depends=('xfce4-appfinder'
'xdotool'
'rsync'
'inotify-tools'
'qt5-styleplugins'
'qt6gtk2-git'
'qqc2-desktop-style')
'qt6gtk2-tromjaro'
'qt5gtk2'
'yad')
conflicts=('qt5-styleplugins')
provides=('tromjaro-fixes')
backup=()
options=(!strip)

@ -1,24 +1,49 @@
#!/bin/bash
# shellcheck disable=SC2016
# This script will sync your XFCE theme & font to work systemwide and in
# a consistent manner accross different apps. It also improves
# the highDPI scaling to give you a better experience.
# Exit out if the same script is already running in the background
pidof -sq -o %PPID -x "$(basename "$0")" && exit
# Set the directory/file paths
flatpak_themes_dir="$HOME/.themes"
flatpak_icons_dir="$HOME/.icons"
profile="$HOME/.profile"
declare -r flatpak_themes_dir="$HOME/.themes"
declare -r config_dir="${XDG_CONFIG_HOME:-$HOME/.config}"
declare -r profile="$HOME/.profile"
# Create flatpak icons & themes directories if they don't exist
mkdir -p "$flatpak_themes_dir" "$flatpak_icons_dir" ||
{ echo "failed to make directories $flatpak_themes_dir & $flatpak_icons_dir"; exit 1; }
# Create directories if they don't exist
mkdir -p "$flatpak_themes_dir" "$config_dir" ||
{ echo "failed to make directories $flatpak_themes_dir & $config_dir"; exit 1; }
# Enable option for syncing the current theme with XFWM theme if not already enabled
[ "$(xfconf-query -c xsettings -p /Xfce/SyncThemes)" != 'true' ] && xfconf-query -c xsettings -p /Xfce/SyncThemes -n -t bool -s true
[ "$(xfconf-query -c xsettings -p /Xfce/SyncThemes)" != 'true' ] &&
xfconf-query -c xsettings -p /Xfce/SyncThemes -n -t bool -s true
# Make sure ~/.profile is sourced inside ~/.bash_profile and ~/.zprofile
source_profile() {
for file in "$HOME/.bash_profile" "$HOME/.zprofile"; do
# Continue looping if it is already sourced
grep -Exq '\s*(.*&& )?\. "?\$HOME"?/\.profile"?\s*' "$file" ||
grep -Exq "\s*(.*&& )?\. ~/\.profile\s*" "$file" && continue
# If not then source it
if grep -q '\S' "$file"; then
# shellcheck disable=SC2015
tail -n1 "$file" | grep -qx '\s*' &&
local -r begin='' || local -r begin='\n'
printf '%b[ -f "$HOME/.profile" ] && . "$HOME/.profile"\n' "$begin" >> "$file"
else
echo '[ -f "$HOME/.profile" ] && . "$HOME/.profile"' > "$file"
fi
done
}
source_profile
xdg_directory_lookup() {
# Go through each item in $XDG_DATA_DIRS and find the subdirectory $1
while read -r dir; do
subdir="${dir%/}/$1"
local subdir="${dir%/}/$1"
if [ -d "$subdir" ]; then
echo "$subdir"
break
@ -26,96 +51,131 @@ xdg_directory_lookup() {
done < <(printf '%s:%s\n' "$HOME/.local/share" "$XDG_DATA_DIRS" | tr ':' '\n')
}
theme_exists() {
local -r theme_dir=$(xdg_directory_lookup "themes/$1")
[ -d "$theme_dir" ]
}
# Function for setting variables in ~/.profile
profile_set_variable() {
# Return if the variable is already set to the correct value
grep -xq "\s*export\s\+$1=$2\s*" "$profile" && return
# If the variable is set to a different value then remove that line
grep -q "^\s*export\s\+$1=" "$profile" && sed -i "/^\s*export\s\+$1=/d" "$profile"
# Set the variable to the correct value under a comment mentioning this script
if grep -xq '\s*#\s*Values set by the fix-theming script\s*' "$profile"; then
sed -i "/^\s*#\s*Values set by the fix-theming script\s*$/a export $1=$2" "$profile"
elif grep -q '\s' "$profile"; then
tail -n1 "$profile" | grep -qx '\s*' && begin='' || begin='\n'
elif grep -q '\S' "$profile"; then
# shellcheck disable=SC2015
tail -n1 "$profile" | grep -qx '\s*' &&
local -r begin='' || local -r begin='\n'
printf '%b# Values set by the fix-theming script\nexport %s=%s\n' "$begin" "$1" "$2" >> "$profile"
else
printf '# Values set by the fix-theming script\nexport %s=%s\n' "$1" "$2" > "$profile"
fi
# Set variable logout_required to true
logout_required='true'
}
set_QT_scaling() {
for var in QT_SCALE_FACTOR QT_AUTO_SCREEN_SCALE_FACTOR QT_ENABLE_HIGHDPI_SCALING; do
profile_set_variable "$var" "$1"
done
}
set_cursor_size() {
xfconf-query -c xsettings -p /Gtk/CursorThemeSize -s "$1"
}
set_xfwm_theme() {
xfconf-query -c xfwm4 -p /general/theme -n -t string -s "$1"
}
# Use the highDPI variant of the XFWM theme
use_hdpi_theme_variant() {
# shellcheck disable=SC2015
[ -n "$1" ] && local -r xfwm_theme="$1" ||
local -r xfwm_theme=$(xfconf-query -c xfwm4 -p /general/theme)
for variant in xhdpi hdpi; do
# If this variant of the theme is already enabled then break out of the loop
[ "${xfwm_theme##*-}" = "$variant" ] && break
# Store the name for this variant of the theme in highDPI_theme variable
local highDPI_theme=$xfwm_theme-$variant
if theme_exists "$highDPI_theme"; then
set_xfwm_theme "$highDPI_theme"
[ -z "$1" ] &&
notify-send "XFWM theme changed to $highDPI_theme" "Changed to the highDPI variant of your chosen theme because you've enabled highDPI on your system"
break
fi
done
if ! theme_exists "$highDPI_theme"; then
[ -n "$1" ] && theme_exists "$1" && set_xfwm_theme "$1"
fi
}
# Use the normal variant of the XFWM theme
use_normal_theme_variant() {
local -r current_xfwm_theme=$(xfconf-query -c xfwm4 -p /general/theme)
for variant in xhdpi hdpi; do
# Continue looping if this (highDPI) variant of the theme is not enabled
[ "${current_xfwm_theme##*-}" != "$variant" ] && continue
# Store the name for the normal variant of this theme in normal_theme variable
local normal_theme=${current_xfwm_theme%-"$variant"}
if theme_exists "$normal_theme"; then
set_xfwm_theme "$normal_theme"
notify-send "XFWM theme changed to $normal_theme" "Changed to the normal variant of your chosen theme because you've disabled highDPI on your system"
break
fi
done
}
# Change XFWM theme, QT apps scaling, and mouse cursor size according to
# the user's current window scaling (highDPI setting)
hdpi_theme_fix() {
# Get the current window scaling factor (highDPI setting)
current_scaling=$(xfconf-query -c xsettings -p /Gdk/WindowScalingFactor)
# Get the current XFWM theme
current_xfwm_theme=$(xfconf-query -c xfwm4 -p /general/theme)
# Get the current mouse cursor size
cursor_size=$(xfconf-query -c xsettings -p /Gtk/CursorThemeSize)
local -r current_window_scaling=$(xfconf-query -c xsettings -p /Gdk/WindowScalingFactor)
local -r current_cursor_size=$(xfconf-query -c xsettings -p /Gtk/CursorThemeSize)
unset logout_required
if [ "$current_scaling" -eq '2' ]; then
# Increase mouse cursor size if it's equal to 25
if [ "$cursor_size" -eq 25 ]; then
xfconf-query -c xsettings -p /Gtk/CursorThemeSize -s '45'
if [ "$current_window_scaling" -eq '2' ]; then
# Increase scaling for QT apps
set_QT_scaling 2
# Use the highDPI variant of the XFWM theme
use_hdpi_theme_variant
if [ "$current_cursor_size" -eq 25 ]; then
set_cursor_size '45'
notify-send 'Mouse cursor size increased to 45' "Changed to a larger mouse cursor because you've enabled highDPI on your system"
fi
# Increase scaling for QT apps
for var in QT_SCALE_FACTOR QT_AUTO_SCREEN_SCALE_FACTOR QT_ENABLE_HIGHDPI_SCALING; do
profile_set_variable "$var" 2
done
for variant in xhdpi hdpi; do
# If this variant of the theme is already enabled then break out of the loop
[ "${current_xfwm_theme##*-}" = "$variant" ] && break
# Store the name for this variant of the theme in highDPI_theme variable
highDPI_theme=$current_xfwm_theme-$variant
# Find the directory where highDPI_theme is stored
highDPI_theme_dir=$(xdg_directory_lookup "themes/$highDPI_theme")
# If this directory exists then change to that theme for XFWM
if [ -d "$highDPI_theme_dir" ]; then
xfconf-query -c xfwm4 -p /general/theme -n -t string -s "$highDPI_theme"
[ "$1" != 'no_hdpi_notification' ] && notify-send "XFWM theme changed to $highDPI_theme" "Changed to the highDPI variant of your chosen theme because you've enabled highDPI on your system"
break
fi
done
else
# Decrease mouse cursor size if it's equal to 45
if [ "$cursor_size" -eq 45 ]; then
xfconf-query -c xsettings -p /Gtk/CursorThemeSize -s '25'
# Decrease scaling for QT apps
set_QT_scaling 1
# Use the normal variant of the XFWM theme
use_normal_theme_variant
if [ "$current_cursor_size" -eq 45 ]; then
set_cursor_size '25'
notify-send 'Mouse cursor size decreased to 25' "Changed to a smaller mouse cursor because you've disabled highDPI on your system"
fi
# Decrease scaling for QT apps
unset logout_required
for var in QT_SCALE_FACTOR QT_AUTO_SCREEN_SCALE_FACTOR QT_ENABLE_HIGHDPI_SCALING; do
profile_set_variable "$var" 1
done
for variant in xhdpi hdpi; do
# Continue looping if this (highDPI) variant of the theme is not enabled
[ "${current_xfwm_theme##*-}" != "$variant" ] && continue
# Store the name for the normal variant of this theme in normal_theme variable
normal_theme=${current_xfwm_theme%-"$variant"}
# Find the directory where normal_theme is stored
normal_theme_dir=$(xdg_directory_lookup "themes/$normal_theme")
# If this directory exists then change to that theme for XFWM
if [ -d "$normal_theme_dir" ]; then
xfconf-query -c xfwm4 -p /general/theme -n -t string -s "$normal_theme"
notify-send "XFWM theme changed to $normal_theme" "Changed to the normal variant of your chosen theme because you've disabled highDPI on your system"
break
fi
done
fi
# Show popup menu about logout if it's required
[ "$logout_required" = 'true' ] &&
[ "$1" != 'no_hdpi_notification' ] &&
yad --image "dialog-question" --title "Alert" --buttons-layout=center --text-align=center --button=yad-yes:0 --button=yad-no:1 --text 'Logout is required in order to apply the DPI preferences to the QT apps.\nWould you like to logout now?' &&
yad --image "dialog-question" --title "Alert" --buttons-layout=center --text-align=center --button=yad-yes:0 --button=yad-no:1 --text 'Logout is required in order to apply your DPI preferences to QT apps.\nWould you like to logout now?' &&
xfce4-session-logout --logout
}
sync_theme() {
# Get the current system theme
current_theme=$(xfconf-query -c xsettings -p /Net/ThemeName)
local -r current_theme=$(xfconf-query -c xsettings -p /Net/ThemeName)
# Get the current window scaling factor (highDPI setting)
local -r current_window_scaling=$(xfconf-query -c xsettings -p /Gdk/WindowScalingFactor)
# Apply the current theme with gsettings
gsettings set org.gnome.desktop.interface gtk-theme "$current_theme"
@ -123,34 +183,43 @@ sync_theme() {
# Apply the current theme for GTK and Libadwaita apps on flatpak
flatpak override --user --env=GTK_THEME="$current_theme"
# Apply the current theme for XFWM
xfconf-query -c xfwm4 -p /general/theme -n -t string -s "$current_theme"
# Apply the current theme for XFWM unless it's initial_sync on system reboot
if [ "$1" != 'initial_sync' ]; then
# Use the highDPI variant of the XFWM theme if the current_window_scaling factor is 2
if [ "$current_window_scaling" -eq '2' ]; then
use_hdpi_theme_variant "$current_theme"
else
set_xfwm_theme "$current_theme"
fi
fi
# Change XFWM theme and mouse cursor size according to the user's highDPI setting
hdpi_theme_fix 'no_hdpi_notification'
# Cleanup flatpak_themes_dir
rm -rf "${flatpak_themes_dir:?}"/*
# Cleanup flatpak_themes_dir and remove ~/.config/gtk-4.0
rm -rf "${flatpak_themes_dir:?}"/{*,.*} "$config_dir/gtk-4.0"
# Find the directory where the current theme is stored
current_theme_dir=$(xdg_directory_lookup "themes/$current_theme")
# Copy/sync current_theme_dir to flatpak_themes_dir
[ -d "$current_theme_dir" ] &&
local -r current_theme_dir=$(xdg_directory_lookup "themes/$current_theme")
if [ -d "$current_theme_dir" ]; then
# Copy/sync current_theme_dir to flatpak_themes_dir
rsync -av --delete --progress "$current_theme_dir" "$flatpak_themes_dir"
# Create symlink for gtk-4.0 directory
ln -s "$current_theme_dir/gtk-4.0" "$config_dir"
fi
}
sync_font() {
# Get the current system font
font=$(xfconf-query -c xsettings -p /Gtk/FontName)
# Apply the same font for the title of xfce windows
xfconf-query -c xfwm4 -p /general/title_font -n -t string -s "$font"
local -r current_font=$(xfconf-query -c xsettings -p /Gtk/FontName)
# Apply the same font for the title of XFCE windows
xfconf-query -c xfwm4 -p /general/title_font -n -t string -s "$current_font"
}
# Initial synchronization
sync_theme
sync_theme 'initial_sync'
sync_font
# Monitor when the user changes their system theme or icons or font in XFCE and sync them as needed
# Monitor when the user changes their system theme, font or
# DPI setting in XFCE and sync them as needed
while read -r line; do
case "$line" in
'set: /Net/ThemeName') sync_theme ;;

@ -1,5 +1,5 @@
# Sync the QT with GTK
export QT_QPA_PLATFORMTHEME="gtk2"
export QT_QPA_PLATFORMTHEME="qt6gtk2"
export QT_AUTO_SCREEN_SCALE_FACTOR=1
# Show color output in less