aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMary <mary@mary.zone>2022-03-04 18:03:16 +0100
committerGitHub <noreply@github.com>2022-03-04 18:03:16 +0100
commitac21abbb9d23432879b1026eb5bc48ad3d4583d8 (patch)
treedc0b99a3caeae4c9bc3b319a875f43a1647836de
parenta3dd04deef7d2555726378293df891f3877f4489 (diff)
Preparation for initial Flatpack and FlatHub integration (#3173)1.1.56
* Preparation for initial Flatpack and FlatHub integration This integrate some initial changes required for Flatpack and distribution from FlatHub. Also added some resources that will be used for packaging on Linux. * Address gdkchan comment
-rw-r--r--Ryujinx.Common/ReleaseInformations.cs21
-rw-r--r--Ryujinx.Headless.SDL2/Program.cs4
-rw-r--r--Ryujinx.SDL2.Common/SDL2Driver.cs5
-rw-r--r--Ryujinx/Configuration/LoggerModule.cs2
-rw-r--r--Ryujinx/Modules/Updater/Updater.cs15
-rw-r--r--Ryujinx/Ui/MainWindow.cs2
-rw-r--r--distribution/linux/ryujinx-logo.svg1
-rw-r--r--distribution/linux/ryujinx-mime.xml23
-rw-r--r--distribution/linux/ryujinx.desktop14
9 files changed, 76 insertions, 11 deletions
diff --git a/Ryujinx.Common/ReleaseInformations.cs b/Ryujinx.Common/ReleaseInformations.cs
index 32a01948..35890406 100644
--- a/Ryujinx.Common/ReleaseInformations.cs
+++ b/Ryujinx.Common/ReleaseInformations.cs
@@ -1,10 +1,14 @@
-using System.Reflection;
+using Ryujinx.Common.Configuration;
+using System;
+using System.Reflection;
namespace Ryujinx.Common
{
// DO NOT EDIT, filled by CI
public static class ReleaseInformations
{
+ private const string FlatHubChannelOwner = "flathub";
+
public static string BuildVersion = "%%RYUJINX_BUILD_VERSION%%";
public static string BuildGitHash = "%%RYUJINX_BUILD_GIT_HASH%%";
public static string ReleaseChannelName = "%%RYUJINX_TARGET_RELEASE_CHANNEL_NAME%%";
@@ -19,6 +23,11 @@ namespace Ryujinx.Common
!ReleaseChannelRepo.StartsWith("%%");
}
+ public static bool IsFlatHubBuild()
+ {
+ return IsValid() && ReleaseChannelOwner.Equals(FlatHubChannelOwner);
+ }
+
public static string GetVersion()
{
if (IsValid())
@@ -30,5 +39,15 @@ namespace Ryujinx.Common
return Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
}
}
+
+ public static string GetBaseApplicationDirectory()
+ {
+ if (IsFlatHubBuild())
+ {
+ return AppDataManager.BaseDirPath;
+ }
+
+ return AppDomain.CurrentDomain.BaseDirectory;
+ }
}
}
diff --git a/Ryujinx.Headless.SDL2/Program.cs b/Ryujinx.Headless.SDL2/Program.cs
index 973b4f5e..4daf6084 100644
--- a/Ryujinx.Headless.SDL2/Program.cs
+++ b/Ryujinx.Headless.SDL2/Program.cs
@@ -310,7 +310,7 @@ namespace Ryujinx.Headless.SDL2
{
controllerConfig.RangeLeft = 1.0f;
controllerConfig.RangeRight = 1.0f;
-
+
Logger.Info?.Print(LogClass.Application, $"{config.PlayerIndex} stick range reset. Save the profile now to update your configuration");
}
}
@@ -396,7 +396,7 @@ namespace Ryujinx.Headless.SDL2
if ((bool)option.EnableFileLog)
{
Logger.AddTarget(new AsyncLogTargetWrapper(
- new FileLogTarget(AppDomain.CurrentDomain.BaseDirectory, "file"),
+ new FileLogTarget(ReleaseInformations.GetBaseApplicationDirectory(), "file"),
1000,
AsyncLogTargetOverflowAction.Block
));
diff --git a/Ryujinx.SDL2.Common/SDL2Driver.cs b/Ryujinx.SDL2.Common/SDL2Driver.cs
index 944f8e57..fbf2b64a 100644
--- a/Ryujinx.SDL2.Common/SDL2Driver.cs
+++ b/Ryujinx.SDL2.Common/SDL2Driver.cs
@@ -1,4 +1,5 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common;
+using Ryujinx.Common.Logging;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -81,7 +82,7 @@ namespace Ryujinx.SDL2.Common
SDL_EventState(SDL_EventType.SDL_CONTROLLERSENSORUPDATE, SDL_DISABLE);
- string gamepadDbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SDL_GameControllerDB.txt");
+ string gamepadDbPath = Path.Combine(ReleaseInformations.GetBaseApplicationDirectory(), "SDL_GameControllerDB.txt");
if (File.Exists(gamepadDbPath))
{
diff --git a/Ryujinx/Configuration/LoggerModule.cs b/Ryujinx/Configuration/LoggerModule.cs
index 9e81f725..cf873e56 100644
--- a/Ryujinx/Configuration/LoggerModule.cs
+++ b/Ryujinx/Configuration/LoggerModule.cs
@@ -80,7 +80,7 @@ namespace Ryujinx.Configuration
if (e.NewValue)
{
Logger.AddTarget(new AsyncLogTargetWrapper(
- new FileLogTarget(AppDomain.CurrentDomain.BaseDirectory, "file"),
+ new FileLogTarget(ReleaseInformations.GetBaseApplicationDirectory(), "file"),
1000,
AsyncLogTargetOverflowAction.Block
));
diff --git a/Ryujinx/Modules/Updater/Updater.cs b/Ryujinx/Modules/Updater/Updater.cs
index f3a25015..bf5f54ed 100644
--- a/Ryujinx/Modules/Updater/Updater.cs
+++ b/Ryujinx/Modules/Updater/Updater.cs
@@ -311,7 +311,7 @@ namespace Ryujinx.Modules
catch (Exception e)
{
Logger.Warning?.Print(LogClass.Application, e.Message);
- Logger.Warning?.Print(LogClass.Application, $"Multi-Threaded update failed, falling back to single-threaded updater.");
+ Logger.Warning?.Print(LogClass.Application, "Multi-Threaded update failed, falling back to single-threaded updater.");
DoUpdateWithSingleThread(updateDialog, downloadUrl, updateFile);
@@ -327,8 +327,8 @@ namespace Ryujinx.Modules
catch (WebException ex)
{
Logger.Warning?.Print(LogClass.Application, ex.Message);
- Logger.Warning?.Print(LogClass.Application, $"Multi-Threaded update failed, falling back to single-threaded updater.");
-
+ Logger.Warning?.Print(LogClass.Application, "Multi-Threaded update failed, falling back to single-threaded updater.");
+
for (int j = 0; j < webClients.Count; j++)
{
webClients[j].CancelAsync();
@@ -567,7 +567,14 @@ namespace Ryujinx.Modules
#else
if (showWarnings)
{
- GtkDialog.CreateWarningDialog("Updater Disabled!", "Please download Ryujinx at https://ryujinx.org/ if you are looking for a supported version.");
+ if (ReleaseInformations.IsFlatHubBuild())
+ {
+ GtkDialog.CreateWarningDialog("Updater Disabled!", "Please update Ryujinx via FlatHub.");
+ }
+ else
+ {
+ GtkDialog.CreateWarningDialog("Updater Disabled!", "Please download Ryujinx at https://ryujinx.org/ if you are looking for a supported version.");
+ }
}
return false;
diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs
index 0c94fc67..5ab3cf61 100644
--- a/Ryujinx/Ui/MainWindow.cs
+++ b/Ryujinx/Ui/MainWindow.cs
@@ -1291,7 +1291,7 @@ namespace Ryujinx.Ui
private void OpenLogsFolder_Pressed(object sender, EventArgs args)
{
- string logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs");
+ string logPath = System.IO.Path.Combine(ReleaseInformations.GetBaseApplicationDirectory(), "Logs");
new DirectoryInfo(logPath).Create();
diff --git a/distribution/linux/ryujinx-logo.svg b/distribution/linux/ryujinx-logo.svg
new file mode 100644
index 00000000..d6a76312
--- /dev/null
+++ b/distribution/linux/ryujinx-logo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 255.76 255.76"><defs><style>.cls-1{fill:#02c5e5;}.cls-2{fill:#ff5f55;}.cls-3{fill:none;}</style></defs><g id="Ebene_2" data-name="Ebene 2"><g id="Ebene_1-2" data-name="Ebene 1"><g id="Ebene_2-2" data-name="Ebene 2"><g id="Ebene_1-2-2" data-name="Ebene 1-2"><path class="cls-1" d="M80.63,0V220.39H44.37c-14,0-35.74-20.74-35.74-39.13V40.13C8.63,19.19,31.36,0,49.06,0Z"/><path class="cls-2" d="M175.13,35.37V255.76h36.26c14,0,35.74-20.74,35.74-39.13V75.5c0-20.94-22.73-40.13-40.43-40.13Z"/><polygon class="cls-1" points="124.34 137.96 122.58 145.57 90.64 145.57 92.89 137.96 124.34 137.96"/><polygon class="cls-2" points="160.29 137.96 157.84 145.57 122.58 145.57 124.34 137.96 160.29 137.96"/><polygon class="cls-1" points="130.39 111.86 128.62 119.47 95.14 119.47 97.39 111.86 130.39 111.86"/><polygon class="cls-2" points="164.79 111.86 162.34 119.47 128.62 119.47 130.39 111.86 164.79 111.86"/><polygon class="cls-1" points="104.24 167.99 122.83 87.77 129.78 87.77 111.19 167.99 104.24 167.99"/><polygon class="cls-2" points="128.18 167.99 146.77 87.77 153.89 87.77 135.3 167.99 128.18 167.99"/></g><rect class="cls-3" width="255.76" height="255.76"/></g></g></g></svg> \ No newline at end of file
diff --git a/distribution/linux/ryujinx-mime.xml b/distribution/linux/ryujinx-mime.xml
new file mode 100644
index 00000000..6ec35c84
--- /dev/null
+++ b/distribution/linux/ryujinx-mime.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="application/x-nx-nca">
+ <comment>Nintendo Content Archive</comment>
+ <glob pattern="*.nca"/>
+ </mime-type>
+ <mime-type type="application/x-nx-nro">
+ <comment>Nintendo Relocatable Object</comment>
+ <glob pattern="*.nro"/>
+ </mime-type>
+ <mime-type type="application/x-nx-nso">
+ <comment>Nintendo Shared Object</comment>
+ <glob pattern="*.nso"/>
+ </mime-type>
+ <mime-type type="application/x-nx-nsp">
+ <comment>Nintendo Submission Package</comment>
+ <glob pattern="*.nsp"/>
+ </mime-type>
+ <mime-type type="application/x-nx-xci">
+ <comment>Nintendo Switch Cartridge</comment>
+ <glob pattern="*.xci"/>
+ </mime-type>
+</mime-info>
diff --git a/distribution/linux/ryujinx.desktop b/distribution/linux/ryujinx.desktop
new file mode 100644
index 00000000..dbfc43e4
--- /dev/null
+++ b/distribution/linux/ryujinx.desktop
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Version=1.0
+Name=Ryujinx
+Comment=A Nintendo Switch Emulator
+Type=Application
+GenericName=Nintendo Switch Emulator
+Icon=ryujinx
+Terminal=false
+Exec=Ryujinx %f
+Categories=Game;Emulator;GTK;
+MimeType=application/x-nx-nca;application/x-nx-nro;application/x-nx-nso;application/x-nx-nsp;application/x-nx-xci;
+Keywords=Switch;Nintendo;Emulator;
+StartupWMClass=Ryujinx
+PrefersNonDefaultGPU=true