From edafce57be287c49791e708cb6f78b6f3fec1f2a Mon Sep 17 00:00:00 2001 From: Xpl0itR Date: Mon, 2 Sep 2019 17:03:57 +0100 Subject: [PATCH] Added GUI to Ryujinx (#695) * Added GUI to Ryujinx * Updated to use Glade Also added scrollbar and default dark theme * Added support for loading icon from .nro files and cleaned up the code a bit * Added General Settings Menu (read-only for now) and moved some functionality from MainMenu.cs to ApplicationLibrary.cs * Added custom GUI theme support and changed the defualt theme to one I just wrote * Added GTK to process path, fixed a bug and minor edits * some more edits and a bug fix * general settings menu is now fully functional. also fixed the bug where ryujinx crashes when it trys to load an invalid gamedir * big rewrite * aesthetic changes to General Settings menu * Added Control Settings one day done feature :P * minor changes * 1st wave of changes * 2nd wave of changes * 3rd wave of changes * Cleanup settings ui * minor edits * new about window added, still needs styling * added spin button for new option and tooltips to settings * Game icons and names are now shown in the games list * add nuget package which contains gtk dependencies * requested changes have been changed * put CreateGameWindow on a new thread and stopped destroying the main menu when a game loads * fixed bug that allowed a user to attempt to load multiple games at a time which causes a crash * Added LastPlayed and TimePlayed columns to the game list * Did some testing and fixed some bugs Im not happy with one of the fixes so i will do it properly an upcoming commit * did some more bug testing and fixed another 2 bugs * caught an exception when ryujinx tries to load non-homebrew as homebrew * Large changes Rewrote ApplicationLibrary.cs (added comments too) so any devs reading it wont get eye cancer, also its probably more efficient now. Added 2 new columns (Developer name and application version) to the game list and wrote the logic for it. Ryujinx now loads NRO's TitleName and TitleID from the NACP file instead of the default NPDM. I also killed a lot of bugs * Moved Files moved ApplicationLibrary.cs to Ryujinx.HLE as that is a better place for it. Moved contents of GUI folder to Ui folder and changed the namespaces of the gui files from Ryujinx to Ryujinx.Ui * Added 'Open Ryujinx Folder' button to the file menu and did some small fixes * New features * updated nuget package with missing dlls and changed emmauss' requested changes * fixed some minor issues * all requested changes marked as resolved have been changed * gdkchan's requested changes * fixed an issue with settings window getting chopped on small res * fixed 2 problems caused by rebase * changed the default theme * applied Thog's patch to fix issue on linux * fixed issue caused by rebase * added update check button that runs ryujinx-updater * reads version info from installer and displays it in about menu * changes completed * requested changes changed * fixed issue with default theme * fixed a bug and completed requested changes * added more tooltips and changed some text --- Ryujinx.HLE/FileSystem/SaveHelper.cs | 2 +- Ryujinx.HLE/FileSystem/SaveInfo.cs | 4 +- Ryujinx.HLE/FileSystem/VirtualFileSystem.cs | 4 +- Ryujinx.HLE/HOS/Horizon.cs | 53 +- Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs | 4 +- .../HOS/Kernel/Process/ProcessCreationInfo.cs | 6 +- .../HOS/Kernel/SupervisorCall/SvcSystem.cs | 2 +- .../HOS/Services/FspSrv/IFileSystemProxy.cs | 2 +- Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs | 2 - .../Executables/KernelInitialProcess.cs | 4 +- Ryujinx.HLE/Loaders/Npdm/ACI0.cs | 4 +- Ryujinx.HLE/Loaders/Npdm/Npdm.cs | 2 +- Ryujinx.sln | 10 +- Ryujinx/{Config.jsonc => Config.json} | 73 +- Ryujinx/Configuration.cs | 151 +- Ryujinx/Program.cs | 176 +- Ryujinx/RPsupported.dat | 9 +- Ryujinx/Ryujinx.csproj | 25 +- Ryujinx/Theme.css | 4054 +++++++++++++++++ Ryujinx/Ui/AboutWindow.cs | 116 + Ryujinx/Ui/AboutWindow.glade | 574 +++ Ryujinx/Ui/ApplicationLibrary.cs | 450 ++ Ryujinx/Ui/GLScreen.cs | 2 +- Ryujinx/Ui/MainWindow.cs | 601 +++ Ryujinx/Ui/MainWindow.glade | 347 ++ Ryujinx/Ui/NpadKeyboard.cs | 4 +- Ryujinx/Ui/SwitchSettings.cs | 424 ++ Ryujinx/Ui/SwitchSettings.glade | 1989 ++++++++ Ryujinx/Ui/assets/DiscordLogo.png | Bin 0 -> 5216 bytes Ryujinx/Ui/assets/GitHubLogo.png | Bin 0 -> 4044 bytes Ryujinx/Ui/assets/JoyCon.png | Bin 0 -> 288310 bytes Ryujinx/Ui/assets/PatreonLogo.png | Bin 0 -> 5899 bytes Ryujinx/Ui/assets/TwitterLogo.png | Bin 0 -> 8012 bytes Ryujinx/Ui/assets/ryujinxIcon.png | Bin 0 -> 53785 bytes Ryujinx/Ui/assets/ryujinxNCAIcon.png | Bin 0 -> 13675 bytes Ryujinx/Ui/assets/ryujinxNROIcon.png | Bin 0 -> 13902 bytes Ryujinx/Ui/assets/ryujinxNSOIcon.png | Bin 0 -> 13948 bytes Ryujinx/Ui/assets/ryujinxNSPIcon.png | Bin 0 -> 13198 bytes Ryujinx/Ui/assets/ryujinxXCIIcon.png | Bin 0 -> 13093 bytes Ryujinx/_schema.json | 32 + 40 files changed, 8807 insertions(+), 319 deletions(-) rename Ryujinx/{Config.jsonc => Config.json} (55%) create mode 100644 Ryujinx/Theme.css create mode 100644 Ryujinx/Ui/AboutWindow.cs create mode 100644 Ryujinx/Ui/AboutWindow.glade create mode 100644 Ryujinx/Ui/ApplicationLibrary.cs create mode 100644 Ryujinx/Ui/MainWindow.cs create mode 100644 Ryujinx/Ui/MainWindow.glade create mode 100644 Ryujinx/Ui/SwitchSettings.cs create mode 100644 Ryujinx/Ui/SwitchSettings.glade create mode 100644 Ryujinx/Ui/assets/DiscordLogo.png create mode 100644 Ryujinx/Ui/assets/GitHubLogo.png create mode 100644 Ryujinx/Ui/assets/JoyCon.png create mode 100644 Ryujinx/Ui/assets/PatreonLogo.png create mode 100644 Ryujinx/Ui/assets/TwitterLogo.png create mode 100644 Ryujinx/Ui/assets/ryujinxIcon.png create mode 100644 Ryujinx/Ui/assets/ryujinxNCAIcon.png create mode 100644 Ryujinx/Ui/assets/ryujinxNROIcon.png create mode 100644 Ryujinx/Ui/assets/ryujinxNSOIcon.png create mode 100644 Ryujinx/Ui/assets/ryujinxNSPIcon.png create mode 100644 Ryujinx/Ui/assets/ryujinxXCIIcon.png diff --git a/Ryujinx.HLE/FileSystem/SaveHelper.cs b/Ryujinx.HLE/FileSystem/SaveHelper.cs index 411d13e250..51400458b0 100644 --- a/Ryujinx.HLE/FileSystem/SaveHelper.cs +++ b/Ryujinx.HLE/FileSystem/SaveHelper.cs @@ -10,7 +10,7 @@ namespace Ryujinx.HLE.FileSystem public static string GetSavePath(SaveInfo saveMetaData, ServiceCtx context) { string baseSavePath = NandPath; - long currentTitleId = saveMetaData.TitleId; + ulong currentTitleId = saveMetaData.TitleId; switch (saveMetaData.SaveSpaceId) { diff --git a/Ryujinx.HLE/FileSystem/SaveInfo.cs b/Ryujinx.HLE/FileSystem/SaveInfo.cs index db7f6765d7..8685e6ca54 100644 --- a/Ryujinx.HLE/FileSystem/SaveInfo.cs +++ b/Ryujinx.HLE/FileSystem/SaveInfo.cs @@ -4,7 +4,7 @@ namespace Ryujinx.HLE.FileSystem { struct SaveInfo { - public long TitleId { get; private set; } + public ulong TitleId { get; private set; } public long SaveId { get; private set; } public UInt128 UserId { get; private set; } @@ -12,7 +12,7 @@ namespace Ryujinx.HLE.FileSystem public SaveSpaceId SaveSpaceId { get; private set; } public SaveInfo( - long titleId, + ulong titleId, long saveId, SaveDataType saveDataType, UInt128 userId, diff --git a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs index eed5953f19..e71fc27f32 100644 --- a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs +++ b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs @@ -5,7 +5,7 @@ using System.IO; namespace Ryujinx.HLE.FileSystem { - class VirtualFileSystem : IDisposable + public class VirtualFileSystem : IDisposable { public const string BasePath = "RyuFs"; public const string NandPath = "nand"; @@ -60,7 +60,7 @@ namespace Ryujinx.HLE.FileSystem public string GetSystemPath() => MakeDirAndGetFullPath(SystemPath); - public string GetGameSavePath(SaveInfo save, ServiceCtx context) + internal string GetGameSavePath(SaveInfo save, ServiceCtx context) { return MakeDirAndGetFullPath(SaveHelper.GetSavePath(save, context)); } diff --git a/Ryujinx.HLE/HOS/Horizon.cs b/Ryujinx.HLE/HOS/Horizon.cs index 5873223ef6..334cba1260 100644 --- a/Ryujinx.HLE/HOS/Horizon.cs +++ b/Ryujinx.HLE/HOS/Horizon.cs @@ -94,7 +94,7 @@ namespace Ryujinx.HLE.HOS internal KEvent VsyncEvent { get; private set; } - internal Keyset KeySet { get; private set; } + public Keyset KeySet { get; private set; } private bool _hasStarted; @@ -453,9 +453,7 @@ namespace Ryujinx.HLE.HOS Nacp controlData = new Nacp(controlFile.AsStream()); TitleName = CurrentTitle = controlData.Descriptions[(int)State.DesiredTitleLanguage].Title; - TitleID = metaData.Aci0.TitleId.ToString("x16"); - - CurrentTitle = controlData.Descriptions[(int)State.DesiredTitleLanguage].Title; + TitleID = metaData.Aci0.TitleId.ToString("x16"); if (string.IsNullOrWhiteSpace(CurrentTitle)) { @@ -551,18 +549,51 @@ namespace Ryujinx.HLE.HOS if (asetVersion == 0) { ulong iconOffset = reader.ReadUInt64(); - ulong iconSize = reader.ReadUInt64(); + ulong iconSize = reader.ReadUInt64(); ulong nacpOffset = reader.ReadUInt64(); - ulong nacpSize = reader.ReadUInt64(); + ulong nacpSize = reader.ReadUInt64(); ulong romfsOffset = reader.ReadUInt64(); - ulong romfsSize = reader.ReadUInt64(); + ulong romfsSize = reader.ReadUInt64(); if (romfsSize != 0) { Device.FileSystem.SetRomFs(new HomebrewRomFsStream(input, obj.FileSize + (long)romfsOffset)); } + + if (nacpSize != 0) + { + input.Seek(obj.FileSize + (long)nacpOffset, SeekOrigin.Begin); + using (MemoryStream stream = new MemoryStream(reader.ReadBytes((int)nacpSize))) + { + ControlData = new Nacp(stream); + } + + metaData.TitleName = ControlData.Descriptions[(int)State.DesiredTitleLanguage].Title; + + if (string.IsNullOrWhiteSpace(metaData.TitleName)) + { + metaData.TitleName = ControlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title; + } + + metaData.Aci0.TitleId = ControlData.PresenceGroupId; + + if (metaData.Aci0.TitleId == 0) + { + metaData.Aci0.TitleId = ControlData.SaveDataOwnerId; + } + + if (metaData.Aci0.TitleId == 0) + { + metaData.Aci0.TitleId = ControlData.AddOnContentBaseId - 0x1000; + } + + if (metaData.Aci0.TitleId.ToString("x16") == "fffffffffffff000") + { + metaData.Aci0.TitleId = 0000000000000000; + } + } } else { @@ -578,8 +609,8 @@ namespace Ryujinx.HLE.HOS ContentManager.LoadEntries(); - TitleID = CurrentTitle = metaData.Aci0.TitleId.ToString("x16"); - TitleName = metaData.TitleName; + TitleName = CurrentTitle = metaData.TitleName; + TitleID = metaData.Aci0.TitleId.ToString("x16"); ProgramLoader.LoadStaticObjects(this, metaData, new IExecutable[] { staticObject }); } @@ -687,7 +718,9 @@ namespace Ryujinx.HLE.HOS // It's only safe to release resources once all threads // have exited. ThreadCounter.Signal(); - ThreadCounter.Wait(); + //ThreadCounter.Wait(); // FIXME: Uncomment this + // BODY: Right now, guest processes don't exit properly because the logic waits for them to exit. + // BODY: However, this doesn't happen when you close the main window so we need to find a way to make them exit gracefully Scheduler.Dispose(); diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs index beb376f64f..c6283afd43 100644 --- a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs +++ b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs @@ -60,8 +60,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Process public KProcessCapabilities Capabilities { get; private set; } - public long TitleId { get; private set; } - public long Pid { get; private set; } + public ulong TitleId { get; private set; } + public long Pid { get; private set; } private long _creationTimestamp; private ulong _entrypoint; diff --git a/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationInfo.cs b/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationInfo.cs index ba9f54bf36..7431d7dd25 100644 --- a/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationInfo.cs +++ b/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationInfo.cs @@ -4,8 +4,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Process { public string Name { get; private set; } - public int Category { get; private set; } - public long TitleId { get; private set; } + public int Category { get; private set; } + public ulong TitleId { get; private set; } public ulong CodeAddress { get; private set; } public int CodePagesCount { get; private set; } @@ -17,7 +17,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process public ProcessCreationInfo( string name, int category, - long titleId, + ulong titleId, ulong codeAddress, int codePagesCount, int mmuFlags, diff --git a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcSystem.cs b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcSystem.cs index 094e1935f8..6525628f26 100644 --- a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcSystem.cs +++ b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcSystem.cs @@ -285,7 +285,7 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall break; - case 18: value = process.TitleId; break; + case 18: value = (long)process.TitleId; break; case 20: value = (long)process.UserExceptionContextAddress; break; diff --git a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs index 16bfc00e26..ab425cffe4 100644 --- a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs +++ b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs @@ -225,7 +225,7 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv { SaveSpaceId saveSpaceId = (SaveSpaceId)context.RequestData.ReadInt64(); - long titleId = context.RequestData.ReadInt64(); + ulong titleId = context.RequestData.ReadUInt64(); UInt128 userId = context.RequestData.ReadStruct(); diff --git a/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs b/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs index 36775b078f..97fa1d74b6 100644 --- a/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs +++ b/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs @@ -40,8 +40,6 @@ namespace Ryujinx.HLE.HOS.SystemState internal string ActiveAudioOutput { get; private set; } - public bool DiscordIntegrationEnabled { get; set; } - public bool DockedMode { get; set; } public ColorSet ThemeColor { get; set; } diff --git a/Ryujinx.HLE/Loaders/Executables/KernelInitialProcess.cs b/Ryujinx.HLE/Loaders/Executables/KernelInitialProcess.cs index af57cf2d06..d6a1cb66bd 100644 --- a/Ryujinx.HLE/Loaders/Executables/KernelInitialProcess.cs +++ b/Ryujinx.HLE/Loaders/Executables/KernelInitialProcess.cs @@ -7,7 +7,7 @@ namespace Ryujinx.HLE.Loaders.Executables { public string Name { get; private set; } - public long TitleId { get; private set; } + public ulong TitleId { get; private set; } public int ProcessCategory { get; private set; } @@ -65,7 +65,7 @@ namespace Ryujinx.HLE.Loaders.Executables Name = ReadString(reader, 12); - TitleId = reader.ReadInt64(); + TitleId = reader.ReadUInt64(); ProcessCategory = reader.ReadInt32(); diff --git a/Ryujinx.HLE/Loaders/Npdm/ACI0.cs b/Ryujinx.HLE/Loaders/Npdm/ACI0.cs index af426bcfc8..8350acf724 100644 --- a/Ryujinx.HLE/Loaders/Npdm/ACI0.cs +++ b/Ryujinx.HLE/Loaders/Npdm/ACI0.cs @@ -7,7 +7,7 @@ namespace Ryujinx.HLE.Loaders.Npdm { private const int Aci0Magic = 'A' << 0 | 'C' << 8 | 'I' << 16 | '0' << 24; - public long TitleId { get; private set; } + public ulong TitleId { get; set; } public int FsVersion { get; private set; } public ulong FsPermissionsBitmask { get; private set; } @@ -28,7 +28,7 @@ namespace Ryujinx.HLE.Loaders.Npdm stream.Seek(0xc, SeekOrigin.Current); - TitleId = reader.ReadInt64(); + TitleId = reader.ReadUInt64(); // Reserved. stream.Seek(8, SeekOrigin.Current); diff --git a/Ryujinx.HLE/Loaders/Npdm/Npdm.cs b/Ryujinx.HLE/Loaders/Npdm/Npdm.cs index 36449e40a5..169e68daf3 100644 --- a/Ryujinx.HLE/Loaders/Npdm/Npdm.cs +++ b/Ryujinx.HLE/Loaders/Npdm/Npdm.cs @@ -18,7 +18,7 @@ namespace Ryujinx.HLE.Loaders.Npdm public int PersonalMmHeapSize { get; private set; } public int ProcessCategory { get; private set; } public int MainThreadStackSize { get; private set; } - public string TitleName { get; private set; } + public string TitleName { get; set; } public byte[] ProductCode { get; private set; } public Aci0 Aci0 { get; private set; } diff --git a/Ryujinx.sln b/Ryujinx.sln index 8177f8617c..18df571bb6 100644 --- a/Ryujinx.sln +++ b/Ryujinx.sln @@ -28,7 +28,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Common", "Ryujinx.C EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Profiler", "Ryujinx.Profiler\Ryujinx.Profiler.csproj", "{4E69B67F-8CA7-42CF-A9E1-CCB0915DFB34}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ARMeilleure", "ARMeilleure\ARMeilleure.csproj", "{ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ARMeilleure", "ARMeilleure\ARMeilleure.csproj", "{ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -126,6 +126,14 @@ Global {4E69B67F-8CA7-42CF-A9E1-CCB0915DFB34}.Profile Release|Any CPU.Build.0 = Profile Release|Any CPU {4E69B67F-8CA7-42CF-A9E1-CCB0915DFB34}.Release|Any CPU.ActiveCfg = Release|Any CPU {4E69B67F-8CA7-42CF-A9E1-CCB0915DFB34}.Release|Any CPU.Build.0 = Release|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Profile Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Profile Debug|Any CPU.Build.0 = Debug|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Profile Release|Any CPU.ActiveCfg = Release|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Profile Release|Any CPU.Build.0 = Release|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ABF09A5E-2D8B-4B6F-A51D-5CE414DDB15A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Ryujinx/Config.jsonc b/Ryujinx/Config.json similarity index 55% rename from Ryujinx/Config.jsonc rename to Ryujinx/Config.json index 2acb7f38d3..d6ed189adc 100644 --- a/Ryujinx/Config.jsonc +++ b/Ryujinx/Config.json @@ -1,75 +1,28 @@ { - "$schema": "./_schema.json", - - // Dump shaders in local directory (e.g. `C:\ShaderDumps`) "graphics_shaders_dump_path": "", - - // Enable printing debug logs "logging_enable_debug": false, - - // Enable printing stubbed calls logs "logging_enable_stub": true, - - // Enable printing information logs "logging_enable_info": true, - - // Enable printing warning logs "logging_enable_warn": true, - - // Enable printing error logs "logging_enable_error": true, - - // Enable printing guest logs "logging_enable_guest": true, - - // Enable printing FS access logs. fs_global_access_log_mode must be 2 or 3 "logging_enable_fs_access_log": false, - - // Filtered log classes, in a JSON array, eg. `[ "Loader", "ServiceFs" ]` "logging_filtered_classes": [ ], - - // Enable file logging "enable_file_log": true, - - // Change System Language - // System Language list: https://gist.github.com/HorrorTroll/b6e4a88d774c3c9b3bdf54d79a7ca43b "system_language": "AmericanEnglish", - - // Enable or disable Docked Mode "docked_mode": false, - - // Enable or disable Discord Rich Presence "enable_discord_integration": true, - - // Enable or disable Game Vsync "enable_vsync": true, - - // Enable or disable Multi-core scheduling of threads "enable_multicore_scheduling": true, - - // Enable integrity checks on Switch content files "enable_fs_integrity_checks": true, - - // Sets the "GlobalAccessLogMode". Possible modes are 0-3 - "fs_global_access_log_mode": 0, - - // Use old ChocolArm64 ARM emulator "enable_legacy_jit": false, - - // Enable or disable ignoring missing services, this may cause instability "ignore_missing_services": false, - - // The primary controller's type - // Supported Values: Handheld, ProController, NpadPair, NpadLeft, NpadRight "controller_type": "Handheld", - - // Enable or disable "direct keyboard access (HID) support" (Provides games access to your keyboard as a text entry device). - "enable_keyboard": false, - - // Keyboard Controls - // https://github.com/opentk/opentk/blob/master/src/OpenTK/Input/Key.cs + "gui_columns": [ true, true, true, true, true, true, true, true, true ], + "game_dirs": [], + "enable_custom_theme": false, + "custom_theme_path": "", "keyboard_controls": { - // Left JoyCon Keyboard Bindings "left_joycon": { "stick_up": "W", "stick_down": "S", @@ -84,8 +37,6 @@ "button_l": "E", "button_zl": "Q" }, - - // Right JoyCon Keyboard Bindings "right_joycon": { "stick_up": "I", "stick_down": "K", @@ -100,27 +51,15 @@ "button_r": "U", "button_zr": "O" }, - "hotkeys": { "toggle_vsync": "Tab" } }, - - // Controller Controls - "joystick_controls": { - // Whether or not to enable Controller support + "joystick_controls": { "enabled": true, - - // Controller Device Index "index": 0, - - // Controller Analog Stick Deadzone "deadzone": 0.05, - - // The value of how pressed down each trigger has to be in order to register a button press "trigger_threshold": 0.5, - - // Left JoyCon Controller Bindings "left_joycon": { "stick": "Axis0", "stick_button": "Button13", @@ -132,8 +71,6 @@ "button_l": "Button6", "button_zl": "Button8" }, - - // Right JoyCon Controller Bindings "right_joycon": { "stick": "Axis2", "stick_button": "Button14", diff --git a/Ryujinx/Configuration.cs b/Ryujinx/Configuration.cs index 7c9182052a..53560521b8 100644 --- a/Ryujinx/Configuration.cs +++ b/Ryujinx/Configuration.cs @@ -1,4 +1,4 @@ -using ARMeilleure; +using JsonPrettyPrinterPlus; using LibHac.Fs; using OpenTK.Input; using Ryujinx.Common; @@ -7,9 +7,12 @@ using Ryujinx.HLE; using Ryujinx.HLE.HOS.SystemState; using Ryujinx.HLE.HOS.Services; using Ryujinx.HLE.Input; +using Ryujinx.UI; using Ryujinx.UI.Input; using System; +using System.Collections.Generic; using System.IO; +using System.Text; using System.Threading.Tasks; using Utf8Json; using Utf8Json.Resolvers; @@ -26,112 +29,132 @@ namespace Ryujinx /// /// Dumps shaders in this local directory /// - public string GraphicsShadersDumpPath { get; private set; } + public string GraphicsShadersDumpPath { get; set; } /// /// Enables printing debug log messages /// - public bool LoggingEnableDebug { get; private set; } + public bool LoggingEnableDebug { get; set; } /// /// Enables printing stub log messages /// - public bool LoggingEnableStub { get; private set; } + public bool LoggingEnableStub { get; set; } /// /// Enables printing info log messages /// - public bool LoggingEnableInfo { get; private set; } + public bool LoggingEnableInfo { get; set; } /// /// Enables printing warning log messages /// - public bool LoggingEnableWarn { get; private set; } + public bool LoggingEnableWarn { get; set; } /// /// Enables printing error log messages /// - public bool LoggingEnableError { get; private set; } + public bool LoggingEnableError { get; set; } /// /// Enables printing guest log messages /// - public bool LoggingEnableGuest { get; private set; } + public bool LoggingEnableGuest { get; set; } /// /// Enables printing FS access log messages /// - public bool LoggingEnableFsAccessLog { get; private set; } + public bool LoggingEnableFsAccessLog { get; set; } /// /// Controls which log messages are written to the log targets /// - public LogClass[] LoggingFilteredClasses { get; private set; } + public LogClass[] LoggingFilteredClasses { get; set; } /// /// Enables or disables logging to a file on disk /// - public bool EnableFileLog { get; private set; } + public bool EnableFileLog { get; set; } /// /// Change System Language /// - public SystemLanguage SystemLanguage { get; private set; } + public SystemLanguage SystemLanguage { get; set; } /// /// Enables or disables Docked Mode /// - public bool DockedMode { get; private set; } + public bool DockedMode { get; set; } /// /// Enables or disables Discord Rich Presence /// - public bool EnableDiscordIntegration { get; private set; } + public bool EnableDiscordIntegration { get; set; } /// /// Enables or disables Vertical Sync /// - public bool EnableVsync { get; private set; } + public bool EnableVsync { get; set; } /// /// Enables or disables multi-core scheduling of threads /// - public bool EnableMulticoreScheduling { get; private set; } + public bool EnableMulticoreScheduling { get; set; } /// /// Enables integrity checks on Game content files /// - public bool EnableFsIntegrityChecks { get; private set; } + public bool EnableFsIntegrityChecks { get; set; } /// /// Enables FS access log output to the console. Possible modes are 0-3 /// - public int FsGlobalAccessLogMode { get; private set; } + public int FsGlobalAccessLogMode { get; set; } /// /// Use old ChocolArm64 ARM emulator /// - public bool EnableLegacyJit { get; private set; } + public bool EnableLegacyJit { get; set; } /// /// Enable or disable ignoring missing services /// - public bool IgnoreMissingServices { get; private set; } + public bool IgnoreMissingServices { get; set; } /// /// The primary controller's type /// - public ControllerStatus ControllerType { get; private set; } + public ControllerStatus ControllerType { get; set; } + + /// + /// Used to toggle columns in the GUI + /// + public List GuiColumns { get; set; } + + /// + /// A list of directories containing games to be used to load games into the games list + /// + public List GameDirs { get; set; } + + /// + /// Enable or disable custom themes in the GUI + /// + public bool EnableCustomTheme { get; set; } + + /// + /// Path to custom GUI theme + /// + public string CustomThemePath { get; set; } /// /// Enable or disable keyboard support (Independent from controllers binding) /// - public bool EnableKeyboard { get; private set; } + public bool EnableKeyboard { get; set; } /// /// Keyboard control bindings /// - public NpadKeyboard KeyboardControls { get; private set; } + public NpadKeyboard KeyboardControls { get; set; } /// /// Controller control bindings @@ -161,8 +184,8 @@ namespace Ryujinx /// The path to the JSON configuration file public static async Task LoadAsync(string path) { - var resolver = CompositeResolver.Create( - new[] { new ConfigurationEnumFormatter() }, + IJsonFormatterResolver resolver = CompositeResolver.Create( + new[] { new ConfigurationEnumFormatter() }, new[] { StandardResolver.AllowPrivateSnakeCase } ); @@ -172,18 +195,33 @@ namespace Ryujinx } } + /// + /// Save a configuration file to disk + /// + /// The path to the JSON configuration file + public static void SaveConfig(Configuration config, string path) + { + IJsonFormatterResolver resolver = CompositeResolver.Create( + new[] { new ConfigurationEnumFormatter() }, + new[] { StandardResolver.AllowPrivateSnakeCase } + ); + + byte[] data = JsonSerializer.Serialize(config, resolver); + File.WriteAllText(path, Encoding.UTF8.GetString(data, 0, data.Length).PrettyPrintJson()); + } + /// /// Configures a instance /// /// The instance to configure - public static void Configure(Switch device) + public static void InitialConfigure(Switch device) { if (Instance == null) { throw new InvalidOperationException("Configuration has not been loaded yet."); } - GraphicsConfig.ShadersDumpPath = Instance.GraphicsShadersDumpPath; + SwitchSettings.ConfigureSettings(Instance); Logger.AddTarget(new AsyncLogTargetWrapper( new ConsoleLogTarget(), @@ -194,65 +232,74 @@ namespace Ryujinx if (Instance.EnableFileLog) { Logger.AddTarget(new AsyncLogTargetWrapper( - new FileLogTarget(Path.Combine(Program.ApplicationDirectory, "Ryujinx.log")), + new FileLogTarget(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Ryujinx.log")), 1000, AsyncLogTargetOverflowAction.Block )); } - Logger.SetEnable(LogLevel.Debug, Instance.LoggingEnableDebug); - Logger.SetEnable(LogLevel.Stub, Instance.LoggingEnableStub); - Logger.SetEnable(LogLevel.Info, Instance.LoggingEnableInfo); - Logger.SetEnable(LogLevel.Warning, Instance.LoggingEnableWarn); - Logger.SetEnable(LogLevel.Error, Instance.LoggingEnableError); - Logger.SetEnable(LogLevel.Guest, Instance.LoggingEnableGuest); - Logger.SetEnable(LogLevel.AccessLog, Instance.LoggingEnableFsAccessLog); + Configure(device, Instance); + } - if (Instance.LoggingFilteredClasses.Length > 0) + public static void Configure(Switch device, Configuration SwitchConfig) + { + GraphicsConfig.ShadersDumpPath = SwitchConfig.GraphicsShadersDumpPath; + + Logger.SetEnable(LogLevel.Debug, SwitchConfig.LoggingEnableDebug ); + Logger.SetEnable(LogLevel.Stub, SwitchConfig.LoggingEnableStub ); + Logger.SetEnable(LogLevel.Info, SwitchConfig.LoggingEnableInfo ); + Logger.SetEnable(LogLevel.Warning, SwitchConfig.LoggingEnableWarn ); + Logger.SetEnable(LogLevel.Error, SwitchConfig.LoggingEnableError ); + Logger.SetEnable(LogLevel.Guest, SwitchConfig.LoggingEnableGuest ); + Logger.SetEnable(LogLevel.AccessLog, SwitchConfig.LoggingEnableFsAccessLog); + + if (SwitchConfig.LoggingFilteredClasses.Length > 0) { foreach (var logClass in EnumExtensions.GetValues()) { Logger.SetEnable(logClass, false); } - foreach (var logClass in Instance.LoggingFilteredClasses) + foreach (var logClass in SwitchConfig.LoggingFilteredClasses) { Logger.SetEnable(logClass, true); } } - device.System.State.DiscordIntegrationEnabled = Instance.EnableDiscordIntegration; + MainWindow.DiscordIntegrationEnabled = SwitchConfig.EnableDiscordIntegration; - device.EnableDeviceVsync = Instance.EnableVsync; + device.EnableDeviceVsync = SwitchConfig.EnableVsync; - device.System.State.DockedMode = Instance.DockedMode; + device.System.State.DockedMode = SwitchConfig.DockedMode; - device.System.State.SetLanguage(Instance.SystemLanguage); + device.System.State.SetLanguage(SwitchConfig.SystemLanguage); - if (Instance.EnableMulticoreScheduling) + if (SwitchConfig.EnableMulticoreScheduling) { device.System.EnableMultiCoreScheduling(); } - device.System.FsIntegrityCheckLevel = Instance.EnableFsIntegrityChecks + device.System.FsIntegrityCheckLevel = SwitchConfig.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None; - device.System.GlobalAccessLogMode = Instance.FsGlobalAccessLogMode; + device.System.GlobalAccessLogMode = SwitchConfig.FsGlobalAccessLogMode; - device.System.UseLegacyJit = Instance.EnableLegacyJit; + device.System.UseLegacyJit = SwitchConfig.EnableLegacyJit; - ServiceConfiguration.IgnoreMissingServices = Instance.IgnoreMissingServices; - - if (Instance.JoystickControls.Enabled) + ServiceConfiguration.IgnoreMissingServices = SwitchConfig.IgnoreMissingServices; + } + + public static void ConfigureHid(Switch device, Configuration SwitchConfig) + { + if (SwitchConfig.JoystickControls.Enabled) { - if (!Joystick.GetState(Instance.JoystickControls.Index).IsConnected) + if (!Joystick.GetState(SwitchConfig.JoystickControls.Index).IsConnected) { - Instance.JoystickControls.SetEnabled(false); + SwitchConfig.JoystickControls.SetEnabled(false); } } - - device.Hid.InitializePrimaryController(Instance.ControllerType); + device.Hid.InitializePrimaryController(SwitchConfig.ControllerType); device.Hid.InitializeKeyboard(); } diff --git a/Ryujinx/Program.cs b/Ryujinx/Program.cs index d0518441b8..5663a5d5bd 100644 --- a/Ryujinx/Program.cs +++ b/Ryujinx/Program.cs @@ -1,169 +1,41 @@ -using DiscordRPC; -using Ryujinx.Audio; +using Gtk; using Ryujinx.Common.Logging; -using Ryujinx.Graphics.Gal; -using Ryujinx.Graphics.Gal.OpenGL; -using Ryujinx.HLE; using Ryujinx.Profiler; +using Ryujinx.UI; using System; using System.IO; -using System.Linq; namespace Ryujinx { class Program { - public static DiscordRpcClient DiscordClient; - - public static RichPresence DiscordPresence; - - public static string ApplicationDirectory => AppDomain.CurrentDomain.BaseDirectory; - static void Main(string[] args) { Console.Title = "Ryujinx Console"; - IGalRenderer renderer = new OglRenderer(); - - IAalOutput audioOut = InitializeAudioEngine(); - - Switch device = new Switch(renderer, audioOut); - - Configuration.Load(Path.Combine(ApplicationDirectory, "Config.jsonc")); - Configuration.Configure(device); - - Profile.Initialize(); + string systemPath = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine); + Environment.SetEnvironmentVariable("Path", $"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")};{systemPath}"); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit; - if (device.System.State.DiscordIntegrationEnabled) - { - DiscordClient = new DiscordRpcClient("568815339807309834"); - DiscordPresence = new RichPresence - { - Assets = new Assets - { - LargeImageKey = "ryujinx", - LargeImageText = "Ryujinx is an emulator for the Nintendo Switch" - } - }; + Profile.Initialize(); - DiscordClient.Initialize(); - DiscordClient.SetPresence(DiscordPresence); - } + Application.Init(); - if (args.Length == 1) - { - if (Directory.Exists(args[0])) - { - string[] romFsFiles = Directory.GetFiles(args[0], "*.istorage"); + Application gtkApplication = new Application("Ryujinx.Ryujinx", GLib.ApplicationFlags.None); + MainWindow mainWindow = new MainWindow(args, gtkApplication); - if (romFsFiles.Length == 0) - { - romFsFiles = Directory.GetFiles(args[0], "*.romfs"); - } + gtkApplication.Register(GLib.Cancellable.Current); + gtkApplication.AddWindow(mainWindow); + mainWindow.Show(); - if (romFsFiles.Length > 0) - { - Logger.PrintInfo(LogClass.Application, "Loading as cart with RomFS."); - device.LoadCart(args[0], romFsFiles[0]); - } - else - { - Logger.PrintInfo(LogClass.Application, "Loading as cart WITHOUT RomFS."); - device.LoadCart(args[0]); - } - } - else if (File.Exists(args[0])) - { - switch (Path.GetExtension(args[0]).ToLowerInvariant()) - { - case ".xci": - Logger.PrintInfo(LogClass.Application, "Loading as XCI."); - device.LoadXci(args[0]); - break; - case ".nca": - Logger.PrintInfo(LogClass.Application, "Loading as NCA."); - device.LoadNca(args[0]); - break; - case ".nsp": - case ".pfs0": - Logger.PrintInfo(LogClass.Application, "Loading as NSP."); - device.LoadNsp(args[0]); - break; - default: - Logger.PrintInfo(LogClass.Application, "Loading as homebrew."); - device.LoadProgram(args[0]); - break; - } - } - else - { - Logger.PrintWarning(LogClass.Application, "Please specify a valid XCI/NCA/NSP/PFS0/NRO file"); - } - } - else - { - Logger.PrintWarning(LogClass.Application, "Please specify the folder with the NSOs/IStorage or a NSO/NRO."); - } - - if (device.System.State.DiscordIntegrationEnabled) - { - if (File.ReadAllLines(Path.Combine(ApplicationDirectory, "RPsupported.dat")).Contains(device.System.TitleID)) - { - DiscordPresence.Assets.LargeImageKey = device.System.TitleID; - } - - string state = device.System.TitleID; - - if (state == null) - { - state = "Ryujinx"; - } - else - { - state = state.ToUpper(); - } - - string details = "Idling"; - - if (device.System.TitleName != null) - { - details = $"Playing {device.System.TitleName}"; - } - - DiscordPresence.Details = details; - DiscordPresence.State = state; - DiscordPresence.Assets.LargeImageText = device.System.TitleName; - DiscordPresence.Assets.SmallImageKey = "ryujinx"; - DiscordPresence.Assets.SmallImageText = "Ryujinx is an emulator for the Nintendo Switch"; - DiscordPresence.Timestamps = new Timestamps(DateTime.UtcNow); - - DiscordClient.SetPresence(DiscordPresence); - } - - using (GlScreen screen = new GlScreen(device, renderer)) - { - screen.MainLoop(); - - Profile.FinishProfiling(); - - device.Dispose(); - } - - audioOut.Dispose(); - - Logger.Shutdown(); - - DiscordClient.Dispose(); + Application.Run(); } private static void CurrentDomain_ProcessExit(object sender, EventArgs e) { Logger.Shutdown(); - - DiscordClient.Dispose(); } private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) @@ -175,29 +47,7 @@ namespace Ryujinx if (e.IsTerminating) { Logger.Shutdown(); - - DiscordClient.Dispose(); - } - } - - /// - /// Picks an audio output renderer supported on this machine - /// - /// An supported by this machine - private static IAalOutput InitializeAudioEngine() - { - if (SoundIoAudioOut.IsSupported) - { - return new SoundIoAudioOut(); - } - else if (OpenALAudioOut.IsSupported) - { - return new OpenALAudioOut(); - } - else - { - return new DummyAudioOut(); } } } -} +} \ No newline at end of file diff --git a/Ryujinx/RPsupported.dat b/Ryujinx/RPsupported.dat index ad2d715df0..bcce8b495a 100644 --- a/Ryujinx/RPsupported.dat +++ b/Ryujinx/RPsupported.dat @@ -2,10 +2,10 @@ 01000d700be88000 01000dc007e90000 01000e2003fa0000 -01002fc00c6d0000 0100225000fee000 010028d0045ce000 01002b30028f6000 +01002fc00c6d0000 010034e005c9c000 01004f8006a78000 010051f00ac5e000 @@ -15,12 +15,14 @@ 010065500b218000 010068f00aa78000 01006a800016e000 +010072800cbe8000 01007330027ee000 0100749009844000 01007a4008486000 010080b00ad66000 010094e00b52e000 01009aa000faa000 +01009b90006dc000 0100a4200a284000 0100a5c00d162000 0100ae000aebc000 @@ -31,8 +33,11 @@ 0100d6b00cd88000 0100d870045b6000 0100e0c00adac000 +0100e46006708000 0100e7200b272000 0100e9f00b882000 0100eab00605c000 0100efd00a4fa000 -0100f6a00a684000 \ No newline at end of file +0100f6a00a684000 +0100f9f00c696000 +051337133769a000 \ No newline at end of file diff --git a/Ryujinx/Ryujinx.csproj b/Ryujinx/Ryujinx.csproj index 80b03f46b3..763feec72b 100644 --- a/Ryujinx/Ryujinx.csproj +++ b/Ryujinx/Ryujinx.csproj @@ -18,8 +18,28 @@ false + + + + + + + + + + + + + + + + + + + + @@ -33,7 +53,10 @@ - + + PreserveNewest + + PreserveNewest diff --git a/Ryujinx/Theme.css b/Ryujinx/Theme.css new file mode 100644 index 0000000000..286e092c81 --- /dev/null +++ b/Ryujinx/Theme.css @@ -0,0 +1,4054 @@ +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +/* +widget text/foreground color */ +@define-color theme_fg_color white; +/* +text color for entries, views and content in general */ +@define-color theme_text_color white; +/* +widget base background color */ +@define-color theme_bg_color #292f34; +/* +text widgets and the like base background color */ +@define-color theme_base_color #292f34; +/* +base background color of selections */ +@define-color theme_selected_bg_color #FF5F57; +/* +text/foreground color of selections */ +@define-color theme_selected_fg_color white; +/* +base background color of insensitive widgets */ +@define-color insensitive_bg_color #252b2f; +/* +text foreground color of insensitive widgets */ +@define-color insensitive_fg_color rgba(232, 232, 232, 0.35); +/* +insensitive text widgets and the like base background color */ +@define-color insensitive_base_color rgba(232, 232, 232, 0.35); +/* +widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color white; +/* +text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color white; +/* +widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color #292f34; +/* +text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #292f34; +/* +base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color rgba(255, 95, 87, 0.5); +/* +text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color white; +/* +widgets main borders color */ +@define-color borders #5f6367; +/* +widgets main borders color on backdrop windows */ +@define-color unfocused_borders #5f6367; +/* +widgets main borders color insensitive */ +@define-color insensitive_borders rgba(86, 90, 94, 0.35); +/* +these are pretty self explicative */ +@define-color warning_color #e67e22; +@define-color error_color #e74c3c; +@define-color success_color #3498db; +@define-color content_view_bg #292f34; +* { + padding: 0; + -GtkToolButton-icon-spacing: 4; + -GtkTextView-error-underline-color: #e74c3c; + -GtkScrolled-window-overlay-scrolling: FALSE; + -GtkToolItemGroup-expander-size: 11; + -GtkExpander-expander-size: 16; + -GtkTreeView-expander-size: 11; + -GtkTreeView-horizontal-separator: 4; + -GtkWidget-text-handle-width: 20; + -GtkWidget-text-handle-height: 20; + -GtkDialog-button-spacing: 4; + -GtkDialog-action-area-border: 0; + -GtkStatusbar-shadow-type: none; + outline-width: 0px; } + +/*************** + * Base States * + ***************/ +* { + color: white +} + +.background { + color: white; + background-color: #292f34; } + .background:backdrop { + text-shadow: none; + -gtk-icon-shadow: none; + color: white; + background-color: #292f34; } + +/* + These wildcard seems unavoidable, need to investigate. + Wildcards are bad and troublesome, use them with care, + or better, just don't. + Everytime a wildcard is used a kitten dies, painfully. +*/ +*:disabled { + -gtk-icon-effect: dim; } + +.gtkstyle-fallback { + background-color: #292f34; + color: white; } + .gtkstyle-fallback:hover { + background-color: #3f4951; + color: white; } + .gtkstyle-fallback:active { + background-color: #131517; + color: white; } + .gtkstyle-fallback:disabled { + background-color: #252b2f; + color: rgba(232, 232, 232, 0.35); } + .gtkstyle-fallback:selected { + background-color: #FF5F57; + color: white; } + +.view text, +textview text, +.view { + color: white; + background-color: #292f34; } + .view text:backdrop, + textview text:backdrop, + .view:backdrop { + color: white; + background-color: #292f34; } + .view text:selected:focus, + textview text:selected:focus, .view text:selected, + textview text:selected, + .view:selected:focus, + .view:selected { + border-radius: 3px; } + +textview border { + background-color: #292f34; + background-image: image(#5f6367); + background-repeat: no-repeat; } + textview border:backdrop { + background-color: #292f34; } + textview border.bottom { + background-size: 100% 1px; + background-position: top; } + textview border.top { + background-size: 100% 1px; + background-position: bottom; } + textview border.left { + background-size: 1px 100%; + background-position: right; } + textview border.right { + background-size: 1px 100%; + background-position: left; } + +.rubberband, +rubberband, +flowbox rubberband, +treeview.view rubberband { + border: 1px solid #FF5F57; + background-color: rgba(255, 95, 87, 0.2); } + .rubberband:backdrop, + rubberband:backdrop, + treeview.view rubberband:backdrop { + border-color: #FF5F57; + background-color: rgba(255, 95, 87, 0.2); } + +flowbox flowboxchild { + padding: 3px; + border-radius: 3px; } + flowbox flowboxchild:selected { + outline-offset: 0px; } + +label.separator { + color: white; } + label.separator:backdrop { + color: white; } +label selection { + background-color: #FF5F57; + color: white; } +label:disabled { + color: rgba(232, 232, 232, 0.35); } + label:disabled:backdrop { + color: rgba(232, 232, 232, 0.35); } +label:backdrop { + color: white; } + +.dim-label, label.separator, +headerbar .subtitle { + opacity: 0.5; + text-shadow: none; } + +assistant .sidebar { + background-color: white; + border-top: 1px solid #5f6367; } + assistant .sidebar:backdrop { + background-color: white; + border-color: #5f6367; } +assistant.csd .sidebar { + border-top-style: none; } +assistant .sidebar label { + padding: 6px 12px; } +assistant .sidebar label.highlight { + background-color: #54595d; } + +.app-notification, +.app-notification.frame, .csd popover.background.touch-selection, .csd popover.background.magnifier, popover.background.touch-selection, popover.background.magnifier, .csd popover.background.osd, popover.background.osd, +.osd { + color: white; + border: 1px solid #5f6367; + background-color: rgba(41, 47, 52, 0.8); + background-clip: padding-box; + box-shadow: none; + text-shadow: none; + -gtk-icon-shadow: none; } + .app-notification:backdrop, popover.background.touch-selection:backdrop, popover.background.magnifier:backdrop, popover.background.osd:backdrop, + .osd:backdrop { + color: white; + background-color: rgba(41, 47, 52, 0.8); + -gtk-icon-shadow: none; } + +.view text:selected:focus, +textview text:selected:focus, .view text:selected, +textview text:selected, +.view:selected:focus, +.view:selected, .view text selection:focus, .view text selection, +textview text selection:focus, +textview text selection, flowbox flowboxchild:selected, spinbutton:not(.vertical) selection:focus, spinbutton:not(.vertical) selection, +entry selection:focus, +entry selection, row:selected, .sidebar:selected { + background-color: #FF5F57; + color: white; } + textview text:hover:selected:focus, .view text:hover:selected, + textview text:hover:selected, + .view:hover:selected, .view text selection:hover, + textview text selection:hover, flowbox flowboxchild:hover:selected, spinbutton:not(.vertical) selection:hover, + entry selection:hover, row:hover:selected, .sidebar:hover:selected { + background-color: #FF5F57; + color: white; } + textview text:backdrop:selected:focus, .view text:backdrop:selected, + textview text:backdrop:selected, + .view:backdrop:selected, .view text selection:backdrop, + textview text selection:backdrop, flowbox flowboxchild:backdrop:selected, label:backdrop selction, spinbutton:not(.vertical) selection:backdrop, + entry selection:backdrop, row:backdrop:selected, .sidebar:backdrop:selected { + background-color: rgba(255, 95, 87, 0.5); + color: #292f34; } + +.view text:selected:focus, +textview text:selected:focus, .view text:selected, +textview text:selected, +.view:selected:focus, +.view:selected, .view text selection:focus, .view text selection, +textview text selection:focus, +textview text selection, flowbox flowboxchild:selected, spinbutton:not(.vertical) selection:focus, spinbutton:not(.vertical) selection, +entry selection:focus, +entry selection, row:selected, .sidebar:selected { + background-color: #FF5F57; + border-radius: 0px; } + .view text:selected:focus, + textview text:selected:focus, .view text:selected, + textview text:selected, + .view:selected:focus, + .view:selected, .view text selection:focus, .view text selection, + textview text selection:focus, + textview text selection, flowbox flowboxchild:selected, spinbutton:not(.vertical) selection:focus, spinbutton:not(.vertical) selection, + entry selection:focus, + entry selection, row:selected, .sidebar:selected { + color: white; } + textview text:disabled:selected:focus, .view text:disabled:selected, + textview text:disabled:selected, + .view:disabled:selected, .view text selection:disabled, + textview text selection:disabled, flowbox flowboxchild:disabled:selected, label:disabled selection, spinbutton:not(.vertical) selection:disabled, + entry selection:disabled, row:disabled:selected, .sidebar:disabled:selected { + color: rgba(232, 232, 232, 0.35); } + textview text:backdrop:selected:focus, .view text:backdrop:selected, + textview text:backdrop:selected, + .view:backdrop:selected, .view text selection:backdrop, + textview text selection:backdrop, flowbox flowboxchild:backdrop:selected, label:backdrop selction, spinbutton:not(.vertical) selection:backdrop, + entry selection:backdrop, row:backdrop:selected, .sidebar:backdrop:selected { + color: white; } + .view text:backdrop:disabled:selected, + textview text:backdrop:disabled:selected, + .view:backdrop:disabled:selected, .view text selection:backdrop:disabled, + textview text selection:backdrop:disabled, flowbox flowboxchild:backdrop:disabled:selected, label:disabled selection:backdrop, label:backdrop selction:disabled, spinbutton:not(.vertical) selection:backdrop:disabled, + entry selection:backdrop:disabled, row:backdrop:disabled:selected, .sidebar:backdrop:disabled:selected { + color: rgba(232, 232, 232, 0.35); } + +/*********** + * Buttons * + ***********/ +@keyframes needs_attention { + from { + background-image: -gtk-gradient(radial, center center, 0, center center, 0.01, to(#FF5F57), to(transparent)); } + to { + background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(#FF5F57), to(transparent)); } } +notebook > header > tabs > arrow, .csd popover.background.touch-selection button, .csd popover.background.magnifier button, popover.background.touch-selection button, popover.background.magnifier button, +button, notebook > header > tabs > arrow.osd, +button.osd { + border: 1px solid; + border-radius: 3px; + padding: 4px 6px; + background-clip: border-box; + transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); + text-shadow: none; + -gtk-icon-shadow: none; + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #292f35, #282e32); } + notebook > header > tabs > arrow, button.sidebar-button, popover.background.touch-selection button.flat, popover.background.magnifier button.flat, + button.flat, notebook > header > tabs > arrow.osd, button.osd.sidebar-button { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + transition: none; } + notebook > header > tabs > arrow:hover, button.sidebar-button:hover, popover.background.touch-selection button.flat:hover, popover.background.magnifier button.flat:hover, + button.flat:hover, notebook > header > tabs > arrow.osd:hover { + transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); + transition-duration: 500ms; } + notebook > header > tabs > arrow:hover:active, button.sidebar-button:hover:active, + button.flat:hover:active { + transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); } + notebook > header > tabs > arrow:checked, button.sidebar-button:checked, popover.background.touch-selection button.flat:checked, popover.background.magnifier button.flat:checked, + button.flat:checked, notebook > header > tabs > arrow.osd:checked { + background-color: #5f6367; } + notebook > header > tabs > arrow:hover, popover.background.touch-selection button:hover, popover.background.magnifier button:hover, + button:hover, notebook > header > tabs > arrow.osd:hover { + color: white; + border-color: #FF5F57; + -gtk-icon-effect: none; } + notebook > header > tabs > arrow:active, popover.background.touch-selection button:active, popover.background.magnifier button:active, + button:active, notebook > header > tabs > arrow.osd:active, notebook > header > tabs > arrow:checked, popover.background.touch-selection button:checked, popover.background.magnifier button:checked, + button:checked, notebook > header > tabs > arrow.osd:checked { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); + transition-duration: 50ms; } + notebook > header > tabs > arrow:active:hover, popover.background.touch-selection button:active:hover, popover.background.magnifier button:active:hover, + button:active:hover, notebook > header > tabs > arrow:checked:hover, popover.background.touch-selection button:checked:hover, popover.background.magnifier button:checked:hover, + button:checked:hover { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + notebook > header > tabs > arrow:backdrop, popover.background.touch-selection button:backdrop, popover.background.magnifier button:backdrop, + button:backdrop, notebook > header > tabs > arrow.osd:backdrop { + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #292f35, #282e32); + -gtk-icon-effect: none; } + notebook > header > tabs > arrow:backdrop:active, popover.background.touch-selection button:backdrop:active, popover.background.magnifier button:backdrop:active, + button:backdrop:active, notebook > header > tabs > arrow:backdrop:checked, popover.background.touch-selection button:backdrop:checked, popover.background.magnifier button:backdrop:checked, + button:backdrop:checked { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + notebook > header > tabs > arrow:backdrop:disabled, popover.background.touch-selection button:backdrop:disabled, popover.background.magnifier button:backdrop:disabled, + button:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-image: linear-gradient(to bottom, #262b30, #24292e); } + notebook > header > tabs > arrow:backdrop:disabled > .label, popover.background.touch-selection button:backdrop:disabled > .label, popover.background.magnifier button:backdrop:disabled > .label, + button:backdrop:disabled > .label { + color: inherit; } + notebook > header > tabs > arrow:backdrop:disabled:active, + button:backdrop:disabled:active, notebook > header > tabs > arrow:backdrop:disabled:checked, + button:backdrop:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(24, 171, 142, 0.35); + background-image: linear-gradient(to bottom, rgba(255, 95, 87, 0.35), rgba(255, 95, 87, 0.35)); } + notebook > header > tabs > arrow:backdrop:disabled:active > .label, popover.background.touch-selection button:backdrop:disabled:active > .label, popover.background.magnifier button:backdrop:disabled:active > .label, + button:backdrop:disabled:active > .label, notebook > header > tabs > arrow:backdrop:disabled:checked > .label, popover.background.touch-selection button:backdrop:disabled:checked > .label, popover.background.magnifier button:backdrop:disabled:checked > .label, + button:backdrop:disabled:checked > .label { + color: inherit; } + notebook > header > tabs > arrow:backdrop, button.sidebar-button:backdrop, popover.background.touch-selection button.flat:backdrop, popover.background.magnifier button.flat:backdrop, + button.flat:backdrop, notebook > header > tabs > arrow.osd:backdrop { + -gtk-icon-effect: none; + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + color: white; } + notebook > header > tabs > arrow:disabled, button.sidebar-button:disabled, popover.background.touch-selection button.flat:disabled, popover.background.magnifier button.flat:disabled, + button.flat:disabled, notebook > header > tabs > arrow.osd:disabled { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + color: rgba(232, 232, 232, 0.35); } + notebook > header > tabs > arrow:backdrop:disabled, button.sidebar-button:backdrop:disabled, + button.flat:backdrop:disabled { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + color: rgba(232, 232, 232, 0.35); } + notebook > header > tabs > arrow:disabled, popover.background.touch-selection button:disabled, popover.background.magnifier button:disabled, + button:disabled, notebook > header > tabs > arrow.osd:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-image: linear-gradient(to bottom, #262b30, #24292e); } + notebook > header > tabs > arrow:disabled > .label, popover.background.touch-selection button:disabled > .label, popover.background.magnifier button:disabled > .label, + button:disabled > .label { + color: inherit; } + notebook > header > tabs > arrow:disabled:active, popover.background.touch-selection button:disabled:active, popover.background.magnifier button:disabled:active, + button:disabled:active, notebook > header > tabs > arrow:disabled:checked, popover.background.touch-selection button:disabled:checked, popover.background.magnifier button:disabled:checked, + button:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(24, 171, 142, 0.35); + background-image: linear-gradient(to bottom, rgba(255, 95, 87, 0.35), rgba(255, 95, 87, 0.35)); } + notebook > header > tabs > arrow:disabled:active > .label, popover.background.touch-selection button:disabled:active > .label, popover.background.magnifier button:disabled:active > .label, + button:disabled:active > .label, notebook > header > tabs > arrow:disabled:checked > .label, popover.background.touch-selection button:disabled:checked > .label, popover.background.magnifier button:disabled:checked > .label, + button:disabled:checked > .label { + color: inherit; } + notebook > header > tabs > arrow separator, .csd popover.background.touch-selection button separator, .csd popover.background.magnifier button separator, popover.background.touch-selection button separator, popover.background.magnifier button separator, + button separator, notebook > header > tabs > arrow.osd separator, + button.osd separator { + background-color: transparent; + background-image: none; + color: transparent; } + +notebook > header > tabs > arrow.image-button, popover.background.touch-selection button.image-button, popover.background.magnifier button.image-button, +button.image-button { + min-width: 16px; + padding: 6px; } +notebook > header > tabs > arrow.text-button, popover.background.touch-selection button.text-button, popover.background.magnifier button.text-button, +button.text-button { + padding-left: 6px; + padding-right: 6px; } +notebook > header > tabs > arrow.text-button.image-button, popover.background.touch-selection button.text-button.image-button, popover.background.magnifier button.text-button.image-button, +button.text-button.image-button { + padding-left: 6px; + padding-right: 6px; } + notebook > header > tabs > arrow.text-button.image-button label, popover.background.touch-selection button.text-button.image-button label, popover.background.magnifier button.text-button.image-button label, + button.text-button.image-button label { + padding-left: 6px; + padding-right: 6px; } +row:selected popover.background.touch-selection button, popover.background.touch-selection row:selected button, row:selected popover.background.magnifier button, popover.background.magnifier row:selected button, row:selected +button { + border-color: #FF5F57; } + row:selected popover.background.touch-selection button.flat:not(:active):not(:checked):not(:hover):not(disabled), popover.background.touch-selection row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled), row:selected popover.background.magnifier button.flat:not(:active):not(:checked):not(:hover):not(disabled), popover.background.magnifier row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled), row:selected + button.flat:not(:active):not(:checked):not(:hover):not(disabled) { + color: white; + border-color: transparent; } + row:selected popover.background.touch-selection button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop, popover.background.touch-selection row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop, row:selected popover.background.magnifier button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop, popover.background.magnifier row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop, row:selected + button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop { + color: white; } +popover.background.touch-selection button.suggested-action, popover.background.magnifier button.suggested-action, popover.background.touch-selection button.suggested-action.osd button, popover.background.magnifier button.suggested-action.osd button, +button.suggested-action, +button.suggested-action.osd popover.background.touch-selection button, +popover.background.touch-selection button.suggested-action.osd button, +button.suggested-action.osd popover.background.magnifier button, +popover.background.magnifier button.suggested-action.osd button, popover.background.touch-selection button.suggested-action.osd +button, popover.background.magnifier button.suggested-action.osd +button, +button.suggested-action.osd +button { + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); + text-shadow: none; + -gtk-icon-shadow: none; + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + popover.background.touch-selection button.suggested-action.flat, popover.background.magnifier button.suggested-action.flat, popover.background.touch-selection button.suggested-action.osd button.flat, popover.background.magnifier button.suggested-action.osd button.flat, + button.suggested-action.flat, + button.suggested-action.osd popover.background.touch-selection button.flat, + popover.background.touch-selection button.suggested-action.osd button.flat, + button.suggested-action.osd popover.background.magnifier button.flat, + popover.background.magnifier button.suggested-action.osd button.flat, popover.background.touch-selection button.suggested-action.osd + button.flat, popover.background.magnifier button.suggested-action.osd + button.flat, + button.suggested-action.osd + button.flat { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + color: #FF5F57; } + popover.background.touch-selection button.suggested-action:hover, popover.background.magnifier button.suggested-action:hover, popover.background.touch-selection button.suggested-action.osd button:hover, popover.background.magnifier button.suggested-action.osd button:hover, + button.suggested-action:hover, + button.suggested-action.osd popover.background.touch-selection button:hover, + popover.background.touch-selection button.suggested-action.osd button:hover, + button.suggested-action.osd popover.background.magnifier button:hover, + popover.background.magnifier button.suggested-action.osd button:hover, popover.background.touch-selection button.suggested-action.osd + button:hover, popover.background.magnifier button.suggested-action.osd + button:hover, + button.suggested-action.osd + button:hover { + color: white; + border-color: #FF5F57; } + popover.background.touch-selection button.suggested-action:active, popover.background.magnifier button.suggested-action:active, popover.background.touch-selection button.suggested-action:checked, popover.background.magnifier button.suggested-action:checked, popover.background.touch-selection button.suggested-action.osd button:active, popover.background.magnifier button.suggested-action.osd button:active, popover.background.touch-selection button.suggested-action.osd button:checked, popover.background.magnifier button.suggested-action.osd button:checked, + button.suggested-action:active, + button.suggested-action:checked, + button.suggested-action.osd popover.background.touch-selection button:active, + popover.background.touch-selection button.suggested-action.osd button:active, + button.suggested-action.osd popover.background.magnifier button:active, + popover.background.magnifier button.suggested-action.osd button:active, + button.suggested-action.osd popover.background.touch-selection button:checked, + popover.background.touch-selection button.suggested-action.osd button:checked, + button.suggested-action.osd popover.background.magnifier button:checked, + popover.background.magnifier button.suggested-action.osd button:checked, popover.background.touch-selection button.suggested-action.osd + button:active, popover.background.magnifier button.suggested-action.osd + button:active, popover.background.touch-selection button.suggested-action.osd + button:checked, popover.background.magnifier button.suggested-action.osd + button:checked, + button.suggested-action.osd + button:active, + button.suggested-action.osd + button:checked { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + popover.background.touch-selection button.suggested-action:backdrop, popover.background.magnifier button.suggested-action:backdrop, popover.background.touch-selection button.suggested-action.flat:backdrop, popover.background.magnifier button.suggested-action.flat:backdrop, popover.background.touch-selection button.suggested-action.osd button:backdrop, popover.background.magnifier button.suggested-action.osd button:backdrop, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop, popover.background.magnifier button.suggested-action.osd button.flat:backdrop, + button.suggested-action:backdrop, + button.suggested-action.flat:backdrop, + button.suggested-action.osd popover.background.touch-selection button:backdrop, + popover.background.touch-selection button.suggested-action.osd button:backdrop, + button.suggested-action.osd popover.background.magnifier button:backdrop, + popover.background.magnifier button.suggested-action.osd button:backdrop, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop, popover.background.touch-selection button.suggested-action.osd + button:backdrop, popover.background.magnifier button.suggested-action.osd + button:backdrop, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop, + button.suggested-action.osd + button:backdrop, + button.suggested-action.osd + button.flat:backdrop { + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + popover.background.touch-selection button.suggested-action:backdrop:active, popover.background.magnifier button.suggested-action:backdrop:active, popover.background.touch-selection button.suggested-action:backdrop:checked, popover.background.magnifier button.suggested-action:backdrop:checked, popover.background.touch-selection button.suggested-action.flat:backdrop:active, popover.background.magnifier button.suggested-action.flat:backdrop:active, popover.background.touch-selection button.suggested-action.flat:backdrop:checked, popover.background.magnifier button.suggested-action.flat:backdrop:checked, popover.background.touch-selection button.suggested-action.osd button:backdrop:active, popover.background.magnifier button.suggested-action.osd button:backdrop:active, popover.background.touch-selection button.suggested-action.osd button:backdrop:checked, popover.background.magnifier button.suggested-action.osd button:backdrop:checked, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:active, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:active, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:checked, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:checked, + button.suggested-action:backdrop:active, + button.suggested-action:backdrop:checked, + button.suggested-action.flat:backdrop:active, + button.suggested-action.flat:backdrop:checked, + button.suggested-action.osd popover.background.touch-selection button:backdrop:active, + popover.background.touch-selection button.suggested-action.osd button:backdrop:active, + button.suggested-action.osd popover.background.magnifier button:backdrop:active, + popover.background.magnifier button.suggested-action.osd button:backdrop:active, + button.suggested-action.osd popover.background.touch-selection button:backdrop:checked, + popover.background.touch-selection button.suggested-action.osd button:backdrop:checked, + button.suggested-action.osd popover.background.magnifier button:backdrop:checked, + popover.background.magnifier button.suggested-action.osd button:backdrop:checked, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:active, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:active, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:active, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:active, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:checked, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:checked, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:checked, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:checked, popover.background.touch-selection button.suggested-action.osd + button:backdrop:active, popover.background.magnifier button.suggested-action.osd + button:backdrop:active, popover.background.touch-selection button.suggested-action.osd + button:backdrop:checked, popover.background.magnifier button.suggested-action.osd + button:backdrop:checked, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:active, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:active, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:checked, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:checked, + button.suggested-action.osd + button:backdrop:active, + button.suggested-action.osd + button:backdrop:checked, + button.suggested-action.osd + button.flat:backdrop:active, + button.suggested-action.osd + button.flat:backdrop:checked { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + popover.background.touch-selection button.suggested-action:backdrop:disabled, popover.background.magnifier button.suggested-action:backdrop:disabled, popover.background.touch-selection button.suggested-action.flat:backdrop:disabled, popover.background.magnifier button.suggested-action.flat:backdrop:disabled, popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled, popover.background.magnifier button.suggested-action.osd button:backdrop:disabled, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled, + button.suggested-action:backdrop:disabled, + button.suggested-action.flat:backdrop:disabled, + button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled, + popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled, + button.suggested-action.osd popover.background.magnifier button:backdrop:disabled, + popover.background.magnifier button.suggested-action.osd button:backdrop:disabled, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled, popover.background.touch-selection button.suggested-action.osd + button:backdrop:disabled, popover.background.magnifier button.suggested-action.osd + button:backdrop:disabled, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:disabled, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:disabled, + button.suggested-action.osd + button:backdrop:disabled, + button.suggested-action.osd + button.flat:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-image: linear-gradient(to bottom, #262b30, #24292e); } + popover.background.touch-selection button.suggested-action:backdrop:disabled > .label, popover.background.magnifier button.suggested-action:backdrop:disabled > .label, popover.background.touch-selection button.suggested-action.flat:backdrop:disabled > .label, popover.background.magnifier button.suggested-action.flat:backdrop:disabled > .label, popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button:backdrop:disabled > .label, popover.background.magnifier button.suggested-action.osd button:backdrop:disabled > .label, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled > .label, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled > .label, + button.suggested-action:backdrop:disabled > .label, + button.suggested-action.flat:backdrop:disabled > .label, + button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled > .label, + popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled > .label, + button.suggested-action.osd popover.background.magnifier button:backdrop:disabled > .label, + popover.background.magnifier button.suggested-action.osd button:backdrop:disabled > .label, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled > .label, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled > .label, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled > .label, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled > .label, popover.background.touch-selection button.suggested-action.osd + button:backdrop:disabled > .label, popover.background.magnifier button.suggested-action.osd + button:backdrop:disabled > .label, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:disabled > .label, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:disabled > .label, + button.suggested-action.osd + button:backdrop:disabled > .label, + button.suggested-action.osd + button.flat:backdrop:disabled > .label { + color: inherit; } + popover.background.touch-selection button.suggested-action:backdrop:disabled:active, popover.background.magnifier button.suggested-action:backdrop:disabled:active, popover.background.touch-selection button.suggested-action:backdrop:disabled:checked, popover.background.magnifier button.suggested-action:backdrop:disabled:checked, popover.background.touch-selection button.suggested-action.flat:backdrop:disabled:active, popover.background.magnifier button.suggested-action.flat:backdrop:disabled:active, popover.background.touch-selection button.suggested-action.flat:backdrop:disabled:checked, popover.background.magnifier button.suggested-action.flat:backdrop:disabled:checked, popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:active, popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:active, popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:checked, popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:checked, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:active, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:active, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:checked, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:checked, + button.suggested-action:backdrop:disabled:active, + button.suggested-action:backdrop:disabled:checked, + button.suggested-action.flat:backdrop:disabled:active, + button.suggested-action.flat:backdrop:disabled:checked, + button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled:active, + popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:active, + button.suggested-action.osd popover.background.magnifier button:backdrop:disabled:active, + popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:active, + button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled:checked, + popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:checked, + button.suggested-action.osd popover.background.magnifier button:backdrop:disabled:checked, + popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:checked, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled:active, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:active, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled:active, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:active, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled:checked, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:checked, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled:checked, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:checked, popover.background.touch-selection button.suggested-action.osd + button:backdrop:disabled:active, popover.background.magnifier button.suggested-action.osd + button:backdrop:disabled:active, popover.background.touch-selection button.suggested-action.osd + button:backdrop:disabled:checked, popover.background.magnifier button.suggested-action.osd + button:backdrop:disabled:checked, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:disabled:active, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:disabled:active, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:disabled:checked, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:disabled:checked, + button.suggested-action.osd + button:backdrop:disabled:active, + button.suggested-action.osd + button:backdrop:disabled:checked, + button.suggested-action.osd + button.flat:backdrop:disabled:active, + button.suggested-action.osd + button.flat:backdrop:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(24, 171, 142, 0.35); + background-image: linear-gradient(to bottom, rgba(255, 95, 87, 0.35), rgba(255, 95, 87, 0.35)); } + popover.background.touch-selection button.suggested-action:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action:backdrop:disabled:checked > .label, popover.background.touch-selection button.suggested-action.flat:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action.flat:backdrop:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:checked > .label, + button.suggested-action:backdrop:disabled:active > .label, + button.suggested-action:backdrop:disabled:checked > .label, + button.suggested-action.flat:backdrop:disabled:active > .label, + button.suggested-action.flat:backdrop:disabled:checked > .label, + button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled:active > .label, + popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:active > .label, + button.suggested-action.osd popover.background.magnifier button:backdrop:disabled:active > .label, + popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:active > .label, + button.suggested-action.osd popover.background.touch-selection button:backdrop:disabled:checked > .label, + popover.background.touch-selection button.suggested-action.osd button:backdrop:disabled:checked > .label, + button.suggested-action.osd popover.background.magnifier button:backdrop:disabled:checked > .label, + popover.background.magnifier button.suggested-action.osd button:backdrop:disabled:checked > .label, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled:active > .label, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:active > .label, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled:active > .label, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:active > .label, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled:checked > .label, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled:checked > .label, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled:checked > .label, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd + button:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action.osd + button:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd + button:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd + button:backdrop:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:disabled:active > .label, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:disabled:checked > .label, + button.suggested-action.osd + button:backdrop:disabled:active > .label, + button.suggested-action.osd + button:backdrop:disabled:checked > .label, + button.suggested-action.osd + button.flat:backdrop:disabled:active > .label, + button.suggested-action.osd + button.flat:backdrop:disabled:checked > .label { + color: inherit; } + popover.background.touch-selection button.suggested-action.flat:backdrop, popover.background.magnifier button.suggested-action.flat:backdrop, popover.background.touch-selection button.suggested-action.flat:disabled, popover.background.magnifier button.suggested-action.flat:disabled, popover.background.touch-selection button.suggested-action.flat:backdrop:disabled, popover.background.magnifier button.suggested-action.flat:backdrop:disabled, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop, popover.background.magnifier button.suggested-action.osd button.flat:backdrop, popover.background.touch-selection button.suggested-action.osd button.flat:disabled, popover.background.magnifier button.suggested-action.osd button.flat:disabled, popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled, popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled, + button.suggested-action.flat:backdrop, + button.suggested-action.flat:disabled, + button.suggested-action.flat:backdrop:disabled, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop, + button.suggested-action.osd popover.background.touch-selection button.flat:disabled, + popover.background.touch-selection button.suggested-action.osd button.flat:disabled, + button.suggested-action.osd popover.background.magnifier button.flat:disabled, + popover.background.magnifier button.suggested-action.osd button.flat:disabled, + button.suggested-action.osd popover.background.touch-selection button.flat:backdrop:disabled, + popover.background.touch-selection button.suggested-action.osd button.flat:backdrop:disabled, + button.suggested-action.osd popover.background.magnifier button.flat:backdrop:disabled, + popover.background.magnifier button.suggested-action.osd button.flat:backdrop:disabled, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop, popover.background.touch-selection button.suggested-action.osd + button.flat:disabled, popover.background.magnifier button.suggested-action.osd + button.flat:disabled, popover.background.touch-selection button.suggested-action.osd + button.flat:backdrop:disabled, popover.background.magnifier button.suggested-action.osd + button.flat:backdrop:disabled, + button.suggested-action.osd + button.flat:backdrop, + button.suggested-action.osd + button.flat:disabled, + button.suggested-action.osd + button.flat:backdrop:disabled { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + color: rgba(255, 95, 87, 0.8); } + popover.background.touch-selection button.suggested-action:disabled, popover.background.magnifier button.suggested-action:disabled, popover.background.touch-selection button.suggested-action.osd button:disabled, popover.background.magnifier button.suggested-action.osd button:disabled, + button.suggested-action:disabled, + button.suggested-action.osd popover.background.touch-selection button:disabled, + popover.background.touch-selection button.suggested-action.osd button:disabled, + button.suggested-action.osd popover.background.magnifier button:disabled, + popover.background.magnifier button.suggested-action.osd button:disabled, popover.background.touch-selection button.suggested-action.osd + button:disabled, popover.background.magnifier button.suggested-action.osd + button:disabled, + button.suggested-action.osd + button:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-image: linear-gradient(to bottom, #262b30, #24292e); } + popover.background.touch-selection button.suggested-action:disabled > .label, popover.background.magnifier button.suggested-action:disabled > .label, popover.background.touch-selection button.suggested-action.osd button:disabled > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button:disabled > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button:disabled > .label, popover.background.magnifier button.suggested-action.osd button:disabled > .label, + button.suggested-action:disabled > .label, + button.suggested-action.osd popover.background.touch-selection button:disabled > .label, + popover.background.touch-selection button.suggested-action.osd button:disabled > .label, + button.suggested-action.osd popover.background.magnifier button:disabled > .label, + popover.background.magnifier button.suggested-action.osd button:disabled > .label, popover.background.touch-selection button.suggested-action.osd + button:disabled > .label, popover.background.magnifier button.suggested-action.osd + button:disabled > .label, + button.suggested-action.osd + button:disabled > .label { + color: inherit; } + popover.background.touch-selection button.suggested-action:disabled:active, popover.background.magnifier button.suggested-action:disabled:active, popover.background.touch-selection button.suggested-action:disabled:checked, popover.background.magnifier button.suggested-action:disabled:checked, popover.background.touch-selection button.suggested-action.osd button:disabled:active, popover.background.magnifier button.suggested-action.osd button:disabled:active, popover.background.touch-selection button.suggested-action.osd button:disabled:checked, popover.background.magnifier button.suggested-action.osd button:disabled:checked, + button.suggested-action:disabled:active, + button.suggested-action:disabled:checked, + button.suggested-action.osd popover.background.touch-selection button:disabled:active, + popover.background.touch-selection button.suggested-action.osd button:disabled:active, + button.suggested-action.osd popover.background.magnifier button:disabled:active, + popover.background.magnifier button.suggested-action.osd button:disabled:active, + button.suggested-action.osd popover.background.touch-selection button:disabled:checked, + popover.background.touch-selection button.suggested-action.osd button:disabled:checked, + button.suggested-action.osd popover.background.magnifier button:disabled:checked, + popover.background.magnifier button.suggested-action.osd button:disabled:checked, popover.background.touch-selection button.suggested-action.osd + button:disabled:active, popover.background.magnifier button.suggested-action.osd + button:disabled:active, popover.background.touch-selection button.suggested-action.osd + button:disabled:checked, popover.background.magnifier button.suggested-action.osd + button:disabled:checked, + button.suggested-action.osd + button:disabled:active, + button.suggested-action.osd + button:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(24, 171, 142, 0.35); + background-image: linear-gradient(to bottom, rgba(255, 95, 87, 0.35), rgba(255, 95, 87, 0.35)); } + popover.background.touch-selection button.suggested-action:disabled:active > .label, popover.background.magnifier button.suggested-action:disabled:active > .label, popover.background.touch-selection button.suggested-action:disabled:checked > .label, popover.background.magnifier button.suggested-action:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd button:disabled:active > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button:disabled:active > .label, popover.background.magnifier button.suggested-action.osd button:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd button:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd popover.background.touch-selection button:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd popover.background.magnifier button:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd button:disabled:checked > .label, + button.suggested-action:disabled:active > .label, + button.suggested-action:disabled:checked > .label, + button.suggested-action.osd popover.background.touch-selection button:disabled:active > .label, + popover.background.touch-selection button.suggested-action.osd button:disabled:active > .label, + button.suggested-action.osd popover.background.magnifier button:disabled:active > .label, + popover.background.magnifier button.suggested-action.osd button:disabled:active > .label, + button.suggested-action.osd popover.background.touch-selection button:disabled:checked > .label, + popover.background.touch-selection button.suggested-action.osd button:disabled:checked > .label, + button.suggested-action.osd popover.background.magnifier button:disabled:checked > .label, + popover.background.magnifier button.suggested-action.osd button:disabled:checked > .label, popover.background.touch-selection button.suggested-action.osd + button:disabled:active > .label, popover.background.magnifier button.suggested-action.osd + button:disabled:active > .label, popover.background.touch-selection button.suggested-action.osd + button:disabled:checked > .label, popover.background.magnifier button.suggested-action.osd + button:disabled:checked > .label, + button.suggested-action.osd + button:disabled:active > .label, + button.suggested-action.osd + button:disabled:checked > .label { + color: inherit; } +popover.background.touch-selection button.destructive-action, popover.background.magnifier button.destructive-action, popover.background.touch-selection button.destructive-action.osd button, popover.background.magnifier button.destructive-action.osd button, +button.destructive-action, +button.destructive-action.osd popover.background.touch-selection button, +popover.background.touch-selection button.destructive-action.osd button, +button.destructive-action.osd popover.background.magnifier button, +popover.background.magnifier button.destructive-action.osd button, popover.background.touch-selection button.destructive-action.osd +button, popover.background.magnifier button.destructive-action.osd +button, +button.destructive-action.osd +button { + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); + text-shadow: none; + -gtk-icon-shadow: none; + color: white; + border-color: #e74c3c; + background-image: linear-gradient(to bottom, #e74e3f, #e64534); } + popover.background.touch-selection button.destructive-action.flat, popover.background.magnifier button.destructive-action.flat, popover.background.touch-selection button.destructive-action.osd button.flat, popover.background.magnifier button.destructive-action.osd button.flat, + button.destructive-action.flat, + button.destructive-action.osd popover.background.touch-selection button.flat, + popover.background.touch-selection button.destructive-action.osd button.flat, + button.destructive-action.osd popover.background.magnifier button.flat, + popover.background.magnifier button.destructive-action.osd button.flat, popover.background.touch-selection button.destructive-action.osd + button.flat, popover.background.magnifier button.destructive-action.osd + button.flat, + button.destructive-action.osd + button.flat { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + color: #e74c3c; } + popover.background.touch-selection button.destructive-action:hover, popover.background.magnifier button.destructive-action:hover, popover.background.touch-selection button.destructive-action.osd button:hover, popover.background.magnifier button.destructive-action.osd button:hover, + button.destructive-action:hover, + button.destructive-action.osd popover.background.touch-selection button:hover, + popover.background.touch-selection button.destructive-action.osd button:hover, + button.destructive-action.osd popover.background.magnifier button:hover, + popover.background.magnifier button.destructive-action.osd button:hover, popover.background.touch-selection button.destructive-action.osd + button:hover, popover.background.magnifier button.destructive-action.osd + button:hover, + button.destructive-action.osd + button:hover { + color: white; + border-color: #e74c3c; } + popover.background.touch-selection button.destructive-action:active, popover.background.magnifier button.destructive-action:active, popover.background.touch-selection button.destructive-action:checked, popover.background.magnifier button.destructive-action:checked, popover.background.touch-selection button.destructive-action.osd button:active, popover.background.magnifier button.destructive-action.osd button:active, popover.background.touch-selection button.destructive-action.osd button:checked, popover.background.magnifier button.destructive-action.osd button:checked, + button.destructive-action:active, + button.destructive-action:checked, + button.destructive-action.osd popover.background.touch-selection button:active, + popover.background.touch-selection button.destructive-action.osd button:active, + button.destructive-action.osd popover.background.magnifier button:active, + popover.background.magnifier button.destructive-action.osd button:active, + button.destructive-action.osd popover.background.touch-selection button:checked, + popover.background.touch-selection button.destructive-action.osd button:checked, + button.destructive-action.osd popover.background.magnifier button:checked, + popover.background.magnifier button.destructive-action.osd button:checked, popover.background.touch-selection button.destructive-action.osd + button:active, popover.background.magnifier button.destructive-action.osd + button:active, popover.background.touch-selection button.destructive-action.osd + button:checked, popover.background.magnifier button.destructive-action.osd + button:checked, + button.destructive-action.osd + button:active, + button.destructive-action.osd + button:checked { + color: white; + border-color: #e74c3c; + background-image: linear-gradient(to bottom, #e85344, #e43624); } + popover.background.touch-selection button.destructive-action:backdrop, popover.background.magnifier button.destructive-action:backdrop, popover.background.touch-selection button.destructive-action.flat:backdrop, popover.background.magnifier button.destructive-action.flat:backdrop, popover.background.touch-selection button.destructive-action.osd button:backdrop, popover.background.magnifier button.destructive-action.osd button:backdrop, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop, popover.background.magnifier button.destructive-action.osd button.flat:backdrop, + button.destructive-action:backdrop, + button.destructive-action.flat:backdrop, + button.destructive-action.osd popover.background.touch-selection button:backdrop, + popover.background.touch-selection button.destructive-action.osd button:backdrop, + button.destructive-action.osd popover.background.magnifier button:backdrop, + popover.background.magnifier button.destructive-action.osd button:backdrop, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop, popover.background.touch-selection button.destructive-action.osd + button:backdrop, popover.background.magnifier button.destructive-action.osd + button:backdrop, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop, + button.destructive-action.osd + button:backdrop, + button.destructive-action.osd + button.flat:backdrop { + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #e74e3f, #e64534); } + popover.background.touch-selection button.destructive-action:backdrop:active, popover.background.magnifier button.destructive-action:backdrop:active, popover.background.touch-selection button.destructive-action:backdrop:checked, popover.background.magnifier button.destructive-action:backdrop:checked, popover.background.touch-selection button.destructive-action.flat:backdrop:active, popover.background.magnifier button.destructive-action.flat:backdrop:active, popover.background.touch-selection button.destructive-action.flat:backdrop:checked, popover.background.magnifier button.destructive-action.flat:backdrop:checked, popover.background.touch-selection button.destructive-action.osd button:backdrop:active, popover.background.magnifier button.destructive-action.osd button:backdrop:active, popover.background.touch-selection button.destructive-action.osd button:backdrop:checked, popover.background.magnifier button.destructive-action.osd button:backdrop:checked, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:active, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:active, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:checked, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:checked, + button.destructive-action:backdrop:active, + button.destructive-action:backdrop:checked, + button.destructive-action.flat:backdrop:active, + button.destructive-action.flat:backdrop:checked, + button.destructive-action.osd popover.background.touch-selection button:backdrop:active, + popover.background.touch-selection button.destructive-action.osd button:backdrop:active, + button.destructive-action.osd popover.background.magnifier button:backdrop:active, + popover.background.magnifier button.destructive-action.osd button:backdrop:active, + button.destructive-action.osd popover.background.touch-selection button:backdrop:checked, + popover.background.touch-selection button.destructive-action.osd button:backdrop:checked, + button.destructive-action.osd popover.background.magnifier button:backdrop:checked, + popover.background.magnifier button.destructive-action.osd button:backdrop:checked, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:active, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:active, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:active, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:active, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:checked, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:checked, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:checked, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:checked, popover.background.touch-selection button.destructive-action.osd + button:backdrop:active, popover.background.magnifier button.destructive-action.osd + button:backdrop:active, popover.background.touch-selection button.destructive-action.osd + button:backdrop:checked, popover.background.magnifier button.destructive-action.osd + button:backdrop:checked, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:active, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:active, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:checked, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:checked, + button.destructive-action.osd + button:backdrop:active, + button.destructive-action.osd + button:backdrop:checked, + button.destructive-action.osd + button.flat:backdrop:active, + button.destructive-action.osd + button.flat:backdrop:checked { + color: white; + border-color: #e74c3c; + background-image: linear-gradient(to bottom, #e85344, #e43624); } + popover.background.touch-selection button.destructive-action:backdrop:disabled, popover.background.magnifier button.destructive-action:backdrop:disabled, popover.background.touch-selection button.destructive-action.flat:backdrop:disabled, popover.background.magnifier button.destructive-action.flat:backdrop:disabled, popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled, popover.background.magnifier button.destructive-action.osd button:backdrop:disabled, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled, + button.destructive-action:backdrop:disabled, + button.destructive-action.flat:backdrop:disabled, + button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled, + popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled, + button.destructive-action.osd popover.background.magnifier button:backdrop:disabled, + popover.background.magnifier button.destructive-action.osd button:backdrop:disabled, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled, popover.background.touch-selection button.destructive-action.osd + button:backdrop:disabled, popover.background.magnifier button.destructive-action.osd + button:backdrop:disabled, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:disabled, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:disabled, + button.destructive-action.osd + button:backdrop:disabled, + button.destructive-action.osd + button.flat:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-image: linear-gradient(to bottom, #262b30, #24292e); } + popover.background.touch-selection button.destructive-action:backdrop:disabled > .label, popover.background.magnifier button.destructive-action:backdrop:disabled > .label, popover.background.touch-selection button.destructive-action.flat:backdrop:disabled > .label, popover.background.magnifier button.destructive-action.flat:backdrop:disabled > .label, popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button:backdrop:disabled > .label, popover.background.magnifier button.destructive-action.osd button:backdrop:disabled > .label, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled > .label, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled > .label, + button.destructive-action:backdrop:disabled > .label, + button.destructive-action.flat:backdrop:disabled > .label, + button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled > .label, + popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled > .label, + button.destructive-action.osd popover.background.magnifier button:backdrop:disabled > .label, + popover.background.magnifier button.destructive-action.osd button:backdrop:disabled > .label, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled > .label, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled > .label, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled > .label, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled > .label, popover.background.touch-selection button.destructive-action.osd + button:backdrop:disabled > .label, popover.background.magnifier button.destructive-action.osd + button:backdrop:disabled > .label, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:disabled > .label, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:disabled > .label, + button.destructive-action.osd + button:backdrop:disabled > .label, + button.destructive-action.osd + button.flat:backdrop:disabled > .label { + color: inherit; } + popover.background.touch-selection button.destructive-action:backdrop:disabled:active, popover.background.magnifier button.destructive-action:backdrop:disabled:active, popover.background.touch-selection button.destructive-action:backdrop:disabled:checked, popover.background.magnifier button.destructive-action:backdrop:disabled:checked, popover.background.touch-selection button.destructive-action.flat:backdrop:disabled:active, popover.background.magnifier button.destructive-action.flat:backdrop:disabled:active, popover.background.touch-selection button.destructive-action.flat:backdrop:disabled:checked, popover.background.magnifier button.destructive-action.flat:backdrop:disabled:checked, popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:active, popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:active, popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:checked, popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:checked, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:active, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:active, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:checked, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:checked, + button.destructive-action:backdrop:disabled:active, + button.destructive-action:backdrop:disabled:checked, + button.destructive-action.flat:backdrop:disabled:active, + button.destructive-action.flat:backdrop:disabled:checked, + button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled:active, + popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:active, + button.destructive-action.osd popover.background.magnifier button:backdrop:disabled:active, + popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:active, + button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled:checked, + popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:checked, + button.destructive-action.osd popover.background.magnifier button:backdrop:disabled:checked, + popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:checked, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled:active, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:active, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled:active, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:active, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled:checked, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:checked, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled:checked, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:checked, popover.background.touch-selection button.destructive-action.osd + button:backdrop:disabled:active, popover.background.magnifier button.destructive-action.osd + button:backdrop:disabled:active, popover.background.touch-selection button.destructive-action.osd + button:backdrop:disabled:checked, popover.background.magnifier button.destructive-action.osd + button:backdrop:disabled:checked, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:disabled:active, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:disabled:active, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:disabled:checked, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:disabled:checked, + button.destructive-action.osd + button:backdrop:disabled:active, + button.destructive-action.osd + button:backdrop:disabled:checked, + button.destructive-action.osd + button.flat:backdrop:disabled:active, + button.destructive-action.osd + button.flat:backdrop:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(228, 54, 36, 0.35); + background-image: linear-gradient(to bottom, rgba(229, 61, 44, 0.35), rgba(214, 44, 26, 0.35)); } + popover.background.touch-selection button.destructive-action:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action:backdrop:disabled:checked > .label, popover.background.touch-selection button.destructive-action.flat:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action.flat:backdrop:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:checked > .label, + button.destructive-action:backdrop:disabled:active > .label, + button.destructive-action:backdrop:disabled:checked > .label, + button.destructive-action.flat:backdrop:disabled:active > .label, + button.destructive-action.flat:backdrop:disabled:checked > .label, + button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled:active > .label, + popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:active > .label, + button.destructive-action.osd popover.background.magnifier button:backdrop:disabled:active > .label, + popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:active > .label, + button.destructive-action.osd popover.background.touch-selection button:backdrop:disabled:checked > .label, + popover.background.touch-selection button.destructive-action.osd button:backdrop:disabled:checked > .label, + button.destructive-action.osd popover.background.magnifier button:backdrop:disabled:checked > .label, + popover.background.magnifier button.destructive-action.osd button:backdrop:disabled:checked > .label, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled:active > .label, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:active > .label, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled:active > .label, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:active > .label, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled:checked > .label, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled:checked > .label, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled:checked > .label, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd + button:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action.osd + button:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd + button:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd + button:backdrop:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:disabled:active > .label, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:disabled:checked > .label, + button.destructive-action.osd + button:backdrop:disabled:active > .label, + button.destructive-action.osd + button:backdrop:disabled:checked > .label, + button.destructive-action.osd + button.flat:backdrop:disabled:active > .label, + button.destructive-action.osd + button.flat:backdrop:disabled:checked > .label { + color: inherit; } + popover.background.touch-selection button.destructive-action.flat:backdrop, popover.background.magnifier button.destructive-action.flat:backdrop, popover.background.touch-selection button.destructive-action.flat:disabled, popover.background.magnifier button.destructive-action.flat:disabled, popover.background.touch-selection button.destructive-action.flat:backdrop:disabled, popover.background.magnifier button.destructive-action.flat:backdrop:disabled, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop, popover.background.magnifier button.destructive-action.osd button.flat:backdrop, popover.background.touch-selection button.destructive-action.osd button.flat:disabled, popover.background.magnifier button.destructive-action.osd button.flat:disabled, popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled, popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled, + button.destructive-action.flat:backdrop, + button.destructive-action.flat:disabled, + button.destructive-action.flat:backdrop:disabled, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop, + button.destructive-action.osd popover.background.touch-selection button.flat:disabled, + popover.background.touch-selection button.destructive-action.osd button.flat:disabled, + button.destructive-action.osd popover.background.magnifier button.flat:disabled, + popover.background.magnifier button.destructive-action.osd button.flat:disabled, + button.destructive-action.osd popover.background.touch-selection button.flat:backdrop:disabled, + popover.background.touch-selection button.destructive-action.osd button.flat:backdrop:disabled, + button.destructive-action.osd popover.background.magnifier button.flat:backdrop:disabled, + popover.background.magnifier button.destructive-action.osd button.flat:backdrop:disabled, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop, popover.background.touch-selection button.destructive-action.osd + button.flat:disabled, popover.background.magnifier button.destructive-action.osd + button.flat:disabled, popover.background.touch-selection button.destructive-action.osd + button.flat:backdrop:disabled, popover.background.magnifier button.destructive-action.osd + button.flat:backdrop:disabled, + button.destructive-action.osd + button.flat:backdrop, + button.destructive-action.osd + button.flat:disabled, + button.destructive-action.osd + button.flat:backdrop:disabled { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + color: rgba(231, 76, 60, 0.8); } + popover.background.touch-selection button.destructive-action:disabled, popover.background.magnifier button.destructive-action:disabled, popover.background.touch-selection button.destructive-action.osd button:disabled, popover.background.magnifier button.destructive-action.osd button:disabled, + button.destructive-action:disabled, + button.destructive-action.osd popover.background.touch-selection button:disabled, + popover.background.touch-selection button.destructive-action.osd button:disabled, + button.destructive-action.osd popover.background.magnifier button:disabled, + popover.background.magnifier button.destructive-action.osd button:disabled, popover.background.touch-selection button.destructive-action.osd + button:disabled, popover.background.magnifier button.destructive-action.osd + button:disabled, + button.destructive-action.osd + button:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-image: linear-gradient(to bottom, #262b30, #24292e); } + popover.background.touch-selection button.destructive-action:disabled > .label, popover.background.magnifier button.destructive-action:disabled > .label, popover.background.touch-selection button.destructive-action.osd button:disabled > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button:disabled > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button:disabled > .label, popover.background.magnifier button.destructive-action.osd button:disabled > .label, + button.destructive-action:disabled > .label, + button.destructive-action.osd popover.background.touch-selection button:disabled > .label, + popover.background.touch-selection button.destructive-action.osd button:disabled > .label, + button.destructive-action.osd popover.background.magnifier button:disabled > .label, + popover.background.magnifier button.destructive-action.osd button:disabled > .label, popover.background.touch-selection button.destructive-action.osd + button:disabled > .label, popover.background.magnifier button.destructive-action.osd + button:disabled > .label, + button.destructive-action.osd + button:disabled > .label { + color: inherit; } + popover.background.touch-selection button.destructive-action:disabled:active, popover.background.magnifier button.destructive-action:disabled:active, popover.background.touch-selection button.destructive-action:disabled:checked, popover.background.magnifier button.destructive-action:disabled:checked, popover.background.touch-selection button.destructive-action.osd button:disabled:active, popover.background.magnifier button.destructive-action.osd button:disabled:active, popover.background.touch-selection button.destructive-action.osd button:disabled:checked, popover.background.magnifier button.destructive-action.osd button:disabled:checked, + button.destructive-action:disabled:active, + button.destructive-action:disabled:checked, + button.destructive-action.osd popover.background.touch-selection button:disabled:active, + popover.background.touch-selection button.destructive-action.osd button:disabled:active, + button.destructive-action.osd popover.background.magnifier button:disabled:active, + popover.background.magnifier button.destructive-action.osd button:disabled:active, + button.destructive-action.osd popover.background.touch-selection button:disabled:checked, + popover.background.touch-selection button.destructive-action.osd button:disabled:checked, + button.destructive-action.osd popover.background.magnifier button:disabled:checked, + popover.background.magnifier button.destructive-action.osd button:disabled:checked, popover.background.touch-selection button.destructive-action.osd + button:disabled:active, popover.background.magnifier button.destructive-action.osd + button:disabled:active, popover.background.touch-selection button.destructive-action.osd + button:disabled:checked, popover.background.magnifier button.destructive-action.osd + button:disabled:checked, + button.destructive-action.osd + button:disabled:active, + button.destructive-action.osd + button:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(24, 171, 142, 0.35); + background-image: linear-gradient(to bottom, rgba(229, 61, 44, 0.35), rgba(214, 44, 26, 0.35)); } + popover.background.touch-selection button.destructive-action:disabled:active > .label, popover.background.magnifier button.destructive-action:disabled:active > .label, popover.background.touch-selection button.destructive-action:disabled:checked > .label, popover.background.magnifier button.destructive-action:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd button:disabled:active > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button:disabled:active > .label, popover.background.magnifier button.destructive-action.osd button:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd button:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd popover.background.touch-selection button:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd popover.background.magnifier button:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd button:disabled:checked > .label, + button.destructive-action:disabled:active > .label, + button.destructive-action:disabled:checked > .label, + button.destructive-action.osd popover.background.touch-selection button:disabled:active > .label, + popover.background.touch-selection button.destructive-action.osd button:disabled:active > .label, + button.destructive-action.osd popover.background.magnifier button:disabled:active > .label, + popover.background.magnifier button.destructive-action.osd button:disabled:active > .label, + button.destructive-action.osd popover.background.touch-selection button:disabled:checked > .label, + popover.background.touch-selection button.destructive-action.osd button:disabled:checked > .label, + button.destructive-action.osd popover.background.magnifier button:disabled:checked > .label, + popover.background.magnifier button.destructive-action.osd button:disabled:checked > .label, popover.background.touch-selection button.destructive-action.osd + button:disabled:active > .label, popover.background.magnifier button.destructive-action.osd + button:disabled:active > .label, popover.background.touch-selection button.destructive-action.osd + button:disabled:checked > .label, popover.background.magnifier button.destructive-action.osd + button:disabled:checked > .label, + button.destructive-action.osd + button:disabled:active > .label, + button.destructive-action.osd + button:disabled:checked > .label { + color: inherit; } +popover.background.touch-selection .stack-switcher > button > label, popover.background.magnifier .stack-switcher > button > label, .stack-switcher > +button > label { + padding-left: 6px; + padding-right: 6px; } +popover.background.touch-selection .stack-switcher > button > image, popover.background.magnifier .stack-switcher > button > image, .stack-switcher > +button > image { + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + padding-bottom: 3px; } +popover.background.touch-selection .stack-switcher > button.text-button, popover.background.magnifier .stack-switcher > button.text-button, .stack-switcher > +button.text-button { + padding: 6px; } +popover.background.touch-selection .stack-switcher > button.image-button, popover.background.magnifier .stack-switcher > button.image-button, .stack-switcher > +button.image-button { + padding: 3px 0px; } +popover.background.touch-selection .stack-switcher > button.needs-attention:active > label, popover.background.magnifier .stack-switcher > button.needs-attention:active > label, popover.background.touch-selection .stack-switcher > button.needs-attention:active > image, popover.background.magnifier .stack-switcher > button.needs-attention:active > image, popover.background.touch-selection .stack-switcher > button.needs-attention:checked > label, popover.background.magnifier .stack-switcher > button.needs-attention:checked > label, popover.background.touch-selection .stack-switcher > button.needs-attention:checked > image, popover.background.magnifier .stack-switcher > button.needs-attention:checked > image, .stack-switcher > +button.needs-attention:active > label, .stack-switcher > +button.needs-attention:active > image, .stack-switcher > +button.needs-attention:checked > label, .stack-switcher > +button.needs-attention:checked > image { + animation: none; + background-image: none; } +.inline-toolbar popover.background.touch-selection button, popover.background.touch-selection .inline-toolbar button, .inline-toolbar popover.background.magnifier button, popover.background.magnifier .inline-toolbar button, .inline-toolbar popover.background.touch-selection button:backdrop, popover.background.touch-selection .inline-toolbar button:backdrop, .inline-toolbar popover.background.magnifier button:backdrop, popover.background.magnifier .inline-toolbar button:backdrop, .inline-toolbar +button, .inline-toolbar +button:backdrop { + border-radius: 3px; + border-width: 1px; } +.primary-toolbar popover.background.touch-selection button, popover.background.touch-selection .primary-toolbar button, .primary-toolbar popover.background.magnifier button, popover.background.magnifier .primary-toolbar button, .primary-toolbar +button { + -gtk-icon-shadow: none; } + +/************** + * ComboBoxes * + **************/ +combobox arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + min-height: 16px; + min-width: 16px; } + +popover.background.touch-selection .stack-switcher > button.needs-attention > label, popover.background.magnifier .stack-switcher > button.needs-attention > label, popover.background.touch-selection .stack-switcher > button.needs-attention > image, popover.background.magnifier .stack-switcher > button.needs-attention > image, .stack-switcher > +button.needs-attention > label, .stack-switcher > +button.needs-attention > image, stacksidebar.sidebar row.needs-attention > .label { + animation: needs_attention 150ms ease-in; + background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(#FF5F57), to(transparent)), -gtk-gradient(radial, center center, 0, center center, 0.5, to(white), to(transparent)); + background-size: 6px 6px, 6px 6px; + background-repeat: no-repeat; + background-position: right 3px, right 4px; } + .stack-switcher > + button.needs-attention > label:backdrop, .stack-switcher > + button.needs-attention > image:backdrop, stacksidebar.sidebar row.needs-attention > .label:backdrop { + background-size: 6px 6px, 0 0; } + .stack-switcher > + button.needs-attention > label:dir(rtl), .stack-switcher > + button.needs-attention > image:dir(rtl), stacksidebar.sidebar row.needs-attention > .label:dir(rtl) { + background-position: left 3px, left 4px; } + +.linked > combobox > box > button.combo:dir(ltr), .linked > combobox > box > button.combo:dir(rtl), .inline-toolbar popover.background.touch-selection button, popover.background.touch-selection .inline-toolbar button, .inline-toolbar popover.background.magnifier button, popover.background.magnifier .inline-toolbar button, .inline-toolbar +button, .inline-toolbar +button:backdrop, popover.background.touch-selection .linked > button, popover.background.magnifier .linked > button, .linked > +button, .linked > +button:hover, .linked > +button:active, .linked > +button:checked, .linked > +button:backdrop { + border-radius: 3px; } + .linked > combobox > box > button.combo:dir(rtl), .inline-toolbar popover.background.touch-selection button:dir(rtl), popover.background.touch-selection .inline-toolbar button:dir(rtl), .inline-toolbar popover.background.magnifier button:dir(rtl), popover.background.magnifier .inline-toolbar button:dir(rtl), .inline-toolbar + button:dir(rtl), popover.background.touch-selection .linked > button:dir(rtl), popover.background.magnifier .linked > button:dir(rtl), .linked > + button:dir(rtl) { + border-radius: 3px; } + +.inline-toolbar popover.background.touch-selection button, popover.background.touch-selection .inline-toolbar button, .inline-toolbar popover.background.magnifier button, popover.background.magnifier .inline-toolbar button, .inline-toolbar +button, .inline-toolbar +button:backdrop, popover.background.touch-selection .linked > button, popover.background.magnifier .linked > button, .linked > +button, .linked > +button:hover, .linked > +button:active, .linked > +button:checked, .linked > +button:backdrop { + margin-left: 2px; + margin-right: 2px; } + .inline-toolbar popover.background.touch-selection button:first-child, popover.background.touch-selection .inline-toolbar button:first-child, .inline-toolbar popover.background.magnifier button:first-child, popover.background.magnifier .inline-toolbar button:first-child, .inline-toolbar + button:first-child, popover.background.touch-selection .linked > button:first-child, popover.background.magnifier .linked > button:first-child, .linked > + button:first-child, combobox.linked button:nth-child(2):dir(rtl), .linked:not(.vertical) > combobox:first-child > box > button.combo { + border-radius: 3px; + border-style: solid; } + .inline-toolbar popover.background.touch-selection button:last-child, popover.background.touch-selection .inline-toolbar button:last-child, .inline-toolbar popover.background.magnifier button:last-child, popover.background.magnifier .inline-toolbar button:last-child, .inline-toolbar + button:last-child, popover.background.touch-selection .linked > button:last-child, popover.background.magnifier .linked > button:last-child, .linked > + button:last-child, combobox.linked button:nth-child(2):dir(ltr), .linked:not(.vertical) > combobox:last-child > box > button.combo { + border-radius: 3px; } + .inline-toolbar popover.background.touch-selection button:only-child, popover.background.touch-selection .inline-toolbar button:only-child, .inline-toolbar popover.background.magnifier button:only-child, popover.background.magnifier .inline-toolbar button:only-child, .inline-toolbar + button:only-child, popover.background.touch-selection .linked > button:only-child, popover.background.magnifier .linked > button:only-child, .linked > + button:only-child, .linked:not(.vertical) > combobox:only-child > box > button.combo { + border-radius: 3px; + border-style: solid; } + +.linked.vertical > combobox > box > button.combo, popover.background.touch-selection .linked.vertical > button, popover.background.magnifier .linked.vertical > button, .linked.vertical > +button, .linked.vertical > +button:hover, .linked.vertical > +button:active, .linked.vertical > +button:checked, .linked.vertical > +button:backdrop { + border-style: solid; + border-radius: 3px; } + +popover.background.touch-selection .linked.vertical > button:first-child, popover.background.magnifier .linked.vertical > button:first-child, .linked.vertical > +button:first-child, .linked.vertical > combobox:first-child > box > button.combo { + border-radius: 3px; } +popover.background.touch-selection .linked.vertical > button:last-child, popover.background.magnifier .linked.vertical > button:last-child, .linked.vertical > +button:last-child, .linked.vertical > combobox:last-child > box > button.combo { + border-radius: 3px; + border-style: solid; } +popover.background.touch-selection .linked.vertical > button:only-child, popover.background.magnifier .linked.vertical > button:only-child, .linked.vertical > +button:only-child, .linked.vertical > combobox:only-child > box > button.combo { + border-radius: 3px; + border-style: solid; } + +.app-notification button.flat, +.app-notification.frame button.flat, .app-notification button.flat:hover, +.app-notification.frame button.flat:hover, .app-notification button.flat:active, +.app-notification.frame button.flat:active, .app-notification button.flat:backdrop, .app-notification button.flat:disabled, .app-notification button.flat:backdrop:disabled, +.app-notification.frame button.flat:backdrop, +.app-notification.frame button.flat:disabled, +.app-notification.frame button.flat:backdrop:disabled, calendar.button, calendar.button:hover, calendar.button:active, calendar.button:backdrop, +headerbar button.flat:disabled, button:link, +button:visited, button:link:hover, button:link:active, button:link:checked, +button:visited:hover, +button:visited:active, +button:visited:checked, modelbutton.flat, popover.background checkbutton, +popover.background radiobutton, +.menuitem.button.flat, modelbutton.flat:backdrop, popover.background checkbutton:backdrop, +popover.background radiobutton:backdrop, modelbutton.flat:backdrop:hover, popover.background checkbutton:backdrop:hover, +popover.background radiobutton:backdrop:hover, +.menuitem.button.flat:backdrop, +.menuitem.button.flat:backdrop:hover, scrollbar button:backdrop, button.sidebar-button { + border-color: transparent; + background-color: transparent; + background-image: none; + box-shadow: none; + text-shadow: none; + -gtk-icon-shadow: none; } + +/**************** + * Text Entries * + ****************/ +spinbutton:not(.vertical), +entry { + min-height: 30px; + padding-left: 8px; + padding-right: 8px; + border: 1px solid; + border-radius: 3px; + transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); + color: white; + border-color: #5f6367; + background-color: #292f34; + box-shadow: none; } + spinbutton:not(.vertical) image.left, + entry image.left { + padding-left: 0; + padding-right: 6px; } + spinbutton:not(.vertical) image.right, + entry image.right { + padding-left: 6px; + padding-right: 0; } + spinbutton.flat:focus:not(.vertical), spinbutton.flat:not(.vertical), + entry.flat:focus, + entry.flat { + min-height: 0; + padding: 2px; + color: white; + border-color: #5f6367; + background-color: #292f34; + box-shadow: none; } + spinbutton:focus:not(.vertical), + entry:focus { + border-color: #FF5F57; } + spinbutton:disabled:not(.vertical), + entry:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-color: #252b2f; } + spinbutton:backdrop:not(.vertical), + entry:backdrop { + color: white; + border-color: #5f6367; + background-color: #292f34; } + spinbutton:backdrop:disabled:not(.vertical), + entry:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-color: #252b2f; } + spinbutton.error:not(.vertical), + entry.error { + color: #e74c3c; + border-color: #e74c3c; + background-color: rgba(231, 76, 60, 0.5); } + spinbutton.error:focus:not(.vertical), + entry.error:focus { + border-color: #e74c3c; + background-color: rgba(231, 76, 60, 0.5); } + spinbutton.error:selected:not(.vertical), spinbutton.error:selected:focus:not(.vertical), + entry.error:selected, + entry.error:selected:focus { + background-color: #e74c3c; } + spinbutton.error:backdrop:not(.vertical), + entry.error:backdrop { + color: #e74c3c; + border-color: #e74c3c; + background-color: rgba(231, 76, 60, 0.5); } + spinbutton.warning:not(.vertical), + entry.warning { + color: #e67e22; + border-color: #e67e22; + background-color: rgba(230, 126, 34, 0.5); } + spinbutton.warning:focus:not(.vertical), + entry.warning:focus { + border-color: #e67e22; + background-color: rgba(230, 126, 34, 0.5); } + spinbutton.warning:selected:not(.vertical), spinbutton.warning:selected:focus:not(.vertical), + entry.warning:selected, + entry.warning:selected:focus { + background-color: #e67e22; } + spinbutton.warning:backdrop:not(.vertical), + entry.warning:backdrop { + color: #e67e22; + border-color: #e67e22; + background-color: rgba(230, 126, 34, 0.5); } + spinbutton:not(.vertical) image, + entry image { + color: white; } + spinbutton:not(.vertical) image:hover, + entry image:hover { + color: #FF5F57; } + spinbutton:not(.vertical) image:active, + entry image:active { + color: #FF5F57; } + spinbutton:not(.vertical) image:backdrop, + entry image:backdrop { + color: white; } +spinbutton:not(.vertical) progress, +entry progress { + margin: 1px; + border-radius: 0; + border-width: 0 0 2px; + border-color: #FF5F57; + border-style: solid; + background-image: none; + background-color: transparent; + box-shadow: none; } + spinbutton:not(.vertical) progress:backdrop, + entry progress:backdrop { + background-color: transparent; + border-color: rgba(255, 95, 87, 0.5); } + +treeview acceleditor > label { + background-color: #FF5F57; } + +treeview entry.flat, treeview entry { + border-radius: 0; + background-image: none; + background-color: #292f34; } + treeview entry.flat:focus, treeview entry:focus { + border-color: #FF5F57; } + +/********************* + * App Notifications * + *********************/ +.app-notification, +.app-notification.frame { + padding: 10px; + border-top-width: 0px; + border-radius: 0px 0px 3px 3px; } + .app-notification:backdrop, + .app-notification.frame:backdrop { + background-image: none; } + .app-notification button, + .app-notification.frame button { + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); + text-shadow: none; + -gtk-icon-shadow: none; + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #292f35, #282e32); } + .app-notification button.flat, + .app-notification.frame button.flat { + -gtk-icon-shadow: none; + text-shadow: none; } + .app-notification button.flat:hover, + .app-notification.frame button.flat:hover { + color: #FF5F57; } + .app-notification button.flat:active, + .app-notification.frame button.flat:active { + color: #FF5F57; } + .app-notification button:hover, + .app-notification.frame button:hover { + color: white; + border-color: #FF5F57; } + .app-notification button:active, .app-notification button:checked, .app-notification button:backdrop:active, .app-notification button:backdrop:checked, + .app-notification.frame button:active, + .app-notification.frame button:checked, + .app-notification.frame button:backdrop:active, + .app-notification.frame button:backdrop:checked { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + .app-notification button:disabled, .app-notification button:backdrop:disabled, + .app-notification.frame button:disabled, + .app-notification.frame button:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(86, 90, 94, 0.35); + background-image: linear-gradient(to bottom, #262b30, #24292e); } + .app-notification button:disabled > .label, .app-notification button:backdrop:disabled > .label, + .app-notification.frame button:disabled > .label, + .app-notification.frame button:backdrop:disabled > .label { + color: inherit; } + .app-notification button:backdrop, + .app-notification.frame button:backdrop { + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #292f35, #282e32); } + .app-notification border, + .app-notification.frame border { + border: none; } + +/************ + * Calendar * + ***********/ +calendar { + color: white; + border: 1px solid #5f6367; + background-color: #292f34; } + calendar:selected { + background-color: #5f6367; } + calendar.header { + border: 1px solid #5f6367; + border-radius: 0; + color: white; } + calendar.header:backdrop { + color: white; + border-color: #5f6367; } + calendar.button { + color: white; } + calendar.button:hover { + color: #FF5F57; } + calendar.button:active { + color: #FF5F57; } + calendar.button:backdrop { + color: white; } + calendar:indeterminate, calendar.highlight { + color: rgba(255, 255, 255, 0.5); } + calendar:indeterminate:backdrop, calendar.highlight:backdrop { + color: rgba(255, 255, 255, 0.5); } + calendar:backdrop { + color: white; + border-color: #5f6367; + background-color: #292f34; } + +/************************* + * Check and Radio items * + *************************/ +checkbutton.text-button, radiobutton.text-button { + padding: 2px 0; + outline-offset: 0; } + checkbutton.text-button label:not(:only-child):first-child, radiobutton.text-button label:not(:only-child):first-child { + margin-left: 4px; } + checkbutton.text-button label:not(:only-child):last-child, radiobutton.text-button label:not(:only-child):last-child { + margin-right: 4px; } + +check { + margin: 0 4px; + min-height: 18px; + min-width: 18px; + animation: none; + background-color: #FFFFFF; + color: #292f34 +} + +radio { + margin: 0 4px; + min-height: 18px; + min-width: 18px; + animation: none; + background-color: transparent; +} + +/***************** + * Color Chooser * + *****************/ +:selected colorswatch { + box-shadow: none; } + :selected colorswatch.overlay, :selected colorswatch.overlay:hover { + border-color: white; } +colorswatch:selected { + box-shadow: none; } +colorswatch.top, colorswatch.bottom, colorswatch.left, colorswatch:first-child:not(.overlay):not(.top), colorswatch.right, colorswatch:last-child:not(.overlay):not(.bottom), colorswatch:only-child:not(.overlay), colorswatch.top > .overlay, colorswatch.bottom > .overlay, colorswatch:first-child:not(.top) > .overlay, colorswatch:last-child:not(.bottom) > .overlay, colorswatch:only-child > .overlay { + border-radius: 3px; } +colorswatch:hover, colorswatch:hover:selected { + background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0) 50%); + box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } + colorswatch:hover.color-dark, colorswatch:hover:selected.color-dark { + background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0) 50%); } +colorswatch:backdrop, colorswatch:backdrop:selected +colorswatch.color-dark:backdrop, colorswatch.color-dark:backdrop:selected { + background-image: none; + box-shadow: none; } +GtkColorEditor colorswatch { + border-radius: 3px; } + GtkColorEditor colorswatch:hover { + background-image: none; + box-shadow: none; } + GtkColorEditor colorswatch:backdrop { + box-shadow: none; } +colorswatch.color-dark { + color: white; + outline-color: rgba(0, 0, 0, 0.3); } + colorswatch.color-dark:backdrop { + color: rgba(255, 255, 255, 0.3); } +colorswatch.color-light { + color: black; + outline-color: rgba(255, 255, 255, 0.5); } + colorswatch.color-light:backdrop { + color: rgba(0, 0, 0, 0.3); } +colorswatch overlay, +colorswatch overlay:selected { + border: 1px solid #5f6367; } + colorswatch overlay:hover, + colorswatch overlay:selected:hover { + border-color: #FF5F57; } +colorswatch#add-color-button { + border-style: solid; + border-width: 1px; + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); + text-shadow: none; + -gtk-icon-shadow: none; + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #292f35, #282e32); } + colorswatch#add-color-button:hover { + color: white; + border-color: #FF5F57; } + colorswatch#add-color-button:backdrop { + color: white; + border-color: #5f6367; + background-image: linear-gradient(to bottom, #292f35, #282e32); } + colorswatch#add-color-button overlay { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; } + +GtkColorButton.button { + padding: 5px; } + GtkColorButton.button GtkColorSwatch:first-child:last-child { + border-radius: 0; + box-shadow: none; } + GtkColorButton.button GtkColorSwatch:first-child:last-child:disabled, GtkColorButton.button GtkColorSwatch:first-child:last-child:backdrop { + box-shadow: none; } + +/*********** + * Dialogs * + ***********/ +messagedialog.background { + background-color: #292f34; } +messagedialog:backdrop { + background-color: #292f34; } +messagedialog .titlebar { + min-height: 32px; + background-color: transparent; + background-image: linear-gradient(to bottom, #31383e, #292f34); + box-shadow: none; } +messagedialog .dialog-action-area { + padding: 8px; } +messagedialog button { + margin: 2px; } + +filechooser .search-bar { + background-color: #292f34; + border-color: #292f34; + box-shadow: none; } + filechooser .search-bar:backdrop { + background-color: #292f34; + border-color: #292f34; + color: white; } +filechooser .dialog-action-box { + border-top: 1px solid #5f6367; } + filechooser .dialog-action-box:backdrop { + border-top-color: #5f6367; } +filechooser #pathbarbox { + background-color: #292f34; + border-bottom: 1px solid #5f6367; } + +/*************** + * Header bars * + ***************/ +headerbar { + transition: none; + padding: 0px 6px; + border-width: 0px 0px 1px 0px; + border-radius: 3px 3px 0px 0px; + border-style: solid; + border-color: #FF5F57; + color: white; + background-image: linear-gradient(to bottom, #31383e, #292f34); } + headerbar:backdrop { + border-color: transparent; + background-image: none; + background-color: #292f34; + color: #828282; + box-shadow: none; } + headerbar label { + font-weight: normal; } + headerbar label:backdrop { + color: #828282; } + headerbar .path-bar button { + color: white; + font-weight: normal; } + headerbar .path-bar button:backdrop { + color: #828282; } + headerbar button { + transition: none; + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; } + headerbar button.flat { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; } + headerbar button:hover { + color: white; + border-color: #FF5F57; } + headerbar button:hover:backdrop { + border-color: #292f34; } + headerbar button:active, + headerbar button:checked { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + headerbar button:active:hover, + headerbar button:checked:hover { + color: white; + border-color: #FF5F57; + background-image: linear-gradient(to bottom, #FF5F57, #FF5F57); } + headerbar button:active:backdrop, + headerbar button:checked:backdrop { + background-image: none; + background-color: #292f34; + border-color: #292f34; + color: #828282; } + headerbar button:backdrop { + border-color: transparent; + background-image: none; + background-color: #292f34; + color: #828282; } + headerbar button.flat:backdrop, + headerbar button.flat:backdrop:disabled, + headerbar button:disabled:backdrop { + background-image: none; + background-color: #292f34; + color: #828282; + border-color: transparent; } + headerbar button.flat:disabled { + color: rgba(232, 232, 232, 0.35); } + headerbar button:disabled { + background-color: transparent; + background-image: none; + border-color: transparent; + color: rgba(232, 232, 232, 0.35); } + headerbar button:disabled:active, + headerbar button:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(24, 171, 142, 0.35); + background-image: linear-gradient(to bottom, rgba(255, 95, 87, 0.35), rgba(255, 95, 87, 0.35)); } + headerbar button:disabled:active > .label, + headerbar button:disabled:checked > .label { + color: inherit; } + headerbar .title { + font-weight: normal; + padding: 0px 12px; } + headerbar .title:backdrop { + color: #828282; } + headerbar .subtitle { + font-size: smaller; + padding: 0 12px; } + headerbar .subtitle:backdrop { + color: #828282; } + headerbar separator { + border-width: 0px; + background-color: transparent; + background-image: none; + border-color: transparent; } + headerbar.selection-mode .selection-menu { + padding: 4px 6px; } + headerbar.selection-mode .selection-menu GtkArrow { + -GtkArrow-arrow-scaling: 1; } + headerbar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -gtk-icon-shadow: none; } + .tiled + headerbar, .maximized + headerbar { + border-radius: 0; } + +headerbar entry, +headerbar spinbutton, +headerbar separator, +headerbar button { + margin-top: 3px; + margin-bottom: 3px; } + +headerbar button.suggested-action, +headerbar.selection-mode.suggested-action { + background-image: none; + background-color: #FF5F57; } + headerbar button.suggested-action:hover, + headerbar.selection-mode.suggested-action:hover { + background-color: #FF5F57; + color: white; } + headerbar button.suggested-action:disabled, + headerbar.selection-mode.suggested-action:disabled { + background-color: transparent; + background-image: none; + color: rgba(232, 232, 232, 0.35); } + headerbar button.suggested-action:disabled:active, + headerbar.selection-mode.suggested-action:disabled:active, + headerbar button.suggested-action:disabled:checked, + headerbar.selection-mode.suggested-action:disabled:checked { + color: rgba(232, 232, 232, 0.35); + border-color: rgba(24, 171, 142, 0.35); + background-image: linear-gradient(to bottom, rgba(255, 95, 87, 0.35), rgba(255, 95, 87, 0.35)); } + headerbar button.suggested-action:disabled:active > .label, + headerbar.selection-mode.suggested-action:disabled:active > .label, + headerbar button.suggested-action:disabled:checked > .label, + headerbar.selection-mode.suggested-action:disabled:checked > .label { + color: inherit; } + headerbar button.suggested-action:backdrop, + headerbar.selection-mode.suggested-action:backdrop { + background-color: #292f34; + border-color: transparent; + color: #828282; } + headerbar button.suggested-action:backdrop:disabled, + headerbar.selection-mode.suggested-action:backdrop:disabled { + color: rgba(118, 118, 118, 0.35); } + +/************** + * GtkInfoBar * + **************/ +infobar { + border-style: none; + border-bottom: 1px solid #5f6367; + background-color: #292f34; + background-image: none; } + infobar:backdrop { + border-bottom: 1px solid #5f6367; } + +.info, +headerbar.selection-mode, +.question, +.warning, +.error { + background-color: #292f34; + background-image: none; + color: #e67e22; + text-shadow: none; } + .info:backdrop, + headerbar.selection-mode:backdrop, + .question:backdrop, + .warning:backdrop, + .error:backdrop { + background-color: #292f34; + color: #e67e22; } + .info button, + headerbar.selection-mode button, + .question button, + .warning button, + .error button { + box-shadow: none; + background-image: none; + background-color: rgba(230, 126, 34, 0.5); + border-color: rgba(230, 126, 34, 0.5); + color: white; } + .info button:hover, + headerbar.selection-mode button:hover, + .question button:hover, + .warning button:hover, + .error button:hover { + background-color: rgba(230, 126, 34, 0.25); + border-color: #e67e22; } + .info button:active, + headerbar.selection-mode button:active, .info button:checked, + headerbar.selection-mode button:checked, + .question button:active, + .question button:checked, + .warning button:active, + .warning button:checked, + .error button:active, + .error button:checked { + background-image: linear-gradient(to bottom, #e67f24, #e57a1b); + color: #292f34; + border-color: #e67e22; } + .info button:disabled, + headerbar.selection-mode button:disabled, + .question button:disabled, + .warning button:disabled, + .error button:disabled { + background-color: rgba(216, 114, 24, 0); + border-color: rgba(216, 114, 24, 0); + color: rgba(232, 232, 232, 0.35); } + .info button:backdrop, + headerbar.selection-mode button:backdrop, + .question button:backdrop, + .warning button:backdrop, + .error button:backdrop { + background-color: rgba(230, 126, 34, 0.5); + border-color: rgba(230, 126, 34, 0.5); + color: white; } + .info button:backdrop:active, + headerbar.selection-mode button:backdrop:active, .info button:backdrop:checked, + headerbar.selection-mode button:backdrop:checked, + .question button:backdrop:active, + .question button:backdrop:checked, + .warning button:backdrop:active, + .warning button:backdrop:checked, + .error button:backdrop:active, + .error button:backdrop:checked { + background-image: linear-gradient(to bottom, #e67f24, #e57a1b); + color: #292f34; + border-color: #e67e22; } + .info button:backdrop:disabled, + headerbar.selection-mode button:backdrop:disabled, + .question button:backdrop:disabled, + .warning button:backdrop:disabled, + .error button:backdrop:disabled { + background-color: rgba(216, 114, 24, 0); + border-color: rgba(216, 114, 24, 0); + color: rgba(232, 232, 232, 0.35); } + .info button:backdrop:disabled:active, + headerbar.selection-mode button:backdrop:disabled:active, .info button:backdrop:disabled:checked, + headerbar.selection-mode button:backdrop:disabled:checked, + .question button:backdrop:disabled:active, + .question button:backdrop:disabled:checked, + .warning button:backdrop:disabled:active, + .warning button:backdrop:disabled:checked, + .error button:backdrop:disabled:active, + .error button:backdrop:disabled:checked { + background-image: linear-gradient(to bottom, rgba(218, 115, 25, 0.35), rgba(209, 111, 24, 0.35)); + color: #252b2f; + border-color: rgba(216, 114, 24, 0.35); } + +/********* + * Links * + *********/ +button:link > label, +button:visited > label, +*:link, +button:link, +button:visited { + color: #4c6b8a; } + button:link > label:visited, + button:visited > label:visited, + *:link:visited, + button:visited { + color: #913d88; } + *:selected button:link > label:visited, + *:selected button:visited > label:visited, *:selected + *:link:visited, *:selected + button:visited:link, + *:selected button:visited { + color: #a3e4d7; } + button:link > label:hover, + button:visited > label:hover, + *:link:hover, + button:hover:link, + button:hover:visited { + color: #6185a8; } + *:selected button:link > label:hover, + *:selected button:visited > label:hover, *:selected + *:link:hover, *:selected + button:hover:link, + *:selected button:hover:visited { + color: #e8f8f5; } + button:link > label:active, + button:visited > label:active, + *:link:active, + button:active:link, + button:active:visited { + color: #4c6b8a; } + *:selected button:link > label:active, + *:selected button:visited > label:active, *:selected + *:link:active, *:selected + button:active:link, + *:selected button:active:visited { + color: #d1f2eb; } + button:link > label:backdrop, + button:visited > label:backdrop, button:link > label:backdrop:hover, + button:visited > label:backdrop:hover, button:link > label:backdrop:hover:selected, + button:visited > label:backdrop:hover:selected, + *:link:backdrop, + button:backdrop:link, + button:backdrop:visited, + *:link:backdrop:hover, + button:backdrop:hover:link, + button:backdrop:hover:visited, + *:link:backdrop:hover:selected, + headerbar.selection-mode .subtitle:backdrop:hover:link, + button:backdrop:hover:selected:link, + button:backdrop:hover:selected:visited { + color: rgba(255, 95, 87, 0.5); } + button:link > label:selected, + button:visited > label:selected, *:selected button:link > label, + *:selected button:visited > label, + *:link:selected, + headerbar.selection-mode .subtitle:link, + button:selected:link, + button:selected:visited, *:selected + *:link, *:selected + button:link, + *:selected button:visited { + color: #d1f2eb; } + +button:link, +button:visited { + text-shadow: none; } + button:link:hover, button:link:active, button:link:checked, + button:visited:hover, + button:visited:active, + button:visited:checked { + text-shadow: none; } + button:link > label, + button:visited > label { + text-decoration-line: underline; } + +/********* + * Lists * + *********/ +list { + background-color: #292f34; + color: white; + border-width: 0px; } + list:backdrop { + background-color: #292f34; + color: white; } + list row { + padding: 2px; } + +row { + transition: all 150ms cubic-bezier(0.25, 0.46, 0.45, 0.94); } + row:hover { + transition: none; } + row.activatable.has-open-popup, row.activatable:hover { + background-color: rgba(255, 95, 87, 0.5); } + row.activatable:active { + box-shadow: none; + background-color: #FF5F57; } + row.activatable:selected:active { + box-shadow: none; + background-color: #FF5F57; } + row.activatable:selected.has-open-popup, row.activatable:selected:hover { + color: white; + background-color: #FF5F57; } + row.activatable:selected:backdrop { + background-color: #FF5F57; } + +/********* + * Menus * + *********/ +menubar, +.menubar { + -GtkWidget-window-dragging: true; + padding: 0px; + box-shadow: none; + border-style: none; + background-color: #292f34; } + menubar:backdrop, + .menubar:backdrop { + background-color: #292f34; } + menubar > menuitem, + .menubar > menuitem { + min-height: 16px; + padding: 4px 6px; + border-style: solid; + border-width: 1px 0px; + border-color: #292f34; } + menubar > menuitem:hover, + .menubar > menuitem:hover { + background-color: #FF5F57; + color: white; } + menubar > menuitem:disabled, + .menubar > menuitem:disabled { + color: rgba(232, 232, 232, 0.35); + box-shadow: none; } + menubar > menuitem:disabled:backdrop, + .menubar > menuitem:disabled:backdrop { + background-color: #292f34; + color: rgba(232, 232, 232, 0.35); } + menubar > menuitem:backdrop, + .menubar > menuitem:backdrop { + background-color: #292f34; + border-color: #292f34; + color: white; } + +menu, +.menu { + padding: 0px; + background-color: #292f34; + border: 0px solid transparent; + box-shadow: inset 0px 0px 0px 1px #5f6367; + border-radius: 3px; } + .csd menu, .csd + .menu { + border: 0px solid; + border-radius: 3px; } + menu separator, + .menu separator { + color: #5f6367; + margin-top: 3px; + margin-bottom: 3px; } + menu menuitem, + .menu menuitem { + text-shadow: none; + min-height: 16px; + min-width: 40px; + padding: 4px 4px; } + menu menuitem:hover, + .menu menuitem:hover { + color: white; + background-color: #FF5F57; } + menu menuitem:disabled, + .menu menuitem:disabled { + color: rgba(232, 232, 232, 0.35); } + menu menuitem:disabled:backdrop, + .menu menuitem:disabled:backdrop { + color: rgba(232, 232, 232, 0.35); } + menu menuitem:backdrop, menu menuitem:backdrop:hover, + .menu menuitem:backdrop, + .menu menuitem:backdrop:hover { + color: white; + background-color: #292f34; } + menu menuitem arrow, + .menu menuitem arrow { + min-height: 16px; + min-width: 16px; } + menu menuitem arrow:dir(ltr), + .menu menuitem arrow:dir(ltr) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + margin-left: 10px; } + menu menuitem arrow:dir(rtl), + .menu menuitem arrow:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); + margin-right: 10px; } + menu > arrow, + .menu > arrow { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + min-height: 16px; + min-width: 16px; + padding: 4px; + background-color: transparent; + border-radius: 0; } + menu > arrow.top, + .menu > arrow.top { + margin-top: -6px; + border: none; + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); } + menu > arrow.bottom, + .menu > arrow.bottom { + margin-bottom: -6px; + border: none; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); } + menu > arrow:hover, + .menu > arrow:hover { + color: #FF5F57; } + menu > arrow:active, + .menu > arrow:active { + color: #FF5F57; } + menu > arrow:backdrop, + .menu > arrow:backdrop { + background-color: #292f34; } + menu > arrow:disabled, + .menu > arrow:disabled { + color: transparent; + background-color: transparent; + border-color: transparent; } + +menuitem accelerator { + color: alpha(currentColor,0.55); } +menuitem check, +menuitem radio { + min-height: 18px; + min-width: 18px; } + menuitem check:dir(ltr), + menuitem radio:dir(ltr) { + margin-right: 6px; } + menuitem check:dir(rtl), + menuitem radio:dir(rtl) { + margin-left: 6px; } + +/*************** + * Popovers * + ***************/ +/* menu buttons */ +modelbutton.flat, popover.background checkbutton, +popover.background radiobutton, +.menuitem.button.flat { + min-height: 16px; + padding: 4px 8px; + color: white; } + modelbutton.flat:hover, popover.background checkbutton:hover, + popover.background radiobutton:hover, + .menuitem.button.flat:hover { + background-color: #FF5F57; + color: white; } + modelbutton.flat:selected, popover.background checkbutton:selected, + popover.background radiobutton:selected, + .menuitem.button.flat:selected { + background-color: #FF5F57; + color: white; } + modelbutton.flat:backdrop, popover.background checkbutton:backdrop, + popover.background radiobutton:backdrop, modelbutton.flat:backdrop:hover, popover.background checkbutton:backdrop:hover, + popover.background radiobutton:backdrop:hover, + .menuitem.button.flat:backdrop, + .menuitem.button.flat:backdrop:hover { + color: white; } + modelbutton.flat check:hover, popover.background checkbutton check:hover, + popover.background radiobutton check:hover, + modelbutton.flat radio:hover, popover.background checkbutton radio:hover, + popover.background radiobutton radio:hover, + modelbutton.flat check:checked:hover, popover.background checkbutton check:checked:hover, + popover.background radiobutton check:checked:hover, + modelbutton.flat radio:checked:hover, popover.background checkbutton radio:checked:hover, + popover.background radiobutton radio:checked:hover, + modelbutton.flat check:indeterminate:hover, popover.background checkbutton check:indeterminate:hover, + popover.background radiobutton check:indeterminate:hover, + modelbutton.flat radio:indeterminate:hover, popover.background checkbutton radio:indeterminate:hover, + popover.background radiobutton radio:indeterminate:hover, + modelbutton.flat check:last-child, popover.background checkbutton check:last-child, + popover.background radiobutton check:last-child, + modelbutton.flat radio:last-child, + popover.background checkbutton radio:last-child, + popover.background radiobutton radio:last-child, + .menuitem.button.flat check:last-child, + .menuitem.button.flat radio:last-child { + margin-right: 0px; } + modelbutton.flat check:first-child, popover.background checkbutton check:first-child, + popover.background radiobutton check:first-child, + modelbutton.flat radio:first-child, + popover.background checkbutton radio:first-child, + popover.background radiobutton radio:first-child, + .menuitem.button.flat check:first-child, + .menuitem.button.flat radio:first-child { + margin-left: 0px; } + +modelbutton.flat arrow, popover.background checkbutton arrow, +popover.background radiobutton arrow { + background: none; } + modelbutton.flat arrow:hover, popover.background checkbutton arrow:hover, + popover.background radiobutton arrow:hover { + background: none; } + modelbutton.flat arrow.left, popover.background checkbutton arrow.left, + popover.background radiobutton arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); } + modelbutton.flat arrow.right, popover.background checkbutton arrow.right, + popover.background radiobutton arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); } + +popover.background { + margin: -10px; + padding: 0px; + border: 1px solid #5f6367; + border-radius: 3px; + background-color: #292f34; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.9); } + popover.background:backdrop { + box-shadow: none; } + popover.background > list, + popover.background > .view, + popover.background > toolbar { + border-style: none; + background-color: transparent; } + .csd popover.background.touch-selection, .csd popover.background.magnifier, popover.background.touch-selection, popover.background.magnifier { + border: 1px solid #5f6367; } + popover.background separator { + margin: 3px; } + popover.background list separator { + margin: 0px; } + +GtkVolumeButton.button { + padding: 5px; } + +/******** + * Misc * + ********/ +/**************** +* Print dialog * +*****************/ +printdialog paper { + color: white; + border: 1px solid #5f6367; + background: white; + padding: 0; } + printdialog paper:backdrop { + color: white; + border-color: #5f6367; + background: white; } +printdialog .dialog-action-box { + margin: 12px; } + +/********** +* Frames * +**********/ +frame > border, +.frame { + box-shadow: none; + margin: 0; + padding: 0; + border-radius: 0; + border: 1px solid #5f6367; } + frame > border.flat, + .frame.flat { + border-style: none; } + frame > border:backdrop, + .frame:backdrop { + border-color: #5f6367; } + +actionbar > revealer > box { + padding: 6px; + border-top: 1px solid #5f6367; } + actionbar > revealer > box:backdrop { + border-color: #5f6367; } + +scrolledwindow viewport.frame { + border-style: none; } +scrolledwindow junction { + border-color: transparent; + background-color: transparent; + background-image: none; } + +separator { + background: #5f6367; + min-width: 1px; + min-height: 1px; } + +/************* +* Expanders * +*************/ +expander arrow { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); } + expander arrow:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); } + expander arrow:hover { + color: white; } + expander arrow:checked { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); } + +/********* +* Paned * +*********/ +paned > separator { + min-width: 1px; + min-height: 1px; + -gtk-icon-source: none; + border-style: none; + background-color: transparent; + background-image: image(#5f6367); + background-size: 1px 1px; } + paned > separator:backdrop { + background-image: image(#5f6367); } + paned > separator.wide { + min-width: 5px; + min-height: 5px; + background-color: #292f34; + background-image: image(#5f6367), image(#5f6367); + background-size: 1px 1px, 1px 1px; } + paned > separator.wide:backdrop { + background-color: #292f34; + background-image: image(#5f6367), image(#5f6367); } +paned.horizontal > separator { + background-repeat: repeat-y; } + paned.horizontal > separator:dir(ltr) { + margin: 0 -8px 0 0; + padding: 0 8px 0 0; + background-position: left; } + paned.horizontal > separator:dir(rtl) { + margin: 0 0 0 -8px; + padding: 0 0 0 8px; + background-position: right; } + paned.horizontal > separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-y, repeat-y; + background-position: left, right; } +paned.vertical > separator { + margin: 0 0 -8px 0; + padding: 0 0 8px 0; + background-repeat: repeat-x; + background-position: top; } + paned.vertical > separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-x, repeat-x; + background-position: bottom, top; } + +/********************* +* Spinner Animation * +*********************/ +@keyframes spin { + to { + -gtk-icon-transform: rotate(1turn); } } +spinner { + background-image: none; + opacity: 0; + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); } + spinner:checked { + opacity: 1; + animation: spin 1s linear infinite; } + spinner:checked:disabled { + opacity: 0.5; } + +/***************** + * Notebooks and * + * Tabs * + *****************/ +/************* + * Notebooks * + *************/ +notebook.frame { + border: none; + padding: 0px; + box-shadow: inset 0px 0px 0px 1px #5f6367; } +notebook > header { + padding: 0px; + border: none; + background-color: #292f34; } + notebook > header.top { + box-shadow: inset 0 -1px #5f6367; } + notebook > header.top:backdrop { + box-shadow: inset 0 -1px #5f6367; } + notebook > header.bottom { + box-shadow: inset 0 1px #5f6367; } + notebook > header.bottom:backdrop { + box-shadow: inset 0 1px #5f6367; } + notebook > header.right { + box-shadow: inset 1px 0 #5f6367; } + notebook > header.right:backdrop { + box-shadow: inset 1px 0 #5f6367; } + notebook > header.left { + box-shadow: inset -1px 0 #5f6367; } + notebook > header.left:backdrop { + box-shadow: inset -1px 0 #5f6367; } + notebook > header:backdrop { + background-color: #292f34; } + notebook > header tabs { + margin: 0px; } + notebook > header.top > tabs > tab { + padding: 4px 6px; + border: 1px solid rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.2); + border-radius: 3px 3px 0px 0px; + border-bottom-color: transparent; } + notebook > header.top > tabs > tab:hover, notebook > header.top > tabs > tab.prelight-page { + background-color: rgba(255, 95, 87, 0.2); + border-color: rgba(255, 95, 87, 0.2); } + notebook > header.top > tabs > tab:checked { + border-color: #5f6367; + border-bottom-color: #292f34; + background-color: #292f34; } + notebook > header.top > tabs > tab:checked:backdrop { + border-color: #5f6367; + border-bottom-color: #292f34; + background-color: #292f34; } + notebook > header.bottom > tabs > tab { + padding: 4px 6px; + border: 1px solid rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.2); + border-radius: 0px 0px 3px 3px; + border-top-color: transparent; } + notebook > header.bottom > tabs > tab:hover, notebook > header.bottom > tabs > tab.prelight-page { + background-color: rgba(255, 95, 87, 0.2); + border-color: rgba(255, 95, 87, 0.2); } + notebook > header.bottom > tabs > tab:checked { + border-color: #5f6367; + border-top-color: #292f34; + background-color: #292f34; } + notebook > header.bottom > tabs > tab:checked:backdrop { + border-color: #5f6367; + border-top-color: #292f34; + background-color: #292f34; } + notebook > header.left > tabs > tab { + padding: 4px 6px; + border: 1px solid rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.2); + border-radius: 3px 0px 0px 3px; + border-right-color: transparent; } + notebook > header.left > tabs > tab:hover, notebook > header.left > tabs > tab.prelight-page { + background-color: rgba(255, 95, 87, 0.2); + border-color: rgba(255, 95, 87, 0.2); } + notebook > header.left > tabs > tab:checked { + border-color: #5f6367; + border-right-color: #292f34; + background-color: #292f34; } + notebook > header.left > tabs > tab:checked:backdrop { + border-color: #5f6367; + border-right-color: #292f34; + background-color: #292f34; } + notebook > header.right > tabs > tab { + padding: 4px 6px; + border: 1px solid rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.2); + border-radius: 0px 3px 3px 0px; + border-left-color: transparent; } + notebook > header.right > tabs > tab:hover, notebook > header.right > tabs > tab.prelight-page { + background-color: rgba(255, 95, 87, 0.2); + border-color: rgba(255, 95, 87, 0.2); } + notebook > header.right > tabs > tab:checked { + border-color: #5f6367; + border-left-color: #292f34; + background-color: #292f34; } + notebook > header.right > tabs > tab:checked:backdrop { + border-color: #5f6367; + border-left-color: #292f34; + background-color: #292f34; } + notebook > header.top > tabs > tab.reorderable-page { + border-width: 3px; + border-style: solid; + border-color: transparent; + background-color: #292f34; + background-clip: padding-box; + border-right-width: 1px; + border-right-color: #5f6367; + box-shadow: inset -3px 0px 0px 0px #292f34; } + notebook > header.top > tabs > tab.reorderable-page:hover, notebook > header.top > tabs > tab.reorderable-page.prelight-page { + box-shadow: inset 0px -3px 0px 0px rgba(255, 95, 87, 0.2), inset -3px 0px 0px 0px #292f34; } + notebook > header.top > tabs > tab.reorderable-page:checked { + box-shadow: inset 0px -3px 0px 0px #FF5F57, inset -3px 0px 0px 0px #292f34; } + notebook > header.top > tabs > tab.reorderable-page:checked:backdrop { + background-color: #292f34; + border-color: transparent; + border-right-color: #5f6367; + box-shadow: none; } + notebook > header.top > tabs > tab.reorderable-page:backdrop { + background-color: #292f34; + border-right-color: #5f6367; + box-shadow: none; } + notebook > header.bottom > tabs > tab.reorderable-page { + border-width: 3px; + border-style: solid; + border-color: transparent; + background-color: #292f34; + background-clip: padding-box; + border-right-width: 1px; + border-right-color: #5f6367; + box-shadow: inset -3px 0px 0px 0px #292f34; } + notebook > header.bottom > tabs > tab.reorderable-page:hover, notebook > header.bottom > tabs > tab.reorderable-page.prelight-page { + box-shadow: inset 0px -3px 0px 0px rgba(255, 95, 87, 0.2), inset -3px 0px 0px 0px #292f34; } + notebook > header.bottom > tabs > tab.reorderable-page:checked { + box-shadow: inset 0px -3px 0px 0px #FF5F57, inset -3px 0px 0px 0px #292f34; } + notebook > header.bottom > tabs > tab.reorderable-page:checked:backdrop { + background-color: #292f34; + border-color: transparent; + border-right-color: #5f6367; + box-shadow: none; } + notebook > header.bottom > tabs > tab.reorderable-page:backdrop { + background-color: #292f34; + border-right-color: #5f6367; + box-shadow: none; } + notebook > header.left > tabs > tab.reorderable-page { + border-width: 3px; + border-style: solid; + border-color: transparent; + background-color: #292f34; + background-clip: padding-box; + border-bottom-width: 1px; + border-bottom-color: #5f6367; + box-shadow: inset 0px -3px 0px 0px #292f34; } + notebook > header.left > tabs > tab.reorderable-page:hover, notebook > header.left > tabs > tab.reorderable-page.prelight-page { + box-shadow: inset 0px -3px 0px 0px rgba(255, 95, 87, 0.2), inset 0px -3px 0px 0px #292f34; } + notebook > header.left > tabs > tab.reorderable-page:checked { + box-shadow: inset 0px -3px 0px 0px #FF5F57, inset 0px -3px 0px 0px #292f34; } + notebook > header.left > tabs > tab.reorderable-page:checked:backdrop { + background-color: #292f34; + border-color: transparent; + border-bottom-color: #5f6367; + box-shadow: none; } + notebook > header.left > tabs > tab.reorderable-page:backdrop { + background-color: #292f34; + border-bottom-color: #5f6367; + box-shadow: none; } + notebook > header.right > tabs > tab.reorderable-page { + border-width: 3px; + border-style: solid; + border-color: transparent; + background-color: #292f34; + background-clip: padding-box; + border-bottom-width: 1px; + border-bottom-color: #5f6367; + box-shadow: inset 0px -3px 0px 0px #292f34; } + notebook > header.right > tabs > tab.reorderable-page:hover, notebook > header.right > tabs > tab.reorderable-page.prelight-page { + box-shadow: inset 0px -3px 0px 0px rgba(255, 95, 87, 0.2), inset 0px -3px 0px 0px #292f34; } + notebook > header.right > tabs > tab.reorderable-page:checked { + box-shadow: inset 0px -3px 0px 0px #FF5F57, inset 0px -3px 0px 0px #292f34; } + notebook > header.right > tabs > tab.reorderable-page:checked:backdrop { + background-color: #292f34; + border-color: transparent; + border-bottom-color: #5f6367; + box-shadow: none; } + notebook > header.right > tabs > tab.reorderable-page:backdrop { + background-color: #292f34; + border-bottom-color: #5f6367; + box-shadow: none; } + notebook > header.top > tabs > arrow { + border-top-style: none; } + notebook > header.bottom > tabs > arrow { + border-bottom-style: none; } + notebook > header.top > tabs > arrow, notebook > header.bottom > tabs > arrow { + margin-left: -5px; + margin-right: -5px; + padding-left: 4px; + padding-right: 4px; } + notebook > header.top > tabs > arrow.down, notebook > header.bottom > tabs > arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); } + notebook > header.top > tabs > arrow.up, notebook > header.bottom > tabs > arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); } + notebook > header.left > tabs > arrow { + border-left-style: none; } + notebook > header.right > tabs > arrow { + border-right-style: none; } + notebook > header.left > tabs > arrow, notebook > header.right > tabs > arrow { + margin-top: -5px; + margin-bottom: -5px; + padding-top: 4px; + padding-bottom: 4px; } + notebook > header.left > tabs > arrow.down, notebook > header.right > tabs > arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); } + notebook > header.left > tabs > arrow.up, notebook > header.right > tabs > arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); } + notebook > header > tabs > arrow { + min-height: 16px; + min-width: 16px; + border-radius: 0; } + notebook > header > tabs > arrow:hover:not(:active):not(:backdrop) { + background-clip: padding-box; + background-image: none; + background-color: rgba(255, 255, 255, 0.3); + border-color: transparent; + box-shadow: none; } + notebook > header > tabs > arrow:disabled { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; } + notebook > header button.flat { + padding: 0; + margin: 4px; + min-width: 12px; + min-height: 12px; + border: 0px solid; + border-radius: 50%; + color: #292f34; + background-color: #5f6367; + background-image: none; } + notebook > header button.flat:hover { + background-color: #e74c3c; } + notebook > header button.flat:active { + background-color: #e74c3c; } + notebook > header button.flat:backdrop { + background-color: #5f6367; + color: #292f34; } +notebook > stack:not(:only-child) { + background-color: transparent; + border-style: solid; + border-color: #5f6367; + border-width: 0px; } + +scrolledwindow overshoot.top { + background-image: -gtk-gradient(radial, center top, 0, center top, 0.5, to(#474a4c), to(rgba(71, 74, 76, 0))), -gtk-gradient(radial, center top, 0, center top, 0.6, from(rgba(255, 255, 255, 0.07)), to(rgba(255, 255, 255, 0))); + background-size: 100% 5%, 100% 100%; + background-repeat: no-repeat; + background-position: center top; + background-color: transparent; + border: none; + box-shadow: none; } + scrolledwindow overshoot.top:backdrop { + background-image: -gtk-gradient(radial, center top, 0, center top, 0.5, to(#5f6367), to(rgba(95, 99, 103, 0))); + background-size: 100% 5%; + background-repeat: no-repeat; + background-position: center top; + background-color: transparent; + border: none; + box-shadow: none; } +scrolledwindow overshoot.bottom { + background-image: -gtk-gradient(radial, center bottom, 0, center bottom, 0.5, to(#474a4c), to(rgba(71, 74, 76, 0))), -gtk-gradient(radial, center bottom, 0, center bottom, 0.6, from(rgba(255, 255, 255, 0.07)), to(rgba(255, 255, 255, 0))); + background-size: 100% 5%, 100% 100%; + background-repeat: no-repeat; + background-position: center bottom; + background-color: transparent; + border: none; + box-shadow: none; } + scrolledwindow overshoot.bottom:backdrop { + background-image: -gtk-gradient(radial, center bottom, 0, center bottom, 0.5, to(#5f6367), to(rgba(95, 99, 103, 0))); + background-size: 100% 5%; + background-repeat: no-repeat; + background-position: center bottom; + background-color: transparent; + border: none; + box-shadow: none; } +scrolledwindow overshoot.left { + background-image: -gtk-gradient(radial, left center, 0, left center, 0.5, to(#474a4c), to(rgba(71, 74, 76, 0))), -gtk-gradient(radial, left center, 0, left center, 0.6, from(rgba(255, 255, 255, 0.07)), to(rgba(255, 255, 255, 0))); + background-size: 5% 100%, 100% 100%; + background-repeat: no-repeat; + background-position: left center; + background-color: transparent; + border: none; + box-shadow: none; } + scrolledwindow overshoot.left:backdrop { + background-image: -gtk-gradient(radial, left center, 0, left center, 0.5, to(#5f6367), to(rgba(95, 99, 103, 0))); + background-size: 5% 100%; + background-repeat: no-repeat; + background-position: left center; + background-color: transparent; + border: none; + box-shadow: none; } +scrolledwindow overshoot.right { + background-image: -gtk-gradient(radial, right center, 0, right center, 0.5, to(#474a4c), to(rgba(71, 74, 76, 0))), -gtk-gradient(radial, right center, 0, right center, 0.6, from(rgba(255, 255, 255, 0.07)), to(rgba(255, 255, 255, 0))); + background-size: 5% 100%, 100% 100%; + background-repeat: no-repeat; + background-position: right center; + background-color: transparent; + border: none; + box-shadow: none; } + scrolledwindow overshoot.right:backdrop { + background-image: -gtk-gradient(radial, right center, 0, right center, 0.5, to(#5f6367), to(rgba(95, 99, 103, 0))); + background-size: 5% 100%; + background-repeat: no-repeat; + background-position: right center; + background-color: transparent; + border: none; + box-shadow: none; } +scrolledwindow undershoot { + background-image: none; + border: none; } + +/************ + * Pathbars * + ************/ +.path-bar { + background-color: #292f34; + border-bottom: 1px solid #5f6367; } + +.path-bar button { + border-color: rgba(255, 255, 255, 0); + background-color: transparent; + background-image: none; + box-shadow: none; + color: white; + text-shadow: none; + -gtk-icon-shadow: none; + padding: 4px 8px; + color: white; } + .path-bar button:hover { + border-color: #FF5F57; } + .path-bar button:active, .path-bar button:checked { + background-color: #5f6367; + font-weight: normal; } + .path-bar button.text-button, .path-bar button.image-button, .path-bar button { + padding-left: 4px; + padding-right: 4px; } + .path-bar button.text-button.image-button label { + padding-left: 0; + padding-right: 0; } + .path-bar button.text-button.image-button label:last-child, .path-bar button label:last-child { + padding-right: 8px; } + .path-bar button.text-button.image-button label:first-child, .path-bar button label:first-child { + padding-left: 8px; } + .path-bar button image { + padding-left: 4px; + padding-right: 4px; } + .path-bar button.slider-button { + padding-left: 0; + padding-right: 0; } + +/***************** + * Progress bars * + *****************/ +progressbar { + font-size: smaller; + color: rgba(255, 255, 255, 0.3); } + progressbar.horizontal trough, + progressbar.horizontal progress { + min-height: 6px; } + progressbar.vertical trough, + progressbar.vertical progress { + min-width: 6px; } + progressbar trough { + border: 0px solid transparent; + border-radius: 3px; + background-color: rgba(255, 255, 255, 0.3); } + progressbar:backdrop trough { + background-color: rgba(255, 255, 255, 0.3); } + progressbar progress { + background-color: #FF5F57; + border: 0px solid transparent; + border-radius: 3px; + box-shadow: none; } + progressbar:backdrop progress { + background-color: #FF5F57; } + progressbar.osd { + background-color: transparent; } + +treeview.view.progressbar { + border: 0px solid transparent; + border-radius: 3px; + background-color: #FF5F57; + color: white; + background-image: none; } + treeview.view.progressbar:selected:focus, treeview.view.progressbar:selected { + background-color: rgba(255, 255, 255, 0.25); } +treeview.view.trough { + background-color: #696d71; } + treeview.view.trough:selected:focus, treeview.view.trough:selected { + background-color: rgba(255, 255, 255, 0.3); } + +/************* + * Level Bar * + *************/ +levelbar block { + min-width: 32px; + min-height: 6px; } +levelbar.vertical block { + min-width: 6px; + min-height: 32px; } +levelbar trough { + border: 1px solid; + padding: 2px; + border-radius: 3px; + color: white; + border-color: #5f6367; + background-color: #292f34; + box-shadow: none; } + levelbar trough:backdrop { + color: white; + border-color: #5f6367; + background-color: #292f34; } +levelbar.horizontal.discrete block { + margin: 0 1px; } +levelbar.vertical.discrete block { + margin: 1px 0; } +levelbar block:not(.empty) { + border: 1px solid #FF5F57; + background-color: #FF5F57; + box-shadow: none; + border-radius: 1px; } + levelbar block:not(.empty):backdrop { + border-color: #FF5F57; + background-color: #FF5F57; } +levelbar block.low { + border-color: #e67e22; + background-color: #e67e22; } + levelbar block.low:backdrop { + background-color: #e67e22; + border-color: #e67e22; } +levelbar block.high { + border-color: #3498db; + background-color: #3498db; } + levelbar block.high:backdrop { + background-color: #3498db; + border-color: #3498db; } +levelbar block.full { + border-color: #3498db; + background-color: #3498db; } + levelbar block.full:backdrop { + background-color: #3498db; + border-color: #3498db; } +levelbar block.empty { + background-color: rgba(255, 255, 255, 0.3); + border-color: transparent; + box-shadow: none; } + levelbar block.empty:backdrop { + background-color: rgba(255, 255, 255, 0.3); } + +/************ + * GtkScale * + ************/ +scale.fine-tune.trough { + margin: 8px; + border-radius: 3px; } +scale slider { + min-width: 18px; + min-height: 18px; + background-color: #292f34; + border: 1px solid #5f6367; + border-radius: 50%; + box-shadow: none; + margin: -9px; } + scale slider:hover { + border-style: solid; + border-width: 2px; + border-color: #FF5F57; + border-radius: 50%; } + scale slider:hover:backdrop { + background-color: #292f34; + border-color: #FF5F57; } + scale slider:disabled { + border-style: solid; + border-radius: 50%; + background-color: #292f34; + border-color: rgba(86, 90, 94, 0.35); } + scale slider:disabled:backdrop { + background-color: #292f34; + border-color: rgba(86, 90, 94, 0.35); } + scale slider:active { + border: 2px solid #FF5F57; } + scale slider:active:backdrop { + background-color: #292f34; + border-color: #FF5F57; } + scale slider:backdrop { + background-color: #292f34; + border-color: #5f6367; } +scale trough { + min-width: 6px; + min-height: 6px; + margin: 9px; + border: 0px solid; + border-radius: 3px; + background-color: #696d71; + box-shadow: none; } + scale trough:disabled, scale trough.vertical:disabled { + border-color: rgba(95, 99, 103, 0.35); + background-color: rgba(95, 99, 103, 0.35); + box-shadow: none; } + scale trough:disabled:backdrop, scale trough.vertical:disabled:backdrop { + background-color: rgba(95, 99, 103, 0.35); + border-color: rgba(95, 99, 103, 0.35); } + scale trough:backdrop { + background-color: #696d71; + border-color: #696d71; } +scale highlight { + border: 0px solid; + border-radius: 3px; + background-color: #FF5F57; + border-color: #FF5F57; } + scale highlight.vertical { + background-color: #FF5F57; + border-color: #FF5F57; } + scale highlight:disabled { + background-color: rgba(24, 171, 142, 0.35); } + scale highlight:backdrop { + background-color: rgba(255, 95, 87, 0.5); + border-color: rgba(255, 95, 87, 0.5); } + scale highlight:backdrop:disabled { + background-color: rgba(24, 171, 142, 0.35); } + +/************** + * Scrollbars * + **************/ +scrollbar { + -GtkScrollbar-has-backward-stepper: true; + -GtkScrollbar-has-forward-stepper: true; + background-color: #292f34; + border-width: 3px 0px; + border-color: #292f34; + margin: 0px; } + scrollbar button { + min-width: 14px; + min-height: 14px; + margin: 0px; + padding: 0px 3px; + border: none; + border-radius: 0px; + background-image: none; + background-color: #292f34; + color: white; + box-shadow: none; } + scrollbar button:hover { + border: none; + background-image: none; + background-color: #292f34; + color: #FF5F57; } + scrollbar button:active, scrollbar button:active:hover { + border: none; + background-image: none; + background-color: #292f34; + color: #FF5F57; } + scrollbar button:disabled { + border: none; + background-color: #292f34; + background-image: none; + color: rgba(232, 232, 232, 0.35); } + scrollbar button:backdrop { + color: white; } + scrollbar button:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); } + scrollbar.dragging, scrollbar.hovering { + opacity: 0.9910; } + scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + opacity: 0.999; } + scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + -GtkScrollbar-has-backward-stepper: false; + -GtkScrollbar-has-forward-stepper: false; + background: none; } + scrollbar.overlay-indicator:not(.dragging):not(.hovering) slider { + min-width: 4px; + margin: 2px; + border: none; + border-radius: 2px; + background-color: #b4b6b8; } + scrollbar.overlay-indicator:not(.dragging):not(.hovering) slider:backdrop { + background-color: #b4b6b8; } + scrollbar.overlay-indicator:not(.dragging):not(.hovering) trough { + min-width: 4px; + min-height: 4px; + border: none; + background: none; + box-shadow: none; } + scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal slider { + min-height: 4px; } + scrollbar trough { + min-width: 16px; + min-height: 16px; + border: 0px solid transparent; + border-radius: 8px; + background-color: #696d71; + box-shadow: inset 0px 0px 0px 3px #292f34; } + scrollbar slider { + min-width: 10px; + min-height: 30px; + border: 2px solid transparent; + border-radius: 8px; + background-clip: padding-box; + background-color: #b4b6b8; } + scrollbar slider:hover { + background-color: #FF5F57; } + scrollbar slider:active { + background-color: #FF5F57; } + scrollbar slider:disabled { + background-color: rgba(163, 165, 168, 0.35); } + scrollbar slider:backdrop { + background-color: #b4b6b8; } + scrollbar slider:backdrop:disabled { + background-color: rgba(163, 165, 168, 0.35); } + scrollbar.horizontal slider { + min-width: 30px; + min-height: 10px; } + scrollbar.vertical button.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); } + scrollbar.vertical button.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); } + scrollbar.horizontal button.down { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); } + scrollbar.horizontal button.up { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); } + +/*********** + * Sidebar * + ***********/ +.sidebar { + border: none; + background-color: #292f34; } + .sidebar:backdrop { + background-color: #292f34; } + +placessidebar > viewport.frame { + border-style: none; } +placessidebar row { + min-height: 36px; + padding: 0px; } + placessidebar row > revealer { + padding: 0 14px; } + placessidebar row:selected { + color: white; } + placessidebar row:disabled { + color: rgba(232, 232, 232, 0.35); } + placessidebar row:backdrop { + color: white; } + placessidebar row:backdrop:selected { + color: #FF5F57; } + placessidebar row:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); } + placessidebar row image.sidebar-icon:dir(ltr) { + padding-right: 8px; } + placessidebar row image.sidebar-icon:dir(rtl) { + padding-left: 8px; } + placessidebar row label.sidebar-label:dir(ltr) { + padding-right: 2px; } + placessidebar row label.sidebar-label:dir(rtl) { + padding-left: 2px; } + button.sidebar-button { + min-height: 26px; + min-width: 26px; + margin-top: 3px; + margin-bottom: 3px; + padding: 0; } + placessidebar row:selected:active { + box-shadow: none; } + placessidebar row.sidebar-placeholder-row { + padding: 0 8px; + min-height: 2px; + background-image: none; + background-clip: content-box; } + placessidebar row.sidebar-new-bookmark-row { + color: #FF5F57; } + +placesview .server-list-button > image { + transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); + -gtk-icon-transform: rotate(0turn); } +placesview .server-list-button:checked > image { + transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); + -gtk-icon-transform: rotate(-0.5turn); } +placesview row.activatable:hover { + background-color: transparent; } +placesview > actionbar > revealer > box > label { + padding-left: 8px; + padding-right: 8px; } + +stacksidebar.sidebar row { + padding: 10px 4px; } + stacksidebar.sidebar row > label { + padding-left: 6px; + padding-right: 6px; } + stacksidebar.sidebar row.needs-attention > .label { + background-size: 6px 6px, 0 0; } + +/***************** + * GtkSpinButton * + *****************/ +spinbutton:not(.vertical) { + padding: 0; } + spinbutton:not(.vertical) entry { + min-width: 28px; + margin: 0; + background: none; + background-color: transparent; + border: none; + border-radius: 0; + box-shadow: none; } + spinbutton:not(.vertical) entry:backdrop:disabled { + background-color: transparent; } + spinbutton:not(.vertical) button { + min-height: 16px; + margin: 0; + padding-bottom: 0; + padding-top: 0; + color: white; + background-image: none; + background-color: transparent; + border-style: none; + box-shadow: none; } + spinbutton:not(.vertical) button:hover { + color: #FF5F57; } + spinbutton:not(.vertical) button:disabled { + color: rgba(232, 232, 232, 0.35); } + spinbutton:not(.vertical) button:active { + color: #FF5F57; + box-shadow: none; } + spinbutton:not(.vertical) button:backdrop { + color: white; + background-color: transparent; } + spinbutton:not(.vertical) button:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + background-color: transparent; + border-style: none; } + spinbutton:not(.vertical) button:dir(ltr):last-child { + border-radius: 0 3px 3px 0; } + spinbutton:not(.vertical) button:dir(rtl):first-child { + border-radius: 3px 0 0 3px; } +spinbutton.vertical:disabled { + color: rgba(232, 232, 232, 0.35); } +spinbutton.vertical:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); } +spinbutton.vertical:drop(active) { + border-color: transparent; + box-shadow: none; } +spinbutton.vertical entry { + margin: 0px; + min-height: 26px; + min-width: 26px; + border-style: none solid none solid; + border-color: #5f6367; + padding: 0; + border-radius: 0; } + spinbutton.vertical entry:disabled { + color: rgba(232, 232, 232, 0.35); + background-color: #252b2f; + border-color: rgba(86, 90, 94, 0.35); } + spinbutton.vertical entry:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + background-color: #252b2f; + border-color: rgba(86, 90, 94, 0.35); } +spinbutton.vertical button { + min-height: 26px; + min-width: 26px; + padding: 0; + box-shadow: none; + background-image: none; + background-color: #292f34; + color: white; + border-color: #5f6367; } + spinbutton.vertical button:hover { + color: #FF5F57; } + spinbutton.vertical button:active { + color: #FF5F57; } + spinbutton.vertical button:disabled { + color: rgba(232, 232, 232, 0.35); + background-color: #252b2f; + border-color: rgba(86, 90, 94, 0.35); } + spinbutton.vertical button:backdrop:disabled { + color: rgba(232, 232, 232, 0.35); + background-color: #252b2f; + border-color: rgba(86, 90, 94, 0.35); } +spinbutton.vertical button.up { + border-radius: 3px 3px 0 0; + border-style: solid solid none solid; } +spinbutton.vertical button.down { + border-radius: 0 0 3px 3px; + border-style: none solid solid solid; } +treeview spinbutton:not(.vertical) { + min-height: 0; + border-style: none; + border-radius: 0; } + treeview spinbutton:not(.vertical) entry { + min-height: 0; + padding: 1px 2px; } + +/********** + * Switch * + **********/ +switch { + margin: 2px; + font-weight: bold; + font-size: smaller; + min-width: 48px; + min-height: 24px; + border: 0px solid; + border-radius: 12px; + color: transparent; + background-color: rgba(255, 255, 255, 0.3); + text-shadow: none; } + switch:checked { + background-color: #FF5F57; } + switch:backdrop { + background-color: rgba(255, 255, 255, 0.3); + text-shadow: none; } + switch:backdrop:checked { + background-color: #FF5F57; } + switch slider { + min-width: 22px; + min-height: 22px; + border: 1px solid; + border-radius: 11px; + background-color: #292f34; + border-color: #5f6367; } + switch:hover slider { + border-color: #FF5F57; } + switch:disabled slider { + background-color: #252b2f; } + switch:backdrop slider { + background-color: #292f34; } + switch:backdrop:disabled slider { + background-color: #252b2f; } + +/************ + * Toolbars * + ************/ +toolbar, .inline-toolbar, searchbar, +.location-bar { + -GtkWidget-window-dragging: true; + padding: 4px; + background-color: #292f34; } + +toolbar { + padding: 4px 3px 3px 4px; } + toolbar:backdrop { + background-color: #292f34; + box-shadow: none; } + toolbar button { + margin: 2px; + padding: 3px; } + toolbar button.image-button, toolbar button.text-button.image-button { + padding: 3px; } + toolbar separator { + margin-left: 3px; + margin-right: 3px; } + toolbar entry { + margin: 3px; } + .osd toolbar { + background-color: transparent; } + toolbar.osd { + padding: 13px; + border: none; + border-radius: 3px; + background-color: #292f34; } + toolbar.osd:backdrop { + border-color: #5f6367; + background-color: #292f34; + box-shadow: none; } + toolbar.osd.left, toolbar.osd.right, toolbar.osd.top, toolbar.osd.bottom { + border-radius: 0; } + +.inline-toolbar { + border-width: 0px 0px 1px 0px; + padding: 3px; + border-radius: 0; } + +searchbar, +.location-bar { + border-width: 0px 0px 1px 0px; + padding: 3px; } + +.inline-toolbar, searchbar, +.location-bar { + border-style: solid; + border-color: #5f6367; + text-shadow: none; + background-color: #292f34; } + +/************ + * Tooltips * + ************/ +tooltip { + color: #f7f7f7; + padding: 4px; + /* not working */ + border-radius: 3px; + box-shadow: none; + text-shadow: none; } + tooltip.background { + background-color: #292f34; + background-clip: padding-box; } + tooltip.window-frame.csd { + background-color: transparent; + box-shadow: none; } + tooltip decoration { + background-color: transparent; } + +tooltip * { + padding: 0px; + background-color: transparent; + color: #f7f7f7; } + +/************** + * Tree Views * + **************/ +treeview.view { + -GtkTreeView-grid-line-width: 0; + -GtkTreeView-grid-line-pattern: ''; + -GtkTreeView-tree-line-width: 1; + -GtkTreeView-tree-line-pattern: ''; + -GtkTreeView-expander-size: 16; + border-left-color: #5f6367; + border-top-color: transparent; } + treeview.view:selected { + border-radius: 0; } + treeview.view:selected { + background-color: #FF5F57; + border-left-color: white; + border-top-color: white; } + treeview.view:backdrop:selected { + background-color: rgba(255, 95, 87, 0.5); + border-left-color: white; + border-top-color: white; } + treeview.view:disabled { + color: rgba(86, 90, 94, 0.35); } + treeview.view:disabled:selected { + color: rgba(232, 232, 232, 0.35); } + treeview.view:disabled:selected:backdrop { + color: rgba(232, 232, 232, 0.35); } + treeview.view:disabled:backdrop { + color: rgba(86, 90, 94, 0.35); } + treeview.view.seperator { + min-height: 2px; + color: #5f6367; } + treeview.view.separator:backdrop { + color: #5f6367; } + treeview.view:backdrop { + border-left-color: #5f6367; } + treeview.view:drop(active) { + border-style: solid none; + border-width: 1px; + border-color: #FF5F57; } + treeview.view.expander { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + color: white; } + treeview.view.expander:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); } + treeview.view.expander:hover { + color: #FF5F57; } + treeview.view.expander:selected { + color: white; } + treeview.view.expander:checked { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); } + treeview.view.expander:checked:selected { + color: white; } + treeview.view.expander:checked:backdrop { + color: #292f34; } + treeview.view.expander:backdrop { + color: #292f34; } + treeview.view header button { + color: white; + background-color: #292f34; + text-shadow: none; + box-shadow: none; } + treeview.view header button:hover { + color: white; + background-color: rgba(255, 95, 87, 0.5); + box-shadow: none; + transition: none; } + treeview.view header button:active { + color: white; + background-color: rgba(255, 95, 87, 0.5); + transition: none; } + treeview.view header button:last-child:backdrop, treeview.view header button:last-child { + border-right-style: none; } + treeview.view button.dnd:active, treeview.view button.dnd:selected, treeview.view button.dnd:hover, treeview.view button.dnd, + treeview.view header.button.dnd:active, + treeview.view header.button.dnd:selected, + treeview.view header.button.dnd:hover, + treeview.view header.button.dnd { + padding: 0 6px; + color: white; + background-image: none; + background-color: #FF5F57; + border-style: none; + border-radius: 0; + box-shadow: none; + text-shadow: none; + transition: none; } + +treeview.view header button, treeview.view header button:hover, treeview.view header button:active { + padding: 6px; + border-style: none solid solid none; + border-radius: 0; + background-image: none; + border-color: #5f6367; + text-shadow: none; } + treeview.view header button:disabled { + border-color: rgba(86, 90, 94, 0.35); + color: rgba(232, 232, 232, 0.35); + background-color: #252b2f; + background-image: none; } + treeview.view header button:backdrop { + border-color: #5f6367; + border-style: none solid solid none; + color: white; + background-image: none; + background-color: #292f34; } + treeview.view header button:backdrop:disabled { + border-color: rgba(86, 90, 94, 0.35); + background-image: none; + background-color: #252b2f; + color: rgba(232, 232, 232, 0.35); } + +/********************** + * Window Decorations * + *********************/ +decoration { + border-radius: 3px 3px 0 0; + border-width: 0px; + box-shadow: 0 2px 6px 1px rgba(0, 0, 0, 0.5); + /* this is used for the resize cursor area */ + margin: 10px; } + .maximized decoration, .fullscreen decoration, .tiled decoration { + border-radius: 0; } + .popup decoration { + border-radius: 3px; + box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.1); } + .ssd decoration { + box-shadow: 0 2px 6px 1px rgba(0, 0, 0, 0.1); } + .csd decoration { + border-radius: 3px; } + .csd decoration.popup { + box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.1); } + .csd decoration.tooltip { + box-shadow: none; } + .csd decoration.message-dialog { + box-shadow: 0 2px 6px 1px rgba(0, 0, 0, 0.5); } + .solid-csd decoration { + border-radius: 0; + margin: 0; + padding: 1px; + border: none; + background-color: #5f6367; + box-shadow: none; } + +headerbar.default-decoration button.titlebutton, +.titlebar.default-decoration button.titlebutton { + padding: 6px 1px; + min-height: 18px; + min-width: 18px; + margin: 0; } +headerbar button.titlebutton, +.titlebar button.titlebutton { + padding: 6px; } + headerbar button.titlebutton:hover, headerbar button.titlebutton:active, headerbar button.titlebutton:checked, headerbar button.titlebutton:backdrop, headerbar button.titlebutton:active:hover, + .titlebar button.titlebutton:hover, + .titlebar button.titlebutton:active, + .titlebar button.titlebutton:checked, + .titlebar button.titlebutton:backdrop, + .titlebar button.titlebutton:active:hover { + transition: none; } + headerbar button.titlebutton.close, + .titlebar button.titlebutton.close { + padding: 6px 1px; + color: transparent; + border-image: none; + box-shadow: none; + background-position: center; + background-repeat: no-repeat + } + headerbar button.titlebutton.close:hover, + .titlebar button.titlebutton.close:hover { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.close:active, + .titlebar button.titlebutton.close:active { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.close:backdrop, + .titlebar button.titlebutton.close:backdrop { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.maximize, + .titlebar button.titlebutton.maximize { + padding: 6px 1px; + color: transparent; + border-image: none; + box-shadow: none; + background-position: center; + background-repeat: no-repeat; + } + headerbar button.titlebutton.maximize:hover, + .titlebar button.titlebutton.maximize:hover { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.maximize:active, + .titlebar button.titlebutton.maximize:active { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.maximize:backdrop, + .titlebar button.titlebutton.maximize:backdrop { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.minimize, + .titlebar button.titlebutton.minimize { + padding: 6px 1px; + color: transparent; + border-image: none; + box-shadow: none; + background-position: center; + background-repeat: no-repeat; + } + headerbar button.titlebutton.minimize:hover, + .titlebar button.titlebutton.minimize:hover { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.minimize:active, + .titlebar button.titlebutton.minimize:active { + border-color: transparent; + background-color: transparent; + } + headerbar button.titlebutton.minimize:backdrop, + .titlebar button.titlebutton.minimize:backdrop { + border-color: transparent; + background-color: transparent; + } +.maximized headerbar button.titlebutton.maximize, .maximized +.titlebar button.titlebutton.maximize { + padding: 6px 1px; + color: transparent; + border-image: none; + box-shadow: none; + background-position: center; + background-repeat: no-repeat; + } +.maximized headerbar button.titlebutton.maximize:hover, .maximized +.titlebar button.titlebutton.maximize:hover { + border-color: transparent; + background-color: transparent; + } +.maximized headerbar button.titlebutton.maximize:active, .maximized +.titlebar button.titlebutton.maximize:active { + border-color: transparent; + background-color: transparent; + } +.maximized headerbar button.titlebutton.maximize:backdrop, .maximized +.titlebar button.titlebutton.maximize:backdrop { + border-color: transparent; + background-color: transparent; + } + +headerbar.selection-mode button.titlebutton, +.titlebar.selection-mode button.titlebutton { + text-shadow: none; } + headerbar.selection-mode button.titlebutton:backdrop, + .titlebar.selection-mode button.titlebutton:backdrop { + -gtk-icon-shadow: none; } + +/* + Original theme source: https://gitlab.manjaro.org/artwork/themes/breath-gtk + Changes to original: + - all refrences to assets have been removed + - green hex codes been changed to #FF5F57 +*/ + +/* + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +(This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.) + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS +*/ \ No newline at end of file diff --git a/Ryujinx/Ui/AboutWindow.cs b/Ryujinx/Ui/AboutWindow.cs new file mode 100644 index 0000000000..6f31b9cdea --- /dev/null +++ b/Ryujinx/Ui/AboutWindow.cs @@ -0,0 +1,116 @@ +using Gtk; +using GUI = Gtk.Builder.ObjectAttribute; +using System; +using System.Diagnostics; +using System.Reflection; +using System.Runtime.InteropServices; +using Utf8Json; +using Utf8Json.Resolvers; +using System.IO; + +namespace Ryujinx.UI +{ + public struct Info + { + public string InstallVersion; + public string InstallCommit; + public string InstallBranch; + } + + public class AboutWindow : Window + { + public static Info Information { get; private set; } + +#pragma warning disable 649 + [GUI] Window _aboutWin; + [GUI] Label _versionText; + [GUI] Image _ryujinxLogo; + [GUI] Image _patreonLogo; + [GUI] Image _gitHubLogo; + [GUI] Image _discordLogo; + [GUI] Image _twitterLogo; +#pragma warning restore 649 + + public AboutWindow() : this(new Builder("Ryujinx.Ui.AboutWindow.glade")) { } + + private AboutWindow(Builder builder) : base(builder.GetObject("_aboutWin").Handle) + { + builder.Autoconnect(this); + + _aboutWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.RyujinxIcon.png"); + _ryujinxLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.RyujinxIcon.png", 100, 100); + _patreonLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.PatreonLogo.png", 30 , 30 ); + _gitHubLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.GitHubLogo.png" , 30 , 30 ); + _discordLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.DiscordLogo.png", 30 , 30 ); + _twitterLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.TwitterLogo.png", 30 , 30 ); + + try + { + IJsonFormatterResolver resolver = CompositeResolver.Create(new[] { StandardResolver.AllowPrivateSnakeCase }); + + using (Stream stream = File.OpenRead(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "Installer", "Config", "Config.json"))) + { + Information = JsonSerializer.Deserialize(stream, resolver); + } + + _versionText.Text = $"Version {Information.InstallVersion} - {Information.InstallBranch} ({Information.InstallCommit})"; + } + catch + { + _versionText.Text = "Unknown Version"; + } + } + + public void OpenUrl(string url) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + Process.Start(new ProcessStartInfo("cmd", $"/c start {url}")); + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + Process.Start("xdg-open", url); + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + Process.Start("open", url); + } + } + + //Events + private void RyujinxButton_Pressed(object obj, ButtonPressEventArgs args) + { + OpenUrl("https://ryujinx.org"); + } + + private void PatreonButton_Pressed(object obj, ButtonPressEventArgs args) + { + OpenUrl("https://www.patreon.com/ryujinx"); + } + + private void GitHubButton_Pressed(object obj, ButtonPressEventArgs args) + { + OpenUrl("https://github.com/Ryujinx/Ryujinx"); + } + + private void DiscordButton_Pressed(object obj, ButtonPressEventArgs args) + { + OpenUrl("https://discordapp.com/invite/N2FmfVc"); + } + + private void TwitterButton_Pressed(object obj, ButtonPressEventArgs args) + { + OpenUrl("https://twitter.com/RyujinxEmu"); + } + + private void ContributersButton_Pressed(object obj, ButtonPressEventArgs args) + { + OpenUrl("https://github.com/Ryujinx/Ryujinx/graphs/contributors?type=a"); + } + + private void CloseToggle_Activated(object obj, EventArgs args) + { + Destroy(); + } + } +} diff --git a/Ryujinx/Ui/AboutWindow.glade b/Ryujinx/Ui/AboutWindow.glade new file mode 100644 index 0000000000..28a8007203 --- /dev/null +++ b/Ryujinx/Ui/AboutWindow.glade @@ -0,0 +1,574 @@ + + + + + + False + False + True + center + 800 + 350 + dialog + + + + + + False + vertical + + + False + + + False + False + 0 + + + + + True + False + + + True + False + 10 + 15 + 10 + 15 + vertical + + + True + False + start + vertical + + + True + False + + + + True + True + 0 + + + + + True + False + center + vertical + + + True + False + Ryujinx + center + + + + + + False + True + 0 + + + + + True + False + (REE-YOU-JI-NX) + center + + + False + True + 1 + + + + + True + False + + + + True + False + Click to open the Ryujinx website in your default browser + www.ryujinx.org + center + + + + + + + + False + True + 5 + 2 + + + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + Version x.x.x (Commit Number) + center + + + False + True + 2 + 1 + + + + + True + False + Unlicenced + center + + + False + True + 5 + 2 + + + + + True + False + Ryujinx is not affiliated with Nintendo, +or any of its partners, in any way + center + + + + + + False + True + 5 + 3 + + + + + False + False + 0 + + + + + True + False + 25 + + + True + False + Click to open the Ryujinx Patreon page in your default browser + + + + True + False + vertical + + + + True + True + 0 + + + + + True + False + Patreon + + + False + True + 1 + + + + + + + True + True + 0 + + + + + True + False + Click to open the Ryujinx GitHub page in your default browser + + + + True + False + vertical + + + + True + True + 0 + + + + + True + False + GitHub + + + False + True + 1 + + + + + + + True + True + 1 + + + + + True + False + Click to open an invite to the Ryujinx Discord server in your default browser + + + + True + False + vertical + + + + True + True + 0 + + + + + True + False + Discord + + + False + True + 1 + + + + + + + True + True + 2 + + + + + True + False + Click to open the Ryujinx Twitter page in your default browser + + + + True + False + vertical + + + + True + True + 0 + + + + + True + False + Twitter + + + False + True + 1 + + + + + + + True + True + 3 + + + + + False + False + end + 2 + + + + + True + False + 0 + + + + + True + False + 10 + 10 + + + False + True + 1 + + + + + True + False + 15 + 10 + 40 + 15 + vertical + + + True + False + start + About + + + + + + False + True + 0 + + + + + True + False + start + 10 + Ryujinx is an emulator for the Nintendo Switch. +Please support us on Patreon. +Get all the latest news on our Twitter or Discord. +Developers interested in contributing can find out more on our Discord. + + + False + True + 5 + 1 + + + + + True + False + start + Created By: + + + + + + False + True + 5 + 2 + + + + + True + False + 10 + vertical + + + True + True + in + + + True + False + + + True + False + top + + + True + False + start + gdkchan +LDj3SNuD +Ac_K +Thog + 0 + + + True + True + 0 + + + + + True + False + start + »jD« +emmaus +Thealexbarney +Andy A (BaronKiko) + 0 + + + True + True + 1 + + + + + + + + + True + True + 0 + + + + + True + False + start + + + + True + False + end + 5 + All Contributors... + + + + + + + + False + False + 2 + + + + + True + True + 3 + + + + + True + True + 2 + + + + + True + True + 1 + + + + + + diff --git a/Ryujinx/Ui/ApplicationLibrary.cs b/Ryujinx/Ui/ApplicationLibrary.cs new file mode 100644 index 0000000000..7e731f7947 --- /dev/null +++ b/Ryujinx/Ui/ApplicationLibrary.cs @@ -0,0 +1,450 @@ +using LibHac; +using LibHac.Fs; +using LibHac.Fs.NcaUtils; +using Ryujinx.Common.Logging; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using SystemState = Ryujinx.HLE.HOS.SystemState; + +namespace Ryujinx.UI +{ + public class ApplicationLibrary + { + private static Keyset KeySet; + private static SystemState.TitleLanguage DesiredTitleLanguage; + + private const double SecondsPerMinute = 60.0; + private const double SecondsPerHour = SecondsPerMinute * 60; + private const double SecondsPerDay = SecondsPerHour * 24; + + public static byte[] RyujinxNspIcon { get; private set; } + public static byte[] RyujinxXciIcon { get; private set; } + public static byte[] RyujinxNcaIcon { get; private set; } + public static byte[] RyujinxNroIcon { get; private set; } + public static byte[] RyujinxNsoIcon { get; private set; } + + public static List ApplicationLibraryData { get; private set; } + + public struct ApplicationData + { + public byte[] Icon; + public string TitleName; + public string TitleId; + public string Developer; + public string Version; + public string TimePlayed; + public string LastPlayed; + public string FileExt; + public string FileSize; + public string Path; + } + + public static void Init(List AppDirs, Keyset keySet, SystemState.TitleLanguage desiredTitleLanguage) + { + KeySet = keySet; + DesiredTitleLanguage = desiredTitleLanguage; + + // Loads the default application Icons + RyujinxNspIcon = GetResourceBytes("Ryujinx.Ui.assets.ryujinxNSPIcon.png"); + RyujinxXciIcon = GetResourceBytes("Ryujinx.Ui.assets.ryujinxXCIIcon.png"); + RyujinxNcaIcon = GetResourceBytes("Ryujinx.Ui.assets.ryujinxNCAIcon.png"); + RyujinxNroIcon = GetResourceBytes("Ryujinx.Ui.assets.ryujinxNROIcon.png"); + RyujinxNsoIcon = GetResourceBytes("Ryujinx.Ui.assets.ryujinxNSOIcon.png"); + + // Builds the applications list with paths to found applications + List applications = new List(); + foreach (string appDir in AppDirs) + { + if (Directory.Exists(appDir) == false) + { + Logger.PrintWarning(LogClass.Application, $"The \"game_dirs\" section in \"Config.json\" contains an invalid directory: \"{appDir}\""); + + continue; + } + + DirectoryInfo AppDirInfo = new DirectoryInfo(appDir); + foreach (FileInfo App in AppDirInfo.GetFiles()) + { + if ((Path.GetExtension(App.ToString()) == ".xci") || + (Path.GetExtension(App.ToString()) == ".nca") || + (Path.GetExtension(App.ToString()) == ".nsp") || + (Path.GetExtension(App.ToString()) == ".pfs0") || + (Path.GetExtension(App.ToString()) == ".nro") || + (Path.GetExtension(App.ToString()) == ".nso")) + { + applications.Add(App.ToString()); + } + } + } + + // Loops through applications list, creating a struct for each application and then adding the struct to a list of structs + ApplicationLibraryData = new List(); + foreach (string applicationPath in applications) + { + double filesize = new FileInfo(applicationPath).Length * 0.000000000931; + string titleName = null; + string titleId = null; + string developer = null; + string version = null; + byte[] applicationIcon = null; + + using (FileStream file = new FileStream(applicationPath, FileMode.Open, FileAccess.Read)) + { + if ((Path.GetExtension(applicationPath) == ".nsp") || + (Path.GetExtension(applicationPath) == ".pfs0") || + (Path.GetExtension(applicationPath) == ".xci")) + { + try + { + IFileSystem controlFs = null; + + // Store the ControlFS in variable called controlFs + if (Path.GetExtension(applicationPath) == ".xci") + { + Xci xci = new Xci(KeySet, file.AsStorage()); + + controlFs = GetControlFs(xci.OpenPartition(XciPartitionType.Secure)); + } + else + { + controlFs = GetControlFs(new PartitionFileSystem(file.AsStorage())); + } + + // Creates NACP class from the NACP file + IFile controlNacp = controlFs.OpenFile("/control.nacp", OpenMode.Read); + Nacp controlData = new Nacp(controlNacp.AsStream()); + + // Get the title name, title ID, developer name and version number from the NACP + version = controlData.DisplayVersion; + + titleName = controlData.Descriptions[(int)DesiredTitleLanguage].Title; + + if (string.IsNullOrWhiteSpace(titleName)) + { + titleName = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title; + } + + titleId = controlData.PresenceGroupId.ToString("x16"); + + if (string.IsNullOrWhiteSpace(titleId)) + { + titleId = controlData.SaveDataOwnerId.ToString("x16"); + } + + if (string.IsNullOrWhiteSpace(titleId)) + { + titleId = (controlData.AddOnContentBaseId - 0x1000).ToString("x16"); + } + + developer = controlData.Descriptions[(int)DesiredTitleLanguage].Developer; + + if (string.IsNullOrWhiteSpace(developer)) + { + developer = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Developer)).Developer; + } + + // Read the icon from the ControlFS and store it as a byte array + try + { + IFile icon = controlFs.OpenFile($"/icon_{DesiredTitleLanguage}.dat", OpenMode.Read); + using (MemoryStream stream = new MemoryStream()) + { + icon.AsStream().CopyTo(stream); + applicationIcon = stream.ToArray(); + } + } + catch (HorizonResultException) + { + IDirectory controlDir = controlFs.OpenDirectory("./", OpenDirectoryMode.All); + foreach (DirectoryEntry entry in controlDir.Read()) + { + if (entry.Name == "control.nacp") + { + continue; + } + + IFile icon = controlFs.OpenFile(entry.FullPath, OpenMode.Read); + using (MemoryStream stream = new MemoryStream()) + { + icon.AsStream().CopyTo(stream); + applicationIcon = stream.ToArray(); + } + + if (applicationIcon != null) + { + break; + } + } + + if (applicationIcon == null) + { + applicationIcon = NspOrXciIcon(applicationPath); + } + } + } + catch (MissingKeyException exception) + { + titleName = "Unknown"; + titleId = "Unknown"; + developer = "Unknown"; + version = "?"; + applicationIcon = NspOrXciIcon(applicationPath); + + Logger.PrintWarning(LogClass.Application, $"Your key set is missing a key with the name: {exception.Name}"); + } + catch (InvalidDataException) + { + titleName = "Unknown"; + titleId = "Unknown"; + developer = "Unknown"; + version = "?"; + applicationIcon = NspOrXciIcon(applicationPath); + + Logger.PrintWarning(LogClass.Application, $"The file is not an NCA file or the header key is incorrect. Errored File: {applicationPath}"); + } + catch (Exception exception) + { + Logger.PrintWarning(LogClass.Application, $"This warning usualy means that you have a DLC in one of you game directories\n{exception}"); + + continue; + } + } + else if (Path.GetExtension(applicationPath) == ".nro") + { + BinaryReader reader = new BinaryReader(file); + + byte[] Read(long Position, int Size) + { + file.Seek(Position, SeekOrigin.Begin); + + return reader.ReadBytes(Size); + } + + file.Seek(24, SeekOrigin.Begin); + int AssetOffset = reader.ReadInt32(); + + if (Encoding.ASCII.GetString(Read(AssetOffset, 4)) == "ASET") + { + byte[] IconSectionInfo = Read(AssetOffset + 8, 0x10); + + long iconOffset = BitConverter.ToInt64(IconSectionInfo, 0); + long iconSize = BitConverter.ToInt64(IconSectionInfo, 8); + + ulong nacpOffset = reader.ReadUInt64(); + ulong nacpSize = reader.ReadUInt64(); + + // Reads and stores game icon as byte array + applicationIcon = Read(AssetOffset + iconOffset, (int)iconSize); + + // Creates memory stream out of byte array which is the NACP + using (MemoryStream stream = new MemoryStream(Read(AssetOffset + (int)nacpOffset, (int)nacpSize))) + { + // Creates NACP class from the memory stream + Nacp controlData = new Nacp(stream); + + // Get the title name, title ID, developer name and version number from the NACP + version = controlData.DisplayVersion; + + titleName = controlData.Descriptions[(int)DesiredTitleLanguage].Title; + + if (string.IsNullOrWhiteSpace(titleName)) + { + titleName = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title; + } + + titleId = controlData.PresenceGroupId.ToString("x16"); + + if (string.IsNullOrWhiteSpace(titleId)) + { + titleId = controlData.SaveDataOwnerId.ToString("x16"); + } + + if (string.IsNullOrWhiteSpace(titleId)) + { + titleId = (controlData.AddOnContentBaseId - 0x1000).ToString("x16"); + } + + developer = controlData.Descriptions[(int)DesiredTitleLanguage].Developer; + + if (string.IsNullOrWhiteSpace(developer)) + { + developer = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Developer)).Developer; + } + } + } + else + { + applicationIcon = RyujinxNroIcon; + titleName = "Application"; + titleId = "0000000000000000"; + developer = "Unknown"; + version = "?"; + } + } + // If its an NCA or NSO we just set defaults + else if ((Path.GetExtension(applicationPath) == ".nca") || (Path.GetExtension(applicationPath) == ".nso")) + { + if (Path.GetExtension(applicationPath) == ".nca") + { + applicationIcon = RyujinxNcaIcon; + } + else if (Path.GetExtension(applicationPath) == ".nso") + { + applicationIcon = RyujinxNsoIcon; + } + + string fileName = Path.GetFileName(applicationPath); + string fileExt = Path.GetExtension(applicationPath); + + StringBuilder titlename = new StringBuilder(); + titlename.Append(fileName); + titlename.Remove(fileName.Length - fileExt.Length, fileExt.Length); + + titleName = titlename.ToString(); + titleId = "0000000000000000"; + version = "?"; + developer = "Unknown"; + } + } + + string[] playedData = GetPlayedData(titleId, "00000000000000000000000000000001"); + + ApplicationData data = new ApplicationData() + { + Icon = applicationIcon, + TitleName = titleName, + TitleId = titleId, + Developer = developer, + Version = version, + TimePlayed = playedData[0], + LastPlayed = playedData[1], + FileExt = Path.GetExtension(applicationPath).ToUpper().Remove(0 ,1), + FileSize = (filesize < 1) ? (filesize * 1024).ToString("0.##") + "MB" : filesize.ToString("0.##") + "GB", + Path = applicationPath, + }; + + ApplicationLibraryData.Add(data); + } + } + + private static byte[] GetResourceBytes(string resourceName) + { + Stream resourceStream = Assembly.GetCallingAssembly().GetManifestResourceStream(resourceName); + byte[] resourceByteArray = new byte[resourceStream.Length]; + + resourceStream.Read(resourceByteArray); + + return resourceByteArray; + } + + private static IFileSystem GetControlFs(PartitionFileSystem Pfs) + { + Nca controlNca = null; + + // Add keys to keyset if needed + foreach (DirectoryEntry ticketEntry in Pfs.EnumerateEntries("*.tik")) + { + Ticket ticket = new Ticket(Pfs.OpenFile(ticketEntry.FullPath, OpenMode.Read).AsStream()); + + if (!KeySet.TitleKeys.ContainsKey(ticket.RightsId)) + { + KeySet.TitleKeys.Add(ticket.RightsId, ticket.GetTitleKey(KeySet)); + } + } + + // Find the Control NCA and store it in variable called controlNca + foreach (DirectoryEntry fileEntry in Pfs.EnumerateEntries("*.nca")) + { + Nca nca = new Nca(KeySet, Pfs.OpenFile(fileEntry.FullPath, OpenMode.Read).AsStorage()); + if (nca.Header.ContentType == ContentType.Control) + { + controlNca = nca; + } + } + + // Return the ControlFS + return controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None); + } + + private static string[] GetPlayedData(string TitleId, string UserId) + { + try + { + string[] playedData = new string[2]; + string savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "nand", "user", "save", "0000000000000000", UserId, TitleId); + + if (File.Exists(Path.Combine(savePath, "TimePlayed.dat")) == false) + { + Directory.CreateDirectory(savePath); + using (FileStream file = File.OpenWrite(Path.Combine(savePath, "TimePlayed.dat"))) + { + file.Write(Encoding.ASCII.GetBytes("0")); + } + } + using (FileStream fs = File.OpenRead(Path.Combine(savePath, "TimePlayed.dat"))) + { + using (StreamReader sr = new StreamReader(fs)) + { + float timePlayed = float.Parse(sr.ReadLine()); + + if (timePlayed < SecondsPerMinute) + { + playedData[0] = $"{timePlayed}s"; + } + else if (timePlayed < SecondsPerHour) + { + playedData[0] = $"{Math.Round(timePlayed / SecondsPerMinute, 2, MidpointRounding.AwayFromZero)} mins"; + } + else if (timePlayed < SecondsPerDay) + { + playedData[0] = $"{Math.Round(timePlayed / SecondsPerHour , 2, MidpointRounding.AwayFromZero)} hrs"; + } + else + { + playedData[0] = $"{Math.Round(timePlayed / SecondsPerDay , 2, MidpointRounding.AwayFromZero)} days"; + } + } + } + + if (File.Exists(Path.Combine(savePath, "LastPlayed.dat")) == false) + { + Directory.CreateDirectory(savePath); + using (FileStream file = File.OpenWrite(Path.Combine(savePath, "LastPlayed.dat"))) + { + file.Write(Encoding.ASCII.GetBytes("Never")); + } + } + + using (FileStream fs = File.OpenRead(Path.Combine(savePath, "LastPlayed.dat"))) + { + using (StreamReader sr = new StreamReader(fs)) + { + playedData[1] = sr.ReadLine(); + } + } + + return playedData; + } + catch + { + return new string[] { "Unknown", "Unknown" }; + } + } + + private static byte[] NspOrXciIcon(string applicationPath) + { + if (Path.GetExtension(applicationPath) == ".xci") + { + return RyujinxXciIcon; + } + else + { + return RyujinxNspIcon; + } + } + } +} diff --git a/Ryujinx/Ui/GLScreen.cs b/Ryujinx/Ui/GLScreen.cs index a881959cfa..7c39463009 100644 --- a/Ryujinx/Ui/GLScreen.cs +++ b/Ryujinx/Ui/GLScreen.cs @@ -10,7 +10,7 @@ using System.Threading; using Stopwatch = System.Diagnostics.Stopwatch; -namespace Ryujinx +namespace Ryujinx.UI { public class GlScreen : GameWindow { diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs new file mode 100644 index 0000000000..132c90e6dd --- /dev/null +++ b/Ryujinx/Ui/MainWindow.cs @@ -0,0 +1,601 @@ +using DiscordRPC; +using Gtk; +using GUI = Gtk.Builder.ObjectAttribute; +using Ryujinx.Audio; +using Ryujinx.Common.Logging; +using Ryujinx.Graphics.Gal; +using Ryujinx.Graphics.Gal.OpenGL; +using Ryujinx.Profiler; +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; + +namespace Ryujinx.UI +{ + public class MainWindow : Window + { + internal static HLE.Switch _device; + + private static IGalRenderer _renderer; + + private static IAalOutput _audioOut; + + private static Application _gtkApplication; + + private static ListStore _tableStore; + + private static bool _gameLoaded = false; + + private static string _userId = "00000000000000000000000000000001"; + + public static bool DiscordIntegrationEnabled { get; set; } + + public static DiscordRpcClient DiscordClient; + + public static RichPresence DiscordPresence; + +#pragma warning disable 649 + [GUI] Window _mainWin; + [GUI] CheckMenuItem _fullScreen; + [GUI] MenuItem _stopEmulation; + [GUI] CheckMenuItem _iconToggle; + [GUI] CheckMenuItem _titleToggle; + [GUI] CheckMenuItem _developerToggle; + [GUI] CheckMenuItem _versionToggle; + [GUI] CheckMenuItem _timePlayedToggle; + [GUI] CheckMenuItem _lastPlayedToggle; + [GUI] CheckMenuItem _fileExtToggle; + [GUI] CheckMenuItem _fileSizeToggle; + [GUI] CheckMenuItem _pathToggle; + [GUI] Box _box; + [GUI] TreeView _gameTable; + [GUI] GLArea _glScreen; +#pragma warning restore 649 + + public MainWindow(string[] args, Application gtkApplication) : this(new Builder("Ryujinx.Ui.MainWindow.glade"), args, gtkApplication) { } + + private MainWindow(Builder builder, string[] args, Application gtkApplication) : base(builder.GetObject("_mainWin").Handle) + { + _renderer = new OglRenderer(); + + _audioOut = InitializeAudioEngine(); + + _device = new HLE.Switch(_renderer, _audioOut); + + Configuration.Load(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + Configuration.InitialConfigure(_device); + + ApplicationLibrary.Init(SwitchSettings.SwitchConfig.GameDirs, _device.System.KeySet, _device.System.State.DesiredTitleLanguage); + + _gtkApplication = gtkApplication; + + ApplyTheme(); + + if (DiscordIntegrationEnabled) + { + DiscordClient = new DiscordRpcClient("568815339807309834"); + DiscordPresence = new RichPresence + { + Assets = new Assets + { + LargeImageKey = "ryujinx", + LargeImageText = "Ryujinx is an emulator for the Nintendo Switch" + }, + Details = "Main Menu", + State = "Idling", + Timestamps = new Timestamps(DateTime.UtcNow) + }; + + DiscordClient.Initialize(); + DiscordClient.SetPresence(DiscordPresence); + } + + builder.Autoconnect(this); + + DeleteEvent += Window_Close; + + _mainWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.RyujinxIcon.png"); + _stopEmulation.Sensitive = false; + + if (SwitchSettings.SwitchConfig.GuiColumns[0]) { _iconToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[1]) { _titleToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[2]) { _developerToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[3]) { _versionToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[4]) { _timePlayedToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[5]) { _lastPlayedToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[6]) { _fileExtToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[7]) { _fileSizeToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns[8]) { _pathToggle.Active = true; } + + if (args.Length == 1) + { + // Temporary code section start, remove this section when game is rendered to the GLArea in the GUI + _box.Remove(_glScreen); + + if (SwitchSettings.SwitchConfig.GuiColumns[0]) { _gameTable.AppendColumn("Icon", new CellRendererPixbuf(), "pixbuf", 0); } + if (SwitchSettings.SwitchConfig.GuiColumns[1]) { _gameTable.AppendColumn("Application", new CellRendererText(), "text", 1); } + if (SwitchSettings.SwitchConfig.GuiColumns[2]) { _gameTable.AppendColumn("Developer", new CellRendererText(), "text", 2); } + if (SwitchSettings.SwitchConfig.GuiColumns[3]) { _gameTable.AppendColumn("Version", new CellRendererText(), "text", 3); } + if (SwitchSettings.SwitchConfig.GuiColumns[4]) { _gameTable.AppendColumn("Time Played", new CellRendererText(), "text", 4); } + if (SwitchSettings.SwitchConfig.GuiColumns[5]) { _gameTable.AppendColumn("Last Played", new CellRendererText(), "text", 5); } + if (SwitchSettings.SwitchConfig.GuiColumns[6]) { _gameTable.AppendColumn("File Ext", new CellRendererText(), "text", 6); } + if (SwitchSettings.SwitchConfig.GuiColumns[7]) { _gameTable.AppendColumn("File Size", new CellRendererText(), "text", 7); } + if (SwitchSettings.SwitchConfig.GuiColumns[8]) { _gameTable.AppendColumn("Path", new CellRendererText(), "text", 8); } + + _tableStore = new ListStore(typeof(Gdk.Pixbuf), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string)); + _gameTable.Model = _tableStore; + + UpdateGameTable(); + // Temporary code section end + + LoadApplication(args[0]); + } + else + { + _box.Remove(_glScreen); + + if (SwitchSettings.SwitchConfig.GuiColumns[0]) { _gameTable.AppendColumn("Icon", new CellRendererPixbuf(), "pixbuf", 0); } + if (SwitchSettings.SwitchConfig.GuiColumns[1]) { _gameTable.AppendColumn("Application", new CellRendererText(), "text", 1); } + if (SwitchSettings.SwitchConfig.GuiColumns[2]) { _gameTable.AppendColumn("Developer", new CellRendererText(), "text", 2); } + if (SwitchSettings.SwitchConfig.GuiColumns[3]) { _gameTable.AppendColumn("Version", new CellRendererText(), "text", 3); } + if (SwitchSettings.SwitchConfig.GuiColumns[4]) { _gameTable.AppendColumn("Time Played", new CellRendererText(), "text", 4); } + if (SwitchSettings.SwitchConfig.GuiColumns[5]) { _gameTable.AppendColumn("Last Played", new CellRendererText(), "text", 5); } + if (SwitchSettings.SwitchConfig.GuiColumns[6]) { _gameTable.AppendColumn("File Ext", new CellRendererText(), "text", 6); } + if (SwitchSettings.SwitchConfig.GuiColumns[7]) { _gameTable.AppendColumn("File Size", new CellRendererText(), "text", 7); } + if (SwitchSettings.SwitchConfig.GuiColumns[8]) { _gameTable.AppendColumn("Path", new CellRendererText(), "text", 8); } + + _tableStore = new ListStore(typeof(Gdk.Pixbuf), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string)); + _gameTable.Model = _tableStore; + + UpdateGameTable(); + } + } + + public static void CreateErrorDialog(string errorMessage) + { + MessageDialog errorDialog = new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, errorMessage) + { + Title = "Ryujinx - Error", + Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.RyujinxIcon.png"), + WindowPosition = WindowPosition.Center + }; + errorDialog.SetSizeRequest(100, 20); + errorDialog.Run(); + errorDialog.Destroy(); + } + + public static void UpdateGameTable() + { + _tableStore.Clear(); + ApplicationLibrary.Init(SwitchSettings.SwitchConfig.GameDirs, _device.System.KeySet, _device.System.State.DesiredTitleLanguage); + + foreach (ApplicationLibrary.ApplicationData AppData in ApplicationLibrary.ApplicationLibraryData) + { + _tableStore.AppendValues(new Gdk.Pixbuf(AppData.Icon, 75, 75), $"{AppData.TitleName}\n{AppData.TitleId.ToUpper()}", AppData.Developer, AppData.Version, AppData.TimePlayed, AppData.LastPlayed, AppData.FileExt, AppData.FileSize, AppData.Path); + } + } + + public static void ApplyTheme() + { + CssProvider cssProvider = new CssProvider(); + + if (SwitchSettings.SwitchConfig.EnableCustomTheme) + { + if (File.Exists(SwitchSettings.SwitchConfig.CustomThemePath) && (System.IO.Path.GetExtension(SwitchSettings.SwitchConfig.CustomThemePath) == ".css")) + { + cssProvider.LoadFromPath(SwitchSettings.SwitchConfig.CustomThemePath); + } + else + { + Logger.PrintWarning(LogClass.Application, $"The \"custom_theme_path\" section in \"Config.json\" contains an invalid path: \"{SwitchSettings.SwitchConfig.CustomThemePath}\""); + } + } + else + { + cssProvider.LoadFromPath(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Theme.css")); + } + + StyleContext.AddProviderForScreen(Gdk.Screen.Default, cssProvider, 800); + } + + private void LoadApplication(string path) + { + if (_gameLoaded) + { + CreateErrorDialog("A game has already been loaded. Please close the emulator and try again"); + } + else + { + if (Directory.Exists(path)) + { + string[] romFsFiles = Directory.GetFiles(path, "*.istorage"); + + if (romFsFiles.Length == 0) + { + romFsFiles = Directory.GetFiles(path, "*.romfs"); + } + + if (romFsFiles.Length > 0) + { + Logger.PrintInfo(LogClass.Application, "Loading as cart with RomFS."); + _device.LoadCart(path, romFsFiles[0]); + } + else + { + Logger.PrintInfo(LogClass.Application, "Loading as cart WITHOUT RomFS."); + _device.LoadCart(path); + } + } + + else if (File.Exists(path)) + { + switch (System.IO.Path.GetExtension(path).ToLowerInvariant()) + { + case ".xci": + Logger.PrintInfo(LogClass.Application, "Loading as XCI."); + _device.LoadXci(path); + break; + case ".nca": + Logger.PrintInfo(LogClass.Application, "Loading as NCA."); + _device.LoadNca(path); + break; + case ".nsp": + case ".pfs0": + Logger.PrintInfo(LogClass.Application, "Loading as NSP."); + _device.LoadNsp(path); + break; + default: + Logger.PrintInfo(LogClass.Application, "Loading as homebrew."); + try + { + _device.LoadProgram(path); + } + catch (ArgumentOutOfRangeException) + { + Logger.PrintError(LogClass.Application, $"The file which you have specified is unsupported by Ryujinx"); + } + break; + } + } + else + { + Logger.PrintWarning(LogClass.Application, "Please specify a valid XCI/NCA/NSP/PFS0/NRO file"); + End(); + } + + new Thread(new ThreadStart(CreateGameWindow)).Start(); + + _gameLoaded = true; + _stopEmulation.Sensitive = true; + + if (DiscordIntegrationEnabled) + { + if (File.ReadAllLines(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RPsupported.dat")).Contains(_device.System.TitleID)) + { + DiscordPresence.Assets.LargeImageKey = _device.System.TitleID; + } + + string state = _device.System.TitleID; + + if (state == null) + { + state = "Ryujinx"; + } + else + { + state = state.ToUpper(); + } + + string details = "Idling"; + + if (_device.System.TitleName != null) + { + details = $"Playing {_device.System.TitleName}"; + } + + DiscordPresence.Details = details; + DiscordPresence.State = state; + DiscordPresence.Assets.LargeImageText = _device.System.TitleName; + DiscordPresence.Assets.SmallImageKey = "ryujinx"; + DiscordPresence.Assets.SmallImageText = "Ryujinx is an emulator for the Nintendo Switch"; + DiscordPresence.Timestamps = new Timestamps(DateTime.UtcNow); + + DiscordClient.SetPresence(DiscordPresence); + } + + try + { + string savePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "nand", "user", "save", "0000000000000000", _userId, _device.System.TitleID); + + if (File.Exists(System.IO.Path.Combine(savePath, "TimePlayed.dat")) == false) + { + Directory.CreateDirectory(savePath); + using (FileStream stream = File.OpenWrite(System.IO.Path.Combine(savePath, "TimePlayed.dat"))) + { + stream.Write(Encoding.ASCII.GetBytes("0")); + } + } + + if (File.Exists(System.IO.Path.Combine(savePath, "LastPlayed.dat")) == false) + { + Directory.CreateDirectory(savePath); + using (FileStream stream = File.OpenWrite(System.IO.Path.Combine(savePath, "LastPlayed.dat"))) + { + stream.Write(Encoding.ASCII.GetBytes("Never")); + } + } + + using (FileStream stream = File.OpenWrite(System.IO.Path.Combine(savePath, "LastPlayed.dat"))) + { + using (StreamWriter writer = new StreamWriter(stream)) + { + writer.WriteLine(DateTime.UtcNow); + } + } + } + catch (ArgumentNullException) + { + Logger.PrintWarning(LogClass.Application, $"Could not access save path to retrieve time/last played data using: UserID: {_userId}, TitleID: {_device.System.TitleID}"); + } + } + } + + private static void CreateGameWindow() + { + Configuration.ConfigureHid(_device, SwitchSettings.SwitchConfig); + + using (GlScreen screen = new GlScreen(_device, _renderer)) + { + screen.MainLoop(); + + End(); + } + } + + private static void End() + { + if (_gameLoaded) + { + try + { + string savePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "nand", "user", "save", "0000000000000000", _userId, _device.System.TitleID); + double currentPlayTime = 0; + + using (FileStream stream = File.OpenRead(System.IO.Path.Combine(savePath, "LastPlayed.dat"))) + { + using (StreamReader reader = new StreamReader(stream)) + { + DateTime startTime = DateTime.Parse(reader.ReadLine()); + + using (FileStream lastPlayedStream = File.OpenRead(System.IO.Path.Combine(savePath, "TimePlayed.dat"))) + { + using (StreamReader lastPlayedReader = new StreamReader(lastPlayedStream)) + { + currentPlayTime = double.Parse(lastPlayedReader.ReadLine()); + } + } + + using (FileStream timePlayedStream = File.OpenWrite(System.IO.Path.Combine(savePath, "TimePlayed.dat"))) + { + using (StreamWriter timePlayedWriter = new StreamWriter(timePlayedStream)) + { + timePlayedWriter.WriteLine(currentPlayTime + Math.Round(DateTime.UtcNow.Subtract(startTime).TotalSeconds, MidpointRounding.AwayFromZero)); + } + } + } + } + } + catch (ArgumentNullException) + { + Logger.PrintWarning(LogClass.Application, $"Could not access save path to retrieve time/last played data using: UserID: {_userId}, TitleID: {_device.System.TitleID}"); + } + } + + Profile.FinishProfiling(); + _device.Dispose(); + _audioOut.Dispose(); + DiscordClient.Dispose(); + Logger.Shutdown(); + Environment.Exit(0); + } + + /// + /// Picks an audio output renderer supported on this machine + /// + /// An supported by this machine + private static IAalOutput InitializeAudioEngine() + { + if (SoundIoAudioOut.IsSupported) + { + return new SoundIoAudioOut(); + } + else if (OpenALAudioOut.IsSupported) + { + return new OpenALAudioOut(); + } + else + { + return new DummyAudioOut(); + } + } + + //Events + private void Row_Activated(object o, RowActivatedArgs args) + { + _tableStore.GetIter(out TreeIter treeIter, new TreePath(args.Path.ToString())); + string path = (string)_tableStore.GetValue(treeIter, 8); + + LoadApplication(path); + } + + private void Load_Application_File(object o, EventArgs args) + { + FileChooserDialog fileChooser = new FileChooserDialog("Choose the file to open", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); + + fileChooser.Filter = new FileFilter(); + fileChooser.Filter.AddPattern("*.nsp" ); + fileChooser.Filter.AddPattern("*.pfs0"); + fileChooser.Filter.AddPattern("*.xci" ); + fileChooser.Filter.AddPattern("*.nca" ); + fileChooser.Filter.AddPattern("*.nro" ); + fileChooser.Filter.AddPattern("*.nso" ); + + if (fileChooser.Run() == (int)ResponseType.Accept) + { + LoadApplication(fileChooser.Filename); + } + + fileChooser.Destroy(); + } + + private void Load_Application_Folder(object o, EventArgs args) + { + FileChooserDialog fileChooser = new FileChooserDialog("Choose the folder to open", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); + + if (fileChooser.Run() == (int)ResponseType.Accept) + { + LoadApplication(fileChooser.Filename); + } + + fileChooser.Destroy(); + } + + private void Open_Ryu_Folder(object o, EventArgs args) + { + Process.Start(new ProcessStartInfo() + { + FileName = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFs"), + UseShellExecute = true, + Verb = "open" + }); + } + + private void Exit_Pressed(object o, EventArgs args) + { + End(); + } + + private void Window_Close(object o, DeleteEventArgs args) + { + End(); + } + + private void StopEmulation_Pressed(object o, EventArgs args) + { + // TODO: Write logic to kill running game + } + + private void FullScreen_Toggled(object o, EventArgs args) + { + if (_fullScreen.Active) + { + Fullscreen(); + } + else + { + Unfullscreen(); + } + } + + private void Settings_Pressed(object o, EventArgs args) + { + SwitchSettings SettingsWin = new SwitchSettings(_device); + + _gtkApplication.Register(GLib.Cancellable.Current); + _gtkApplication.AddWindow(SettingsWin); + + SettingsWin.Show(); + } + + private void Update_Pressed(object o, EventArgs args) + { + string ryuUpdater = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "RyuUpdater.exe"); + + try + { + Process.Start(new ProcessStartInfo(ryuUpdater, "/U") { UseShellExecute = true }); + } + catch(System.ComponentModel.Win32Exception) + { + CreateErrorDialog("Update canceled by user or updater was not found"); + } + } + + private void About_Pressed(object o, EventArgs args) + { + AboutWindow AboutWin = new AboutWindow(); + + _gtkApplication.Register(GLib.Cancellable.Current); + _gtkApplication.AddWindow(AboutWin); + + AboutWin.Show(); + } + + private void Icon_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[0] = _iconToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void Title_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[1] = _titleToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void Developer_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[2] = _developerToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void Version_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[3] = _versionToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void TimePlayed_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[4] = _timePlayedToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void LastPlayed_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[5] = _lastPlayedToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void FileExt_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[6] = _fileExtToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void FileSize_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[7] = _fileSizeToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + + private void Path_Toggled(object o, EventArgs args) + { + SwitchSettings.SwitchConfig.GuiColumns[8] = _pathToggle.Active; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + } + } +} diff --git a/Ryujinx/Ui/MainWindow.glade b/Ryujinx/Ui/MainWindow.glade new file mode 100644 index 0000000000..e12a7b1bb2 --- /dev/null +++ b/Ryujinx/Ui/MainWindow.glade @@ -0,0 +1,347 @@ + + + + + + False + Ryujinx + center + 1280 + 750 + + + + + + True + False + vertical + + + True + False + + + True + False + File + True + + + True + False + + + True + False + Open a file chooser to chose a switch compatible file to load + Load Application from File + True + + + + + + True + False + Open a file chooser to chose a switch compatible, unpacked application to load + Load Unpacked Game + True + + + + + + True + False + + + + + True + False + Open Ryujinx filesystem folder + Open Ryujinx Folder + True + + + + + + True + False + + + + + True + False + Exit Ryujinx + Exit + True + + + + + + + + + + True + False + Options + True + + + True + False + + + True + False + Fullscreens the window + Fullscreen + True + + + + + + True + False + Stop emualtion of the current game and return to game selection + Stop Emulation + True + + + + + + True + False + + + + + True + False + Select which GUI columns to enable (restart Ryujinx for these changes to take effect) + Enable GUI Columns + True + + + True + False + + + True + False + Enable or Disable Icon Column in the game list + Enable Icon Column + True + + + + + + True + False + Enable or Disable Title Name/ID Column in the game list + Enable Title Name/ID Column + True + + + + + + True + False + Enable or Disable Developer Column in the game list + Enable Developer Column + True + + + + + + True + False + Enable or Disable Version Column in the game list + Enable Version Column + True + + + + + + True + False + Enable or Disable Time Played Column in the game list + Enable Time Played Column + True + + + + + + True + False + Enable or Disable Last Played Column in the game list + Enable Last Played Column + True + + + + + + True + False + Enable or Disable file extension column in the game list + Enable File Ext Column + True + + + + + + True + False + Enable or Disable File Size Column in the game list + Enable File Size Column + True + + + + + + True + False + Enable or Disable Path Column in the game list + Enable Path Column + True + + + + + + + + + + True + False + + + + + True + False + Open settings window + Settings + True + + + + + + + + + + True + False + Tools + True + + + + + True + False + Help + True + + + True + False + + + True + False + Check for updates to Ryujinx (requires Ryujinx Installer) + Check for Updates + True + + + + + + True + False + + + + + True + False + Open about window + About + True + + + + + + + + + + False + True + 0 + + + + + True + True + in + + + True + True + False + True + True + + + + + + + + + True + True + 1 + + + + + 1280 + 720 + True + True + False + + + True + True + 2 + + + + + + diff --git a/Ryujinx/Ui/NpadKeyboard.cs b/Ryujinx/Ui/NpadKeyboard.cs index 79d6330c61..ac739c0867 100644 --- a/Ryujinx/Ui/NpadKeyboard.cs +++ b/Ryujinx/Ui/NpadKeyboard.cs @@ -45,12 +45,12 @@ namespace Ryujinx.UI.Input /// /// Left JoyCon Keyboard Bindings /// - public NpadKeyboardLeft LeftJoycon { get; private set; } + public NpadKeyboardLeft LeftJoycon { get; set; } /// /// Right JoyCon Keyboard Bindings /// - public NpadKeyboardRight RightJoycon { get; private set; } + public NpadKeyboardRight RightJoycon { get; set; } /// /// Hotkey Keyboard Bindings diff --git a/Ryujinx/Ui/SwitchSettings.cs b/Ryujinx/Ui/SwitchSettings.cs new file mode 100644 index 0000000000..8f42fcbf9d --- /dev/null +++ b/Ryujinx/Ui/SwitchSettings.cs @@ -0,0 +1,424 @@ +using Gtk; +using GUI = Gtk.Builder.ObjectAttribute; +using Ryujinx.HLE.HOS.SystemState; +using Ryujinx.HLE.Input; +using Ryujinx.UI.Input; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; + +namespace Ryujinx.UI +{ + public class SwitchSettings : Window + { + internal static Configuration SwitchConfig { get; set; } + + internal HLE.Switch Device { get; set; } + + private static ListStore _gameDirsBoxStore; + + private static bool _listeningForKeypress; + +#pragma warning disable 649 + [GUI] Window _settingsWin; + [GUI] CheckButton _errorLogToggle; + [GUI] CheckButton _warningLogToggle; + [GUI] CheckButton _infoLogToggle; + [GUI] CheckButton _stubLogToggle; + [GUI] CheckButton _debugLogToggle; + [GUI] CheckButton _fileLogToggle; + [GUI] CheckButton _guestLogToggle; + [GUI] CheckButton _fsAccessLogToggle; + [GUI] Adjustment _fsLogSpinAdjustment; + [GUI] CheckButton _dockedModeToggle; + [GUI] CheckButton _discordToggle; + [GUI] CheckButton _vSyncToggle; + [GUI] CheckButton _multiSchedToggle; + [GUI] CheckButton _fsicToggle; + [GUI] CheckButton _legacyJitToggle; + [GUI] CheckButton _ignoreToggle; + [GUI] CheckButton _directKeyboardAccess; + [GUI] ComboBoxText _systemLanguageSelect; + [GUI] CheckButton _custThemeToggle; + [GUI] Entry _custThemePath; + [GUI] ToggleButton _browseThemePath; + [GUI] Label _custThemePathLabel; + [GUI] TreeView _gameDirsBox; + [GUI] Entry _addGameDirBox; + [GUI] ToggleButton _addDir; + [GUI] ToggleButton _browseDir; + [GUI] ToggleButton _removeDir; + [GUI] Entry _logPath; + [GUI] Entry _graphicsShadersDumpPath; + [GUI] Image _controllerImage; + + [GUI] ComboBoxText _controller1Type; + [GUI] ToggleButton _lStickUp1; + [GUI] ToggleButton _lStickDown1; + [GUI] ToggleButton _lStickLeft1; + [GUI] ToggleButton _lStickRight1; + [GUI] ToggleButton _lStickButton1; + [GUI] ToggleButton _dpadUp1; + [GUI] ToggleButton _dpadDown1; + [GUI] ToggleButton _dpadLeft1; + [GUI] ToggleButton _dpadRight1; + [GUI] ToggleButton _minus1; + [GUI] ToggleButton _l1; + [GUI] ToggleButton _zL1; + [GUI] ToggleButton _rStickUp1; + [GUI] ToggleButton _rStickDown1; + [GUI] ToggleButton _rStickLeft1; + [GUI] ToggleButton _rStickRight1; + [GUI] ToggleButton _rStickButton1; + [GUI] ToggleButton _a1; + [GUI] ToggleButton _b1; + [GUI] ToggleButton _x1; + [GUI] ToggleButton _y1; + [GUI] ToggleButton _plus1; + [GUI] ToggleButton _r1; + [GUI] ToggleButton _zR1; +#pragma warning restore 649 + + public static void ConfigureSettings(Configuration Instance) { SwitchConfig = Instance; } + + public SwitchSettings(HLE.Switch device) : this(new Builder("Ryujinx.Ui.SwitchSettings.glade"), device) { } + + private SwitchSettings(Builder builder, HLE.Switch device) : base(builder.GetObject("_settingsWin").Handle) + { + Device = device; + + builder.Autoconnect(this); + + _settingsWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.RyujinxIcon.png"); + _controllerImage.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.JoyCon.png", 500, 500); + + //Bind Events + _lStickUp1.Clicked += (o, args) => Button_Pressed(o, args, _lStickUp1); + _lStickDown1.Clicked += (o, args) => Button_Pressed(o, args, _lStickDown1); + _lStickLeft1.Clicked += (o, args) => Button_Pressed(o, args, _lStickLeft1); + _lStickRight1.Clicked += (o, args) => Button_Pressed(o, args, _lStickRight1); + _lStickButton1.Clicked += (o, args) => Button_Pressed(o, args, _lStickButton1); + _dpadUp1.Clicked += (o, args) => Button_Pressed(o, args, _dpadUp1); + _dpadDown1.Clicked += (o, args) => Button_Pressed(o, args, _dpadDown1); + _dpadLeft1.Clicked += (o, args) => Button_Pressed(o, args, _dpadLeft1); + _dpadRight1.Clicked += (o, args) => Button_Pressed(o, args, _dpadRight1); + _minus1.Clicked += (o, args) => Button_Pressed(o, args, _minus1); + _l1.Clicked += (o, args) => Button_Pressed(o, args, _l1); + _zL1.Clicked += (o, args) => Button_Pressed(o, args, _zL1); + _rStickUp1.Clicked += (o, args) => Button_Pressed(o, args, _rStickUp1); + _rStickDown1.Clicked += (o, args) => Button_Pressed(o, args, _rStickDown1); + _rStickLeft1.Clicked += (o, args) => Button_Pressed(o, args, _rStickLeft1); + _rStickRight1.Clicked += (o, args) => Button_Pressed(o, args, _rStickRight1); + _rStickButton1.Clicked += (o, args) => Button_Pressed(o, args, _rStickButton1); + _a1.Clicked += (o, args) => Button_Pressed(o, args, _a1); + _b1.Clicked += (o, args) => Button_Pressed(o, args, _b1); + _x1.Clicked += (o, args) => Button_Pressed(o, args, _x1); + _y1.Clicked += (o, args) => Button_Pressed(o, args, _y1); + _plus1.Clicked += (o, args) => Button_Pressed(o, args, _plus1); + _r1.Clicked += (o, args) => Button_Pressed(o, args, _r1); + _zR1.Clicked += (o, args) => Button_Pressed(o, args, _zR1); + + //Setup Currents + if (SwitchConfig.EnableFileLog) { _fileLogToggle.Click(); } + if (SwitchConfig.LoggingEnableError) { _errorLogToggle.Click(); } + if (SwitchConfig.LoggingEnableWarn) { _warningLogToggle.Click(); } + if (SwitchConfig.LoggingEnableInfo) { _infoLogToggle.Click(); } + if (SwitchConfig.LoggingEnableStub) { _stubLogToggle.Click(); } + if (SwitchConfig.LoggingEnableDebug) { _debugLogToggle.Click(); } + if (SwitchConfig.LoggingEnableGuest) { _guestLogToggle.Click(); } + if (SwitchConfig.LoggingEnableFsAccessLog) { _fsAccessLogToggle.Click(); } + if (SwitchConfig.DockedMode) { _dockedModeToggle.Click(); } + if (SwitchConfig.EnableDiscordIntegration) { _discordToggle.Click(); } + if (SwitchConfig.EnableVsync) { _vSyncToggle.Click(); } + if (SwitchConfig.EnableMulticoreScheduling) { _multiSchedToggle.Click(); } + if (SwitchConfig.EnableFsIntegrityChecks) { _fsicToggle.Click(); } + if (SwitchConfig.EnableLegacyJit) { _legacyJitToggle.Click(); } + if (SwitchConfig.IgnoreMissingServices) { _ignoreToggle.Click(); } + if (SwitchConfig.EnableKeyboard) { _directKeyboardAccess.Click(); } + if (SwitchConfig.EnableCustomTheme) { _custThemeToggle.Click(); } + + _systemLanguageSelect.SetActiveId(SwitchConfig.SystemLanguage.ToString()); + _controller1Type .SetActiveId(SwitchConfig.ControllerType.ToString()); + + _lStickUp1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickUp.ToString(); + _lStickDown1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickDown.ToString(); + _lStickLeft1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickLeft.ToString(); + _lStickRight1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickRight.ToString(); + _lStickButton1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickButton.ToString(); + _dpadUp1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadUp.ToString(); + _dpadDown1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadDown.ToString(); + _dpadLeft1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadLeft.ToString(); + _dpadRight1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadRight.ToString(); + _minus1.Label = SwitchConfig.KeyboardControls.LeftJoycon.ButtonMinus.ToString(); + _l1.Label = SwitchConfig.KeyboardControls.LeftJoycon.ButtonL.ToString(); + _zL1.Label = SwitchConfig.KeyboardControls.LeftJoycon.ButtonZl.ToString(); + _rStickUp1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickUp.ToString(); + _rStickDown1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickDown.ToString(); + _rStickLeft1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickLeft.ToString(); + _rStickRight1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickRight.ToString(); + _rStickButton1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickButton.ToString(); + _a1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonA.ToString(); + _b1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonB.ToString(); + _x1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonX.ToString(); + _y1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonY.ToString(); + _plus1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonPlus.ToString(); + _r1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonR.ToString(); + _zR1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonZr.ToString(); + + _custThemePath.Buffer.Text = SwitchConfig.CustomThemePath; + _graphicsShadersDumpPath.Buffer.Text = SwitchConfig.GraphicsShadersDumpPath; + _fsLogSpinAdjustment.Value = SwitchConfig.FsGlobalAccessLogMode; + + _gameDirsBox.AppendColumn("", new CellRendererText(), "text", 0); + _gameDirsBoxStore = new ListStore(typeof(string)); + _gameDirsBox.Model = _gameDirsBoxStore; + foreach (string gameDir in SwitchConfig.GameDirs) + { + _gameDirsBoxStore.AppendValues(gameDir); + } + + if (_custThemeToggle.Active == false) + { + _custThemePath.Sensitive = false; + _custThemePathLabel.Sensitive = false; + _browseThemePath.Sensitive = false; + } + + _logPath.Buffer.Text = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Ryujinx.log"); + + _listeningForKeypress = false; + } + + //Events + private void Button_Pressed(object obj, EventArgs args, ToggleButton Button) + { + if (_listeningForKeypress == false) + { + KeyPressEvent += On_KeyPress; + + _listeningForKeypress = true; + + void On_KeyPress(object Obj, KeyPressEventArgs KeyPressed) + { + string key = KeyPressed.Event.Key.ToString(); + string capKey = key.First().ToString().ToUpper() + key.Substring(1); + + if (Enum.IsDefined(typeof(OpenTK.Input.Key), capKey)) + { + Button.Label = capKey; + } + else if (GdkToOpenTKInput.ContainsKey(key)) + { + Button.Label = GdkToOpenTKInput[key]; + } + else + { + Button.Label = "Space"; + } + + Button.SetStateFlags(0, true); + + KeyPressEvent -= On_KeyPress; + + _listeningForKeypress = false; + } + } + else + { + Button.SetStateFlags(0, true); + } + } + + private void AddDir_Pressed(object obj, EventArgs args) + { + if (Directory.Exists(_addGameDirBox.Buffer.Text)) + { + _gameDirsBoxStore.AppendValues(_addGameDirBox.Buffer.Text); + } + + _addDir.SetStateFlags(0, true); + } + + private void BrowseDir_Pressed(object obj, EventArgs args) + { + FileChooserDialog fileChooser = new FileChooserDialog("Choose the game directory to add to the list", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Add", ResponseType.Accept); + + if (fileChooser.Run() == (int)ResponseType.Accept) + { + _gameDirsBoxStore.AppendValues(fileChooser.Filename); + } + + fileChooser.Destroy(); + + _browseDir.SetStateFlags(0, true); + } + + private void RemoveDir_Pressed(object obj, EventArgs args) + { + TreeSelection selection = _gameDirsBox.Selection; + + selection.GetSelected(out TreeIter treeIter); + _gameDirsBoxStore.Remove(ref treeIter); + + _removeDir.SetStateFlags(0, true); + } + + private void CustThemeToggle_Activated(object obj, EventArgs args) + { + _custThemePath.Sensitive = _custThemeToggle.Active; + _custThemePathLabel.Sensitive = _custThemeToggle.Active; + _browseThemePath.Sensitive = _custThemeToggle.Active; + } + + private void BrowseThemeDir_Pressed(object obj, EventArgs args) + { + FileChooserDialog fileChooser = new FileChooserDialog("Choose the theme to load", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Select", ResponseType.Accept); + + fileChooser.Filter = new FileFilter(); + fileChooser.Filter.AddPattern("*.css"); + + if (fileChooser.Run() == (int)ResponseType.Accept) + { + _custThemePath.Buffer.Text = fileChooser.Filename; + } + + fileChooser.Destroy(); + + _browseThemePath.SetStateFlags(0, true); + } + + private void SaveToggle_Activated(object obj, EventArgs args) + { + List gameDirs = new List(); + + _gameDirsBoxStore.GetIterFirst(out TreeIter treeIter); + for (int i = 0; i < _gameDirsBoxStore.IterNChildren(); i++) + { + _gameDirsBoxStore.GetValue(treeIter, i); + + gameDirs.Add((string)_gameDirsBoxStore.GetValue(treeIter, 0)); + + _gameDirsBoxStore.IterNext(ref treeIter); + } + + SwitchConfig.LoggingEnableError = _errorLogToggle.Active; + SwitchConfig.LoggingEnableWarn = _warningLogToggle.Active; + SwitchConfig.LoggingEnableInfo = _infoLogToggle.Active; + SwitchConfig.LoggingEnableStub = _stubLogToggle.Active; + SwitchConfig.LoggingEnableDebug = _debugLogToggle.Active; + SwitchConfig.LoggingEnableGuest = _guestLogToggle.Active; + SwitchConfig.LoggingEnableFsAccessLog = _fsAccessLogToggle.Active; + SwitchConfig.EnableFileLog = _fileLogToggle.Active; + SwitchConfig.DockedMode = _dockedModeToggle.Active; + SwitchConfig.EnableDiscordIntegration = _discordToggle.Active; + SwitchConfig.EnableVsync = _vSyncToggle.Active; + SwitchConfig.EnableMulticoreScheduling = _multiSchedToggle.Active; + SwitchConfig.EnableFsIntegrityChecks = _fsicToggle.Active; + SwitchConfig.EnableLegacyJit = _legacyJitToggle.Active; + SwitchConfig.IgnoreMissingServices = _ignoreToggle.Active; + SwitchConfig.EnableKeyboard = _directKeyboardAccess.Active; + SwitchConfig.EnableCustomTheme = _custThemeToggle.Active; + + SwitchConfig.KeyboardControls.LeftJoycon = new NpadKeyboardLeft() + { + StickUp = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _lStickUp1.Label), + StickDown = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _lStickDown1.Label), + StickLeft = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _lStickLeft1.Label), + StickRight = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _lStickRight1.Label), + StickButton = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _lStickButton1.Label), + DPadUp = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _dpadUp1.Label), + DPadDown = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _dpadDown1.Label), + DPadLeft = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _dpadLeft1.Label), + DPadRight = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _dpadRight1.Label), + ButtonMinus = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _minus1.Label), + ButtonL = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _l1.Label), + ButtonZl = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _zL1.Label), + }; + + SwitchConfig.KeyboardControls.RightJoycon = new NpadKeyboardRight() + { + StickUp = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _rStickUp1.Label), + StickDown = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _rStickDown1.Label), + StickLeft = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _rStickLeft1.Label), + StickRight = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _rStickRight1.Label), + StickButton = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _rStickButton1.Label), + ButtonA = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _a1.Label), + ButtonB = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _b1.Label), + ButtonX = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _x1.Label), + ButtonY = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _y1.Label), + ButtonPlus = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _plus1.Label), + ButtonR = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _r1.Label), + ButtonZr = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), _zR1.Label), + }; + + SwitchConfig.SystemLanguage = (SystemLanguage)Enum.Parse(typeof(SystemLanguage), _systemLanguageSelect.ActiveId); + SwitchConfig.ControllerType = (ControllerStatus)Enum.Parse(typeof(ControllerStatus), _controller1Type.ActiveId); + SwitchConfig.CustomThemePath = _custThemePath.Buffer.Text; + SwitchConfig.GraphicsShadersDumpPath = _graphicsShadersDumpPath.Buffer.Text; + SwitchConfig.GameDirs = gameDirs; + SwitchConfig.FsGlobalAccessLogMode = (int)_fsLogSpinAdjustment.Value; + + Configuration.SaveConfig(SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + Configuration.Configure(Device, SwitchConfig); + + MainWindow.ApplyTheme(); + MainWindow.UpdateGameTable(); + + Destroy(); + } + + private void CloseToggle_Activated(object obj, EventArgs args) + { + Destroy(); + } + + public readonly Dictionary GdkToOpenTKInput = new Dictionary() + { + { "Key_0", "Number0" }, + { "Key_1", "Number1" }, + { "Key_2", "Number2" }, + { "Key_3", "Number3" }, + { "Key_4", "Number4" }, + { "Key_5", "Number5" }, + { "Key_6", "Number6" }, + { "Key_7", "Number7" }, + { "Key_8", "Number8" }, + { "Key_9", "Number9" }, + { "equal", "Plus" }, + { "uparrow", "Up" }, + { "downarrow", "Down" }, + { "leftarrow", "Left" }, + { "rightarrow", "Right" }, + { "Control_L", "ControlLeft" }, + { "Control_R", "ControlRight" }, + { "Shift_L", "ShiftLeft" }, + { "Shift_R", "ShiftRight" }, + { "Alt_L", "AltLeft" }, + { "Alt_R", "AltRight" }, + { "Page_Up", "PageUp" }, + { "Page_Down", "PageDown" }, + { "KP_Enter", "KeypadEnter" }, + { "KP_Up", "Up" }, + { "KP_Down", "Down" }, + { "KP_Left", "Left" }, + { "KP_Right", "Right" }, + { "KP_Divide", "KeypadDivide" }, + { "KP_Multiply", "KeypadMultiply" }, + { "KP_Subtract", "KeypadSubtract" }, + { "KP_Add", "KeypadAdd" }, + { "KP_Decimal", "KeypadDecimal" }, + { "KP_0", "Keypad0" }, + { "KP_1", "Keypad1" }, + { "KP_2", "Keypad2" }, + { "KP_3", "Keypad3" }, + { "KP_4", "Keypad4" }, + { "KP_5", "Keypad5" }, + { "KP_6", "Keypad6" }, + { "KP_7", "Keypad7" }, + { "KP_8", "Keypad8" }, + { "KP_9", "Keypad9" }, + }; + } +} diff --git a/Ryujinx/Ui/SwitchSettings.glade b/Ryujinx/Ui/SwitchSettings.glade new file mode 100644 index 0000000000..30a689a887 --- /dev/null +++ b/Ryujinx/Ui/SwitchSettings.glade @@ -0,0 +1,1989 @@ + + + + + + 3 + 1 + 10 + + + False + Ryujinx - Settings + True + center + 910 + 790 + dialog + + + + + + False + vertical + 2 + + + False + 5 + 3 + 3 + end + + + Save + True + True + True + + + + False + True + 0 + + + + + Close + True + True + True + + + + False + True + 5 + 1 + + + + + False + False + 0 + + + + + True + True + in + + + True + False + + + True + True + + + True + False + 5 + 10 + 5 + vertical + + + True + False + 5 + 5 + vertical + + + True + False + start + 5 + General + + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + + + True + False + Change System Language + end + System Language: + + + False + True + 0 + + + + + True + False + Change System Language + + American English + British English + Canadian French + Chinese + Dutch + French + German + Italian + Japanese + Korean + Latin American Spanish + Portuguese + Russian + Simplified Chinese + Spanish + Taiwanese + Traditional Chinese + + + + False + True + 1 + + + + + False + True + 0 + + + + + Enable Discord Integration + True + True + False + Enables or disables Discord Rich Presense + start + True + + + False + True + 5 + 1 + + + + + True + True + 1 + + + + + False + True + 5 + 1 + + + + + True + False + 5 + 5 + + + False + True + 5 + 2 + + + + + True + False + 5 + 5 + vertical + + + True + False + start + 5 + Game Directories + + + + + + False + True + 0 + + + + + True + False + 10 + 10 + vertical + + + True + True + 10 + in + + + True + True + False + False + + + + + + + + + True + True + 0 + + + + + True + False + + + True + True + Enter a game directroy to add to the list + + + True + True + 0 + + + + + Add + 80 + True + True + True + Add a game directory to the list + 5 + + + + False + True + 1 + + + + + Browse... + 80 + True + True + True + Browse for a game directory + 5 + + + + False + True + 2 + + + + + Remove + 80 + True + True + True + Remove selected game directory + 5 + + + + False + True + 3 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + True + True + 5 + 4 + + + + + True + False + 5 + 5 + + + False + True + 5 + 5 + + + + + True + False + 5 + 5 + vertical + + + True + False + start + 5 + Themes + + + + + + False + True + 0 + + + + + True + False + 10 + 10 + vertical + + + Use Custom Theme + True + True + False + Enable or disable custom themes in the GUI + start + True + + + + False + True + 5 + 1 + + + + + True + False + + + True + False + Path to custom GUI theme + Custom Theme Path: + + + False + True + 5 + 0 + + + + + True + True + Path to custom GUI theme + center + + + True + True + 1 + + + + + Browse... + 80 + True + True + True + Browse for a custom GUI theme + 5 + + + + False + True + 2 + + + + + False + True + 10 + 2 + + + + + False + True + 1 + + + + + False + True + 5 + 6 + + + + + + + True + False + General + + + False + + + + + True + False + vertical + + + True + False + 5 + 10 + + + Enable Docked Mode + True + True + False + Enable or disable Docked Mode + True + + + False + True + 10 + 0 + + + + + Direct Keyboard Access + True + True + False + Enable or disable "direct keyboard access (HID) support" (Provides games access to your keyboard as a text entry device) + True + + + False + False + 10 + 1 + + + + + False + True + 5 + 0 + + + + + True + True + + + True + False + 5 + 5 + 5 + 5 + + + True + False + vertical + + + True + False + + + True + False + The primary controller's type + center + 10 + 10 + 5 + 5 + Controller Type: + + + False + True + 0 + + + + + True + False + The primary controller's type + 5 + 0 + + Handheld + Pro Controller + Paired Joycons + Left Joycon + Right Joycon + + + + True + True + 1 + + + + + True + True + 10 + 0 + + + + + True + False + 2 + 5 + + + True + False + LStick Up + + + 0 + 0 + + + + + True + False + LStick Down + + + 0 + 1 + + + + + True + False + LStick Left + + + 0 + 2 + + + + + True + False + LStick Right + + + 0 + 3 + + + + + True + False + LStick Button + + + 0 + 4 + + + + + True + False + Dpad Up + + + 0 + 5 + + + + + True + False + Dpad Down + + + 0 + 6 + + + + + True + False + Dpad Left + + + 0 + 7 + + + + + True + False + Dpad Right + + + 0 + 8 + + + + + True + False + - + + + 0 + 9 + + + + + True + False + L + + + 0 + 10 + + + + + True + False + ZL + + + 0 + 11 + + + + + True + False + ZR + + + 2 + 11 + + + + + True + False + R + + + 2 + 10 + + + + + True + False + + + + + 2 + 9 + + + + + True + False + Y + + + 2 + 8 + + + + + True + False + X + + + 2 + 7 + + + + + True + False + B + + + 2 + 6 + + + + + True + False + A + + + 2 + 5 + + + + + True + False + RStick Button + + + 2 + 4 + + + + + True + False + RStick Right + + + 2 + 3 + + + + + True + False + RStick Left + + + 2 + 2 + + + + + True + False + RStick Down + + + 2 + 1 + + + + + True + False + RStick Up + + + 2 + 0 + + + + + + True + True + True + + + 1 + 0 + + + + + + True + True + True + + + 1 + 1 + + + + + + True + True + True + + + 1 + 2 + + + + + + True + True + True + + + 1 + 3 + + + + + + True + True + True + + + 1 + 4 + + + + + + True + True + True + + + 1 + 5 + + + + + + True + True + True + + + 1 + 6 + + + + + + True + True + True + + + 1 + 7 + + + + + + True + True + True + + + 1 + 8 + + + + + + True + True + True + + + 1 + 9 + + + + + + True + True + True + + + 1 + 10 + + + + + + True + True + True + + + 1 + 11 + + + + + + True + True + True + + + 3 + 0 + + + + + + True + True + True + + + 3 + 1 + + + + + + True + True + True + + + 3 + 2 + + + + + + True + True + True + + + 3 + 3 + + + + + + True + True + True + + + 3 + 4 + + + + + + True + True + True + + + 3 + 5 + + + + + + True + True + True + + + 3 + 6 + + + + + + True + True + True + + + 3 + 7 + + + + + + True + True + True + + + 3 + 8 + + + + + + True + True + True + + + 3 + 9 + + + + + + True + True + True + + + 3 + 10 + + + + + + True + True + True + + + 3 + 11 + + + + + False + True + 10 + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + True + 1 + + + + + + + True + False + Controller 1 + + + False + + + + + True + False + Multiple controllers are not yet supported + + + 1 + True + + + + + True + False + Controller 2 + + + 1 + False + + + + + True + False + Multiple controllers are not yet supported + + + 2 + + + + + True + False + Controller 3 + + + 2 + False + + + + + True + False + Multiple controllers are not yet supported + + + 3 + + + + + True + False + Controller 4 + + + 3 + False + + + + + True + False + Multiple controllers are not yet supported + + + 4 + + + + + True + False + Controller 5 + + + 4 + False + + + + + True + False + Multiple controllers are not yet supported + + + 5 + + + + + True + False + Controller 6 + + + 5 + False + + + + + True + False + Multiple controllers are not yet supported + + + 6 + + + + + True + False + Controller 7 + + + 6 + False + + + + + True + False + Multiple controllers are not yet supported + + + 7 + + + + + True + False + Controller 8 + + + 7 + False + + + + + False + True + 2 + + + + + 1 + + + + + True + False + Input + + + 1 + False + + + + + True + False + 5 + 10 + 5 + vertical + + + True + False + start + 5 + 5 + vertical + + + True + False + start + 5 + 5 + Core + + + + + + False + True + 0 + + + + + True + False + 10 + 10 + vertical + + + Enable VSync + True + True + False + Enables or disables Vertical Sync + start + 5 + 5 + True + + + False + True + 0 + + + + + Enable Multicore Scheduling + True + True + False + Enables or disables multi-core scheduling of threads + start + 5 + 5 + True + + + False + True + 1 + + + + + Use old ChocolArm64 ARM emulator + True + True + False + Uses old ChocolArm64 ARM emulator rather then the new ARMeilleure + start + 5 + 5 + True + + + False + True + 2 + + + + + Enable FS Integrity Checks + True + True + False + Enables integrity checks on Game content files + start + 5 + 5 + True + + + False + True + 3 + + + + + True + False + + + True + False + Graphics Shaders Dump Path + Graphics Shaders Dump Path: + + + False + True + 5 + 0 + + + + + True + True + Graphics Shaders Dump Path + center + False + + + True + True + 1 + + + + + False + True + 5 + 4 + + + + + True + True + 1 + + + + + False + True + 5 + 0 + + + + + True + False + 5 + 5 + + + False + True + 5 + 1 + + + + + True + False + 5 + 5 + vertical + + + True + False + start + 5 + Logging + + + + + + False + True + 0 + + + + + True + False + 10 + 10 + vertical + + + Enable Logging to File + True + True + False + Enables or disables logging to a file on disk + start + 5 + 5 + True + + + False + True + 0 + + + + + True + False + 5 + 10 + + + True + False + Location of the log file + Log File Location: + + + False + True + 5 + 0 + + + + + True + True + Location of the log file + center + False + False + + + True + True + 1 + + + + + False + True + 5 + 1 + + + + + Enable Debug Logs + True + True + False + Enables printing debug log messages + start + 5 + 5 + True + + + False + True + 2 + + + + + Enable Stub Logs + True + True + False + Enables printing stub log messages + start + 5 + 5 + True + + + False + True + 3 + + + + + Enable Info Logs + True + True + False + Enables printing info log messages + start + 5 + 5 + True + + + False + True + 4 + + + + + Enable Warning Logs + True + True + False + Enables printing warning log messages + start + 5 + 5 + True + + + False + True + 5 + + + + + Enable Error Logs + True + True + False + Enables printing error log messages + start + 5 + 5 + True + + + False + True + 6 + + + + + Enable Guest Logs + True + True + False + Enables printing guest log messages + start + 5 + 5 + True + + + False + True + 7 + + + + + Enable Fs Access Logs + True + True + False + Enables printing fs access log messages + start + 5 + 5 + True + + + False + True + 8 + + + + + True + False + + + True + False + Enables FS access log output to the console. Possible modes are 0-3 + Fs Global Access Log Mode: + + + False + True + 5 + 0 + + + + + True + True + Enables FS access log output to the console. Possible modes are 0-3 + _fsLogSpinAdjustment + + + True + True + 1 + + + + + False + True + 5 + 9 + + + + + True + True + 1 + + + + + False + True + 5 + 2 + + + + + True + False + 5 + 5 + + + False + True + 5 + 3 + + + + + True + False + 5 + 5 + vertical + + + True + False + + + True + False + start + 5 + Hacks + + + + + + False + True + 0 + + + + + True + False + start + 5 + - These may cause instability + + + False + True + 1 + + + + + False + True + 1 + + + + + True + False + 10 + 10 + vertical + + + Ignore Missing Services + True + True + False + Enable or disable ignoring missing services + start + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 2 + + + + + False + True + 5 + 4 + + + + + 2 + + + + + True + False + end + System + + + 2 + False + + + + + + + + + True + True + 1 + + + + + + diff --git a/Ryujinx/Ui/assets/DiscordLogo.png b/Ryujinx/Ui/assets/DiscordLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..85c46fd8d3309470db37473778e1452102dd31fa GIT binary patch literal 5216 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 literal 0 HcmV?d00001 diff --git a/Ryujinx/Ui/assets/GitHubLogo.png b/Ryujinx/Ui/assets/GitHubLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..192846a12085914cc0e38d9b48036b11d2a4d7c4 GIT binary patch literal 4044 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 ZsK8ky_?39l4gAjkwLQ)WTW#Z?@NW_mBhUZ< literal 0 HcmV?d00001 diff --git a/Ryujinx/Ui/assets/JoyCon.png b/Ryujinx/Ui/assets/JoyCon.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8a8f993cccadfd1ca5c4cbac1b8d990835cc3e GIT binary patch literal 288310 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 afJ?ELLD*o+5AL82Yc?sv8ckUgo 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

~z{$79;Il>*1MqppNWPC(N%42MJNx?wOJ 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 RbOH!i7G^dV%S~=Q`VZNYAeI0C literal 0 HcmV?d00001 diff --git a/Ryujinx/Ui/assets/PatreonLogo.png b/Ryujinx/Ui/assets/PatreonLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..5b35572af67dfc92193dcdc02e24752ed2ee4dd8 GIT binary patch literal 5899 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%0AVsHsC|`W-H#Be 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 CyRK^h literal 0 HcmV?d00001 diff --git a/Ryujinx/Ui/assets/ryujinxNROIcon.png b/Ryujinx/Ui/assets/ryujinxNROIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6b65bf4f1d10352f0fde2cd44a260bc5b40b83 GIT binary patch literal 13902 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 R>e>H?X{u?f7Aso>|1VBP0`&j@ literal 0 HcmV?d00001 diff --git a/Ryujinx/Ui/assets/ryujinxNSPIcon.png b/Ryujinx/Ui/assets/ryujinxNSPIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..d01dc4822915a4c8271be32a8f1ce0903c30b511 GIT binary patch literal 13198 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 literal 0 HcmV?d00001 diff --git a/Ryujinx/Ui/assets/ryujinxXCIIcon.png b/Ryujinx/Ui/assets/ryujinxXCIIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..08f783a80d0016cce0ce46a0c5b32d3f55df3a51 GIT binary patch literal 13093 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 literal 0 HcmV?d00001 diff --git a/Ryujinx/_schema.json b/Ryujinx/_schema.json index c1a64c674c..b9546a84be 100644 --- a/Ryujinx/_schema.json +++ b/Ryujinx/_schema.json @@ -494,6 +494,38 @@ false ] }, + "game_dirs": { + "$id": "#/properties/game_dirs", + "type": "string list", + "title": "List of Game Directories", + "description": "A list of directories containing games to be used to load games into the games list", + "default": [] + }, + "gui_columns": { + "$id": "#/properties/gui_columns", + "type": "bool list", + "title": "Used to toggle columns in the GUI", + "description": "Used to toggle columns in the GUI", + "default": [ true, true, true, true, true, true, true, true, true ] + }, + "enable_custom_theme": { + "$id": "#/properties/enable_custom_theme", + "type": "boolean", + "title": "Enable custom themes in the GUI", + "description": "Enable or disable custom themes in the GUI", + "default": false, + "examples": [ + true, + false + ] + }, + "custom_theme_path": { + "$id": "#/properties/custom_theme_path", + "type": "string", + "title": "Path to custom GUI theme", + "description": "Path to custom GUI theme", + "default": "" + }, "controller_type": { "$id": "#/properties/controller_type", "type": "string",