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