diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json
index ad7b4286f..cba9b2ce9 100644
--- a/src/Ryujinx/Assets/locales.json
+++ b/src/Ryujinx/Assets/locales.json
@@ -17747,6 +17747,31 @@
"zh_TW": "更新已停用!"
}
},
+ {
+ "ID": "UpdaterBackgroundStatusBarButtonText",
+ "Translations": {
+ "ar_SA": "",
+ "de_DE": "",
+ "el_GR": "",
+ "en_US": "Update Available!",
+ "es_ES": "",
+ "fr_FR": "",
+ "he_IL": "",
+ "it_IT": "",
+ "ja_JP": "",
+ "ko_KR": "",
+ "no_NO": "",
+ "pl_PL": "",
+ "pt_BR": "",
+ "ru_RU": "",
+ "sv_SE": "",
+ "th_TH": "",
+ "tr_TR": "",
+ "uk_UA": "",
+ "zh_CN": "",
+ "zh_TW": ""
+ }
+ },
{
"ID": "ControllerSettingsRotate90",
"Translations": {
@@ -23873,4 +23898,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
index 113c00a5a..227347030 100644
--- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
@@ -7,6 +7,7 @@ using Avalonia.Media.Imaging;
using Avalonia.Platform.Storage;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.ComponentModel;
+using CommunityToolkit.Mvvm.Input;
using DynamicData;
using DynamicData.Binding;
using FluentAvalonia.UI.Controls;
@@ -104,6 +105,13 @@ namespace Ryujinx.Ava.UI.ViewModels
[ObservableProperty] private bool _isSubMenuOpen;
[ObservableProperty] private ApplicationContextMenu _listAppContextMenu;
[ObservableProperty] private ApplicationContextMenu _gridAppContextMenu;
+ [ObservableProperty] private bool _updateAvailable;
+
+ public static AsyncRelayCommand UpdateCommand => Commands.Create(async () =>
+ {
+ if (Updater.CanUpdate(true))
+ await Updater.BeginUpdateAsync(true);
+ });
private bool _showLoadProgress;
private bool _isGameRunning;
diff --git a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml
index a0259c723..7c3199386 100644
--- a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml
+++ b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml
@@ -23,7 +23,7 @@
Background="{DynamicResource ThemeContentBackgroundColor}"
DockPanel.Dock="Bottom"
IsVisible="{Binding ShowMenuAndStatusBar}"
- ColumnDefinitions="Auto,Auto,*,Auto,Auto">
+ ColumnDefinitions="Auto,Auto,*,Auto,Auto,Auto">
-
+
+
+
+
diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
index 735455541..2b6de9d75 100644
--- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
@@ -413,15 +413,8 @@ namespace Ryujinx.Ava.UI.Windows
case UpdaterType.CheckInBackground:
if ((await Updater.CheckVersionAsync()).TryGet(out (Version Current, Version Incoming) versions))
{
- string newVersionString = ReleaseInformation.IsCanaryBuild
- ? $"Canary {versions.Current} -> Canary {versions.Incoming}"
- : $"{versions.Current} -> {versions.Incoming}";
-
if (versions.Current < versions.Incoming)
- NotificationHelper.ShowInformation(
- title: "Update Available",
- text: newVersionString,
- onClick: () => _ = Updater.BeginUpdateAsync());
+ Dispatcher.UIThread.Post(() => RyujinxApp.MainWindow.ViewModel.UpdateAvailable = true);
}
break;
}