[meta] Add option to FORCE X11 as Graphics Backend (#2820)

* save the option on a external file because settings
  are loaded AFTER Qt window is created and then
  the graphics backend is already applied

Signed-off-by: Caio Oliveira <caiooliveirafarias0@gmail.com>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2820
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Co-committed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
This commit is contained in:
Caio Oliveira 2025-10-29 13:16:57 +01:00 committed by crueter
parent e4b0c03a22
commit 2f591d33d3
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
7 changed files with 119 additions and 0 deletions

View file

@ -30,6 +30,10 @@ add_library(qt_common STATIC
util/fs.h util/fs.cpp
)
if (UNIX)
target_sources(qt_common PRIVATE gui_settings.cpp gui_settings.h)
endif()
create_target_directory_groups(qt_common)
if (USE_DISCORD_PRESENCE)

View file

@ -424,6 +424,10 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QObject* parent)
// Linux
INSERT(Settings, enable_gamemode, tr("Enable Gamemode"), QString());
#ifdef __unix__
INSERT(Settings, gui_force_x11, tr("Force X11 as Graphics Backend"), QString());
INSERT(Settings, gui_hide_backend_warning, QString(), QString());
#endif
// Ui Debugging

View file

@ -0,0 +1,25 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "gui_settings.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
namespace FS = Common::FS;
namespace GraphicsBackend {
QString GuiConfigPath() {
return QString::fromStdString(FS::PathToUTF8String(FS::GetEdenPath(FS::EdenPath::ConfigDir) / "gui_config.ini"));
}
void SetForceX11(bool state) {
(void)FS::CreateParentDir(GuiConfigPath().toStdString());
QSettings(GuiConfigPath(), QSettings::IniFormat).setValue("gui_force_x11", state);
}
bool GetForceX11() {
return QSettings(GuiConfigPath(), QSettings::IniFormat).value("gui_force_x11", false).toBool();
}
} // namespace GraphicsBackend

View file

@ -0,0 +1,15 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <QSettings>
#include <QString>
namespace GraphicsBackend {
QString GuiConfigPath();
void SetForceX11(bool state);
bool GetForceX11();
} // namespace GraphicsBackend