I created this script at ~/.config/i3/scripts/qt6ct.sh
to set QT_QPA_PLATFORMTHEME
depending on whether I’m using Plasma or I3wm:
#!/bin/bash
CURRENT_DESKTOP=$(echo "$XDG_CURRENT_DESKTOP")
if [ "$CURRENT_DESKTOP" = "i3" ]; then
export QT_QPA_PLATFORMTHEME="qt5ct"
elif [ "$CURRENT_DESKTOP" = "KDE" ]; then
# Si estás usando Plasma (KDE), comentar la línea que exporta la variable
unset QT_QPA_PLATFORMTHEME
else
echo "Gestor de ventanas no es i3 ni kwin: $CURRENT_DESKTOP"
fi
echo $CURRENT_DESKTOP
echo $QT_QPA_PLATFORMTHEME
I created an autostart program and added this to my i3 config file
exec ~/.config/i3/scripts/qt6ct.sh
exec source ~/.config/i3/scripts/qt6ct.sh
I don’t know what’s wrong with it, but if I run it on a terminal, I get this (screenshot):
➤ ~/.config/i3/scripts/qt6ct.sh
i3
qt5ct
➤ echo "$QT_QPA_PLATFORMTHEME"
➤
So this script doesn’t really export anything at all.
I have searched on every file that I thought could be exporting it as a null value (~/.bashrc
, ~/.profile
, ~/.bash_profile
, ~/.xinitrc
, ~/.Xresources
, /etc/environment
, /root/.profile
, /root/.bashrc
), but everything looks fine (no QT_QPA_PLATFORMTHEME
anywhere, or is commented).
Solution
The only thing we’ll need in.xprofile is sourcing the script:
#!/bin/bash
CURRENT_DESKTOP=$(echo "$XDG_CURRENT_DESKTOP")
if [[ "$CURRENT_DESKTOP" = "i3" ]]; then
export QT_QPA_PLATFORMTHEME="qt5ct"
export QT_SCREEN_SCALE_FACTORS=1.5 # 1.5
export QT_AUTO_SCREEN_SCALE_FACTOR=0
elif [[ "$CURRENT_DESKTOP" = "KDE" ]]; then
unset QT_QPA_PLATFORMTHEME
export QT_AUTO_SCREEN_SCALE_FACTOR=1
else
echo "Gestor de ventanas no es i3 ni kwin: $CURRENT_DESKTOP"
fi
echo $CURRENT_DESKTOP
echo $QT_QPA_PLATFORMTHEME
echo $QT_SCREEN_SCALE_FACTORS
echo $QT_AUTO_SCREEN_SCALE_FACTOR
LOL you’re right! Yet, I am still getting no better result when changing it:
➤ ~/.config/i3/scripts/qt6ct.sh i3 qt5ct ➤ echo "$QT_QPA_PLATFORMTHEME" ➤ ~/.config/i3/scripts/qt6ct.sh i3 qt5ct ➤ source ~/.config/i3/scripts/qt6ct.sh i3 qt5ct ➤ echo "$QT_QPA_PLATFORMTHEME" qt5ct
Ok, here are very interesting things:
source ~/.config/i3/scripts/qt6ct.sh
at.profile
, and logout. When I logged in, nothing has changed. I don’t know why, since when I manually run it, it apparently changes the value ofQT_QPA_PLATFORMTHEME
.qt5ct
or runrofi --show -drun
and then select the qt5ct app, then it works just fine. The same happens with dolphin: if I run it from rofi, then it looks awful, but if I run it from the terminal, it looks great. BUT if I close the terminal and open it again, everything goes back to normal (meaning: awful).After including
source ~/.config/i3/scripts/qt6ct.sh
to/etc/environment
and rebooting to see if anything changed: nope. No changes, the problem persists.OK, I have neither qt apps, nor other desktops, so I’m kind of shooting in the dark. I seem to remember reading that
.profile
is sometimes not looked at and it’s better to put in.bash_profile
or even paste it into your.bashrc
and see you still have the issue.Ok, something happened: adding it to
.bash_profile
did changeQT_QPA_PLATFORMTHEME
on i3 (whoohooo \o/), BUT it also did on plasma (ouch 😢), so the script for some reason is not returning what is supposed to.Paste what you’ve got so far and I’ll look at it some more.
I think I figured it out, I created a
.xprofile
file and moved all the env stuff there:➤ cat .xprofile source ~/.config/i3/scripts/qt6ct.sh export QT_SCREEN_SCALE_FACTORS=1.45 # 1.5 export QT_AUTO_SCREEN_SCALE_FACTOR=0 # 0
Now dolphin uses breeze themes, thunar uses its gtk version and also found out about how to fix the zoom issue (it was supposed to be another different battle but seems like they have more in common than what I thought!)
Thank you so much for helping me all the way here!! :)
Correction: I didn’t entirely fix it!
There’s a couple of stuff to be fixed: screenshot
Which means that in Plasma
QT_QPA_PLATFORMTHEME
is still read asqt5ct
:(Correction 2: I FIXED IT!!
remove everything from .xprofile except sourcing the script:
#!/bin/bash CURRENT_DESKTOP=$(echo "$XDG_CURRENT_DESKTOP") if [[ "$CURRENT_DESKTOP" = "i3" ]]; then export QT_QPA_PLATFORMTHEME="qt5ct" export QT_SCREEN_SCALE_FACTORS=1.5 # 1.5 export QT_AUTO_SCREEN_SCALE_FACTOR=0 elif [[ "$CURRENT_DESKTOP" = "KDE" ]]; then unset QT_QPA_PLATFORMTHEME export QT_AUTO_SCREEN_SCALE_FACTOR=1 else echo "Gestor de ventanas no es i3 ni kwin: $CURRENT_DESKTOP" fi echo $CURRENT_DESKTOP echo $QT_QPA_PLATFORMTHEME echo $QT_AUTO_SCREEN_SCALE_FACTOR
Haha, that’s great! That post was like a rollercoaster.