diff --git a/src/citron/main.cpp b/src/citron/main.cpp index f1e7b39d6..7ce45a2a8 100644 --- a/src/citron/main.cpp +++ b/src/citron/main.cpp @@ -6215,13 +6215,23 @@ int main(int argc, char* argv[]) { QCoreApplication::setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity); - const bool is_gamescope = qgetenv("XDG_CURRENT_DESKTOP") == "gamescope"; + // Gamescope/Steam Deck detection + const bool is_gamescope = qgetenv("XDG_CURRENT_DESKTOP") == "gamescope" || + !qgetenv("GAMESCOPE_WIDTH").isEmpty() || + !qgetenv("STEAM_DECK").isEmpty(); + if (is_gamescope) { + // Force the environment to ignore the Deck's high-density screen + qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "0"); qputenv("QT_ENABLE_HIGHDPI_SCALING", "0"); qputenv("QT_SCALE_FACTOR", "1"); - qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "0"); qputenv("QT_FONT_DPI", "96"); + // Force Qt to use a 1:1 pixel ratio + // These MUST be set before the QApplication app(...) line + QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); + QCoreApplication::setAttribute(Qt::AA_Use96Dpi); + QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuBar); QCoreApplication::setAttribute(Qt::AA_DontUseNativeDialogs); qputenv("QT_WAYLAND_SHELL_INTEGRATION", "xdg-shell");