diff --git a/src/Artemis.Core/Constants.cs b/src/Artemis.Core/Constants.cs
index 7921af0bc..c0b3e7ad7 100644
--- a/src/Artemis.Core/Constants.cs
+++ b/src/Artemis.Core/Constants.cs
@@ -28,6 +28,21 @@ namespace Artemis.Core
/// The full path to the Artemis data folder
///
public static readonly string DataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Artemis");
+
+ ///
+ /// The full path to the Artemis logs folder
+ ///
+ public static readonly string LogsFolder = Path.Combine(DataFolder, "Logs");
+
+ ///
+ /// The full path to the Artemis plugins folder
+ ///
+ public static readonly string PluginsFolder = Path.Combine(DataFolder, "Plugins");
+
+ ///
+ /// The full path to the Artemis user layouts folder
+ ///
+ public static readonly string LayoutsFolder = Path.Combine(DataFolder, "User Layouts");
///
/// The plugin info used by core components of Artemis
diff --git a/src/Artemis.Core/Ninject/CoreModule.cs b/src/Artemis.Core/Ninject/CoreModule.cs
index 323cfbcce..7168a7ea5 100644
--- a/src/Artemis.Core/Ninject/CoreModule.cs
+++ b/src/Artemis.Core/Ninject/CoreModule.cs
@@ -79,7 +79,7 @@ namespace Artemis.Core.Ninject
private bool HasAccessToProtectedService(IRequest r)
{
- return r.ParentRequest != null && !r.ParentRequest.Service.Assembly.Location.StartsWith(Path.Combine(Constants.DataFolder, "plugins"));
+ return r.ParentRequest != null && !r.ParentRequest.Service.Assembly.Location.StartsWith(Constants.PluginsFolder);
}
}
}
\ No newline at end of file
diff --git a/src/Artemis.Core/Ninject/LoggerProvider.cs b/src/Artemis.Core/Ninject/LoggerProvider.cs
index 64f5efcf3..0f76c85a2 100644
--- a/src/Artemis.Core/Ninject/LoggerProvider.cs
+++ b/src/Artemis.Core/Ninject/LoggerProvider.cs
@@ -13,7 +13,7 @@ namespace Artemis.Core.Ninject
private static readonly ILogger Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
- .WriteTo.File(Path.Combine(Constants.DataFolder, "logs", "Artemis log-.log"),
+ .WriteTo.File(Path.Combine(Constants.LogsFolder, "Artemis log-.log"),
rollingInterval: RollingInterval.Day,
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] [{SourceContext}] {Message:lj}{NewLine}{Exception}")
.WriteTo.Console()
diff --git a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs
index fc540ff96..953519946 100644
--- a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs
+++ b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs
@@ -87,7 +87,7 @@ namespace Artemis.Core.DeviceProviders
/// The resulting Artemis layout
public virtual ArtemisLayout LoadUserLayout(ArtemisDevice device)
{
- string layoutDir = Path.Combine(Constants.DataFolder, "user layouts");
+ string layoutDir = Constants.LayoutsFolder;
string filePath = Path.Combine(
layoutDir,
device.RgbDevice.DeviceInfo.Manufacturer,
diff --git a/src/Artemis.Core/Services/PluginManagementService.cs b/src/Artemis.Core/Services/PluginManagementService.cs
index a168d54ef..4fc31831c 100644
--- a/src/Artemis.Core/Services/PluginManagementService.cs
+++ b/src/Artemis.Core/Services/PluginManagementService.cs
@@ -48,7 +48,7 @@ namespace Artemis.Core.Services
private void CopyBuiltInPlugin(ZipArchive zipArchive, string targetDirectory)
{
- DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins", targetDirectory));
+ DirectoryInfo pluginDirectory = new(Path.Combine(Constants.PluginsFolder, targetDirectory));
bool createLockFile = File.Exists(Path.Combine(pluginDirectory.FullName, "artemis.lock"));
// Remove the old directory if it exists
@@ -68,7 +68,7 @@ namespace Artemis.Core.Services
public void CopyBuiltInPlugins()
{
OnCopyingBuildInPlugins();
- DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins"));
+ DirectoryInfo pluginDirectory = new(Constants.PluginsFolder);
if (Directory.Exists(Path.Combine(pluginDirectory.FullName, "Artemis.Plugins.Modules.Overlay-29e3ff97")))
Directory.Delete(Path.Combine(pluginDirectory.FullName, "Artemis.Plugins.Modules.Overlay-29e3ff97"), true);
@@ -221,7 +221,7 @@ namespace Artemis.Core.Services
UnloadPlugins();
// Load the plugin assemblies into the plugin context
- DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins"));
+ DirectoryInfo pluginDirectory = new(Constants.PluginsFolder);
foreach (DirectoryInfo subDirectory in pluginDirectory.EnumerateDirectories())
{
try
@@ -506,7 +506,7 @@ namespace Artemis.Core.Services
public Plugin ImportPlugin(string fileName)
{
- DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins"));
+ DirectoryInfo pluginDirectory = new(Constants.PluginsFolder);
// Find the metadata file in the zip
using ZipArchive archive = ZipFile.OpenRead(fileName);
diff --git a/src/Artemis.Core/Utilities/Utilities.cs b/src/Artemis.Core/Utilities/Utilities.cs
index e036fa39b..e6391399a 100644
--- a/src/Artemis.Core/Utilities/Utilities.cs
+++ b/src/Artemis.Core/Utilities/Utilities.cs
@@ -19,8 +19,8 @@ namespace Artemis.Core
public static void PrepareFirstLaunch()
{
CreateAccessibleDirectory(Constants.DataFolder);
- CreateAccessibleDirectory(Path.Combine(Constants.DataFolder, "plugins"));
- CreateAccessibleDirectory(Path.Combine(Constants.DataFolder, "user layouts"));
+ CreateAccessibleDirectory(Constants.PluginsFolder);
+ CreateAccessibleDirectory(Constants.LayoutsFolder);
}
///
@@ -107,8 +107,12 @@ namespace Artemis.Core
{
if (OperatingSystem.IsWindows())
Process.Start(Environment.GetEnvironmentVariable("WINDIR") + @"\explorer.exe", path);
+ else if (OperatingSystem.IsMacOS())
+ Process.Start("open", path);
+ else if (OperatingSystem.IsLinux())
+ Process.Start("xdg-open", path);
else
- throw new PlatformNotSupportedException("Can't open folders yet on non-Windows systems Q.Q");
+ throw new PlatformNotSupportedException("Can't open folders on this platform");
}
///
diff --git a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs
index eceac7b7e..a40ceb2e4 100644
--- a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs
+++ b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs
@@ -69,7 +69,7 @@ namespace Artemis.UI.Avalonia.Screens.Plugins.ViewModels
{
try
{
- Utilities.OpenFolder(Path.Combine(Constants.DataFolder, "logs"));
+ Utilities.OpenFolder(Constants.LogsFolder);
}
catch (Exception e)
{
diff --git a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs
index e7f388844..9263ba867 100644
--- a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs
+++ b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs
@@ -215,7 +215,7 @@ namespace Artemis.UI.Avalonia.Screens.Plugins.ViewModels
{
try
{
- Utilities.OpenFolder(Path.Combine(Constants.DataFolder, "logs"));
+ Utilities.OpenFolder(Constants.LogsFolder);
}
catch (Exception e)
{
diff --git a/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs
index d0fde3198..1d78dc320 100644
--- a/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs
+++ b/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs
@@ -118,7 +118,7 @@ namespace Artemis.UI.Avalonia.Screens.Settings.Tabs.ViewModels
private void ExecuteShowLogs()
{
- OpenFolder(Path.Combine(Constants.DataFolder, "Logs"));
+ OpenFolder(Constants.LogsFolder);
}
#endregion