From 7263e3aeb1c6a5f14a439101a49dd082c46c2a4c Mon Sep 17 00:00:00 2001 From: xbzk Date: Sat, 1 Aug 2026 12:36:05 -0300 Subject: [PATCH] [frontend] Expose nxlink server mode --- .../features/settings/model/IntSetting.kt | 1 + .../settings/model/view/SettingsItem.kt | 9 +++++ .../settings/ui/SettingsFragmentPresenter.kt | 1 + .../app/src/main/res/values/arrays.xml | 10 +++++ .../app/src/main/res/values/strings.xml | 2 + src/qt_common/config/shared_translation.cpp | 2 + src/yuzu/configuration/configure_debug.cpp | 7 ++++ src/yuzu/configuration/configure_debug.ui | 39 ++++++++++++++----- 8 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt index 117336ab64..683d296516 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt @@ -50,6 +50,7 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { GPU_UNSWIZZLE_TEXTURE_SIZE("gpu_unswizzle_texture_size"), GPU_UNSWIZZLE_STREAM_SIZE("gpu_unswizzle_stream_size"), GPU_UNSWIZZLE_CHUNK_SIZE("gpu_unswizzle_chunk_size"), + HOMEBREW_NXLINK_SERVER_MODE("homebrew_nxlink_server_mode"), BAT_TEMPERATURE_UNIT("bat_temperature_unit"), CABINET_APPLET("cabinet_applet_mode"), CONTROLLER_APPLET("controller_applet_mode"), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 7c6063988f..0fc35ef15c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -132,6 +132,15 @@ abstract class SettingsItem( descriptionId = R.string.program_args_description ) ) + put( + SingleChoiceSetting( + IntSetting.HOMEBREW_NXLINK_SERVER_MODE, + titleId = R.string.nxlink_server_mode, + descriptionId = R.string.nxlink_server_mode_description, + choicesId = R.array.nxlinkServerModeEntries, + valuesId = R.array.nxlinkServerModeValues + ) + ) put( SwitchSetting( BooleanSetting.RENDERER_USE_SPEED_LIMIT, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 81702d7110..9788e7a2c6 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -1288,6 +1288,7 @@ class SettingsFragmentPresenter( add(ShortSetting.DEBUG_KNOBS.key) add(StringSetting.PROGRAM_ARGS.key) + add(IntSetting.HOMEBREW_NXLINK_SERVER_MODE.key) if (!NativeConfig.isPerGameConfigLoaded()) { add(HeaderSetting(R.string.gpu_logging_header)) diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 7a69d5b48b..3b70af98e5 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -630,6 +630,16 @@ 3 + + Disabled + Eden Log + + + + 0 + 1 + + "" "" diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 3023327f14..2c7b45d3f0 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -436,6 +436,8 @@ Homebrew Args Command-line arguments passed to homebrew at launch (e.g. -noglsl). + nxlink Server + Starts a local nxlink server for homebrew stdout/stderr streams. Device name diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp index 893e4a0854..05c70ac2f3 100644 --- a/src/qt_common/config/shared_translation.cpp +++ b/src/qt_common/config/shared_translation.cpp @@ -302,6 +302,8 @@ std::unique_ptr InitializeTranslations(QObject* parent) { INSERT(Settings, device_name, tr("Device Name"), tr("The name of the console.")); INSERT(Settings, program_args, tr("Homebrew Args"), tr("Command-line arguments passed to homebrew at launch (e.g. -noglsl).")); + INSERT(Settings, homebrew_nxlink_server_mode, tr("nxlink Server"), + tr("Starts a local nxlink server for homebrew stdout/stderr streams.")); INSERT(Settings, custom_rtc, tr("Custom RTC Date:"), tr("This option allows to change the clock of the console.\n" "Can be used to manipulate time in games.")); diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp index 47abf66036..d74542e49b 100644 --- a/src/yuzu/configuration/configure_debug.cpp +++ b/src/yuzu/configuration/configure_debug.cpp @@ -67,6 +67,11 @@ void ConfigureDebug::SetConfiguration() { ui->homebrew_args_edit->setEnabled(runtime_lock); ui->homebrew_args_edit->setText( QString::fromStdString(Settings::values.program_args.GetValue())); + ui->nxlink_server_mode->setEnabled(runtime_lock); + const int nxlink_server_mode = + static_cast(Settings::values.homebrew_nxlink_server_mode.GetValue()); + ui->nxlink_server_mode->setCurrentIndex( + nxlink_server_mode < ui->nxlink_server_mode->count() ? nxlink_server_mode : 0); ui->toggle_console->setEnabled(runtime_lock); ui->toggle_console->setChecked(UISettings::values.show_console.GetValue()); ui->fs_access_log->setEnabled(runtime_lock); @@ -116,6 +121,8 @@ void ConfigureDebug::ApplyConfiguration() { Settings::values.log_flush_line = ui->flush_line->isChecked(); Settings::values.censor_username = ui->censor_username->isChecked(); Settings::values.program_args = ui->homebrew_args_edit->text().toStdString(); + Settings::values.homebrew_nxlink_server_mode = + static_cast(ui->nxlink_server_mode->currentIndex()); Settings::values.enable_fs_access_log = ui->fs_access_log->isChecked(); Settings::values.reporting_services = ui->reporting_services->isChecked(); Settings::values.dump_audio_commands = ui->dump_audio_commands->isChecked(); diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui index 4e49c55f37..b68e38e55a 100644 --- a/src/yuzu/configuration/configure_debug.ui +++ b/src/yuzu/configuration/configure_debug.ui @@ -309,20 +309,40 @@ Homebrew - + - + + + Arguments String + + + + + + + + + + nxlink Server + + + + + + + Starts a local nxlink server for homebrew stdout/stderr streams. + - - - Arguments String - - + + Disabled + - + + Eden Log + - + @@ -800,6 +820,7 @@ extended_logging open_log_button homebrew_args_edit + nxlink_server_mode enable_graphics_debugging enable_shader_feedback enable_nsight_aftermath