From da4e0856c990b05fdddf0cc828125262a7326d10 Mon Sep 17 00:00:00 2001 From: Xpl0itR Date: Fri, 29 Nov 2019 04:32:51 +0000 Subject: [PATCH] Add features to GUI (#757) * controller image changes depending on the selected controller type the new controller image assets are temporary until i get new ones * Game list scans subdirs for games * Key file existence check * Only shows Program NCAs in Application list * Change shown GUI columns without restarting * Sort by column if you click on the column header Columns are sorted as text so there are inaccuracies on some columns * Fix sort on Time Played, Last Played and File Size columns * Add ability to designate favourite games #1 TODO: - Make fav games persistent - Fix invisible check marks due to theme * Add ability to designate favourite games #2 Also removed default theme * Added a Windows specific build condition and a Linux bug fix * bugfix * Load metadata from JSONs * Temp bug fix for MacOS * lil clean up * requested changes * Misc fixes * edited schema and config * Show the TitleID of games on the title bar * gui column config option have names * Async loading of game list * bugfix and cleanup * thog's requested changes * requested changes and cleanup still need to fix the gtk seizure * Fix issue where an ExeFS as a NSP didn't show up in the application list * Minor fixes * catch glib unhandled exceptions * Make sure to do UI manipulation in the main thread * Print path of invalid files * Ac_k's requested changes * Return of the dark theme * move AboutInfo struct to another file * sort usings * changes - gdkchan's requested changes that have been marked resolved - made some structs internal as they aren't used outside of the GUI - renamed Ryujinx.UI to Ryujinx.Ui to fit naming convention and folder structure - fixed bug where controller type dropdown box is stretched --- Ryujinx.HLE/HOS/Horizon.cs | 22 +- .../Services/Arp/ApplicationLaunchProperty.cs | 2 +- Ryujinx.HLE/Loaders/Npdm/ACI0.cs | 2 +- Ryujinx.HLE/Loaders/Npdm/ACID.cs | 2 +- Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs | 2 +- .../Loaders/Npdm/KernelAccessControl.cs | 2 +- Ryujinx.HLE/Loaders/Npdm/Npdm.cs | 2 +- .../Loaders/Npdm/ServiceAccessControl.cs | 2 +- Ryujinx.sln.DotSettings | 6 + Ryujinx/Config.json | 27 +- Ryujinx/Configuration.cs | 8 +- Ryujinx/Program.cs | 28 +- Ryujinx/RPsupported.dat | 6 + Ryujinx/Ryujinx.csproj | 48 +- Ryujinx/Theme.css | 4054 ----------------- Ryujinx/Ui/AboutInfo.cs | 9 + Ryujinx/Ui/AboutWindow.cs | 48 +- Ryujinx/Ui/AboutWindow.glade | 10 +- Ryujinx/Ui/ApplicationAddedEventArgs.cs | 11 + Ryujinx/Ui/ApplicationData.cs | 17 + Ryujinx/Ui/ApplicationLibrary.cs | 596 +-- Ryujinx/Ui/ApplicationMetadata.cs | 9 + Ryujinx/Ui/GLScreen.cs | 11 +- Ryujinx/Ui/GtkDialog.cs | 23 + Ryujinx/Ui/GuiColumns.cs | 16 + Ryujinx/Ui/MainWindow.cs | 687 ++- Ryujinx/Ui/MainWindow.glade | 122 +- Ryujinx/Ui/NpadController.cs | 3 +- Ryujinx/Ui/NpadKeyboard.cs | 2 +- Ryujinx/Ui/SwitchSettings.cs | 175 +- Ryujinx/Ui/SwitchSettings.glade | 1380 +++--- Ryujinx/Ui/assets/BlueCon.png | Bin 0 -> 164842 bytes Ryujinx/Ui/assets/DiscordLogo.png | Bin 5216 -> 13609 bytes Ryujinx/Ui/assets/GitHubLogo.png | Bin 4044 -> 26883 bytes .../Ui/assets/{ryujinxIcon.png => Icon.png} | Bin Ryujinx/Ui/assets/JoyCon.png | Bin 288310 -> 331451 bytes .../{ryujinxNCAIcon.png => NCAIcon.png} | Bin .../{ryujinxNROIcon.png => NROIcon.png} | Bin .../{ryujinxNSOIcon.png => NSOIcon.png} | Bin .../{ryujinxNSPIcon.png => NSPIcon.png} | Bin Ryujinx/Ui/assets/PatreonLogo.png | Bin 5899 -> 15483 bytes Ryujinx/Ui/assets/ProCon.png | Bin 0 -> 324289 bytes Ryujinx/Ui/assets/RedCon.png | Bin 0 -> 177647 bytes Ryujinx/Ui/assets/TwitterLogo.png | Bin 8012 -> 16937 bytes .../{ryujinxXCIIcon.png => XCIIcon.png} | Bin Ryujinx/_schema.json | 17 +- 46 files changed, 1838 insertions(+), 5511 deletions(-) delete mode 100644 Ryujinx/Theme.css create mode 100644 Ryujinx/Ui/AboutInfo.cs create mode 100644 Ryujinx/Ui/ApplicationAddedEventArgs.cs create mode 100644 Ryujinx/Ui/ApplicationData.cs create mode 100644 Ryujinx/Ui/ApplicationMetadata.cs create mode 100644 Ryujinx/Ui/GtkDialog.cs create mode 100644 Ryujinx/Ui/GuiColumns.cs create mode 100644 Ryujinx/Ui/assets/BlueCon.png rename Ryujinx/Ui/assets/{ryujinxIcon.png => Icon.png} (100%) rename Ryujinx/Ui/assets/{ryujinxNCAIcon.png => NCAIcon.png} (100%) rename Ryujinx/Ui/assets/{ryujinxNROIcon.png => NROIcon.png} (100%) rename Ryujinx/Ui/assets/{ryujinxNSOIcon.png => NSOIcon.png} (100%) rename Ryujinx/Ui/assets/{ryujinxNSPIcon.png => NSPIcon.png} (100%) create mode 100644 Ryujinx/Ui/assets/ProCon.png create mode 100644 Ryujinx/Ui/assets/RedCon.png rename Ryujinx/Ui/assets/{ryujinxXCIIcon.png => XCIIcon.png} (100%) diff --git a/Ryujinx.HLE/HOS/Horizon.cs b/Ryujinx.HLE/HOS/Horizon.cs index 1e218c87d..aa01bfc97 100644 --- a/Ryujinx.HLE/HOS/Horizon.cs +++ b/Ryujinx.HLE/HOS/Horizon.cs @@ -105,11 +105,9 @@ namespace Ryujinx.HLE.HOS public Nacp ControlData { get; set; } - public string CurrentTitle { get; private set; } - public string TitleName { get; private set; } - public string TitleID { get; private set; } + public string TitleId { get; private set; } public IntegrityCheckLevel FsIntegrityCheckLevel { get; set; } @@ -366,7 +364,7 @@ namespace Ryujinx.HLE.HOS { ControlData = new Nacp(controlFile.AsStream()); - TitleName = CurrentTitle = ControlData.Descriptions[(int) State.DesiredTitleLanguage].Title; + TitleName = ControlData.Descriptions[(int)State.DesiredTitleLanguage].Title; } } @@ -500,12 +498,12 @@ namespace Ryujinx.HLE.HOS Nacp controlData = new Nacp(controlFile.AsStream()); - TitleName = CurrentTitle = controlData.Descriptions[(int)State.DesiredTitleLanguage].Title; - TitleID = metaData.Aci0.TitleId.ToString("x16"); + TitleName = controlData.Descriptions[(int)State.DesiredTitleLanguage].Title; + TitleId = metaData.Aci0.TitleId.ToString("x16"); - if (string.IsNullOrWhiteSpace(CurrentTitle)) + if (string.IsNullOrWhiteSpace(TitleName)) { - TitleName = CurrentTitle = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title; + TitleName = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title; } return controlData; @@ -517,7 +515,7 @@ namespace Ryujinx.HLE.HOS } else { - TitleID = CurrentTitle = metaData.Aci0.TitleId.ToString("x16"); + TitleId = metaData.Aci0.TitleId.ToString("x16"); } } @@ -557,7 +555,7 @@ namespace Ryujinx.HLE.HOS } } - TitleID = CurrentTitle = metaData.Aci0.TitleId.ToString("x16"); + TitleId = metaData.Aci0.TitleId.ToString("x16"); LoadNso("rtld"); LoadNso("main"); @@ -659,8 +657,8 @@ namespace Ryujinx.HLE.HOS ContentManager.LoadEntries(); - TitleName = CurrentTitle = metaData.TitleName; - TitleID = metaData.Aci0.TitleId.ToString("x16"); + TitleName = metaData.TitleName; + TitleId = metaData.Aci0.TitleId.ToString("x16"); ProgramLoader.LoadStaticObjects(this, metaData, new IExecutable[] { staticObject }); } diff --git a/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs b/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs index c1c6d26dc..4962e3ffd 100644 --- a/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs +++ b/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs @@ -33,7 +33,7 @@ namespace Ryujinx.HLE.HOS.Services.Arp return new ApplicationLaunchProperty { - TitleId = BitConverter.ToInt64(StringUtils.HexToBytes(context.Device.System.TitleID), 0), + TitleId = BitConverter.ToInt64(StringUtils.HexToBytes(context.Device.System.TitleId), 0), Version = 0x00, BaseGameStorageId = (byte)StorageId.NandSystem, UpdateGameStorageId = (byte)StorageId.None diff --git a/Ryujinx.HLE/Loaders/Npdm/ACI0.cs b/Ryujinx.HLE/Loaders/Npdm/ACI0.cs index 8350acf72..209e79d1e 100644 --- a/Ryujinx.HLE/Loaders/Npdm/ACI0.cs +++ b/Ryujinx.HLE/Loaders/Npdm/ACI0.cs @@ -3,7 +3,7 @@ using System.IO; namespace Ryujinx.HLE.Loaders.Npdm { - class Aci0 + public class Aci0 { private const int Aci0Magic = 'A' << 0 | 'C' << 8 | 'I' << 16 | '0' << 24; diff --git a/Ryujinx.HLE/Loaders/Npdm/ACID.cs b/Ryujinx.HLE/Loaders/Npdm/ACID.cs index 4a181b294..365495c60 100644 --- a/Ryujinx.HLE/Loaders/Npdm/ACID.cs +++ b/Ryujinx.HLE/Loaders/Npdm/ACID.cs @@ -3,7 +3,7 @@ using System.IO; namespace Ryujinx.HLE.Loaders.Npdm { - class Acid + public class Acid { private const int AcidMagic = 'A' << 0 | 'C' << 8 | 'I' << 16 | 'D' << 24; diff --git a/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs b/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs index 3359435dc..d0f349eaf 100644 --- a/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs +++ b/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs @@ -2,7 +2,7 @@ namespace Ryujinx.HLE.Loaders.Npdm { - class FsAccessControl + public class FsAccessControl { public int Version { get; private set; } public ulong PermissionsBitmask { get; private set; } diff --git a/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs b/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs index d8e40d0b9..39803642c 100644 --- a/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs +++ b/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs @@ -2,7 +2,7 @@ namespace Ryujinx.HLE.Loaders.Npdm { - class KernelAccessControl + public class KernelAccessControl { public int[] Capabilities { get; private set; } diff --git a/Ryujinx.HLE/Loaders/Npdm/Npdm.cs b/Ryujinx.HLE/Loaders/Npdm/Npdm.cs index 169e68daf..4400793f1 100644 --- a/Ryujinx.HLE/Loaders/Npdm/Npdm.cs +++ b/Ryujinx.HLE/Loaders/Npdm/Npdm.cs @@ -7,7 +7,7 @@ namespace Ryujinx.HLE.Loaders.Npdm // https://github.com/SciresM/hactool/blob/master/npdm.c // https://github.com/SciresM/hactool/blob/master/npdm.h // http://switchbrew.org/index.php?title=NPDM - class Npdm + public class Npdm { private const int MetaMagic = 'M' << 0 | 'E' << 8 | 'T' << 16 | 'A' << 24; diff --git a/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs b/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs index 03f62ff7c..54012b8a9 100644 --- a/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs +++ b/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs @@ -5,7 +5,7 @@ using System.Text; namespace Ryujinx.HLE.Loaders.Npdm { - class ServiceAccessControl + public class ServiceAccessControl { public IReadOnlyDictionary Services { get; private set; } diff --git a/Ryujinx.sln.DotSettings b/Ryujinx.sln.DotSettings index 579d97a45..ed3582549 100644 --- a/Ryujinx.sln.DotSettings +++ b/Ryujinx.sln.DotSettings @@ -4,9 +4,15 @@ UseExplicitType UseExplicitType <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="I" Suffix="" Style="AaBb" /></Policy> + True True True + True + True + True + True True + True True True True diff --git a/Ryujinx/Config.json b/Ryujinx/Config.json index 1ff098aba..8463081fa 100644 --- a/Ryujinx/Config.json +++ b/Ryujinx/Config.json @@ -7,7 +7,9 @@ "logging_enable_error": true, "logging_enable_guest": true, "logging_enable_fs_access_log": false, - "logging_filtered_classes": [ ], + "logging_filtered_classes": [ + + ], "enable_file_log": true, "system_language": "AmericanEnglish", "docked_mode": false, @@ -15,12 +17,27 @@ "enable_vsync": true, "enable_multicore_scheduling": true, "enable_fs_integrity_checks": true, + "fs_global_access_log_mode": 0, "ignore_missing_services": false, "controller_type": "Handheld", - "gui_columns": [ true, true, true, true, true, true, true, true, true ], - "game_dirs": [], + "gui_columns": { + "fav_column": true, + "icon_column": true, + "app_column": true, + "dev_column": true, + "version_column": true, + "time_played_column": true, + "last_played_column": true, + "file_ext_column": true, + "file_size_column": true, + "path_column": true + }, + "game_dirs": [ + + ], "enable_custom_theme": false, "custom_theme_path": "", + "enable_keyboard": false, "keyboard_controls": { "left_joycon": { "stick_up": "W", @@ -54,7 +71,7 @@ "toggle_vsync": "Tab" } }, - "joystick_controls": { + "joystick_controls": { "enabled": true, "index": 0, "deadzone": 0.05, @@ -82,4 +99,4 @@ "button_zr": "Axis5" } } -} +} \ No newline at end of file diff --git a/Ryujinx/Configuration.cs b/Ryujinx/Configuration.cs index c950c4536..c259f9e9d 100644 --- a/Ryujinx/Configuration.cs +++ b/Ryujinx/Configuration.cs @@ -7,8 +7,8 @@ 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 Ryujinx.Ui; +using Ryujinx.Ui.Input; using System; using System.Collections.Generic; using System.IO; @@ -124,7 +124,7 @@ namespace Ryujinx /// /// Used to toggle columns in the GUI /// - public List GuiColumns { get; set; } + public GuiColumns GuiColumns { get; set; } /// /// A list of directories containing games to be used to load games into the games list @@ -154,7 +154,7 @@ namespace Ryujinx /// /// Controller control bindings /// - public UI.Input.NpadController JoystickControls { get; private set; } + public Ui.Input.NpadController JoystickControls { get; private set; } /// /// Loads a configuration file from disk diff --git a/Ryujinx/Program.cs b/Ryujinx/Program.cs index 94cbd80d5..96e9e8dec 100644 --- a/Ryujinx/Program.cs +++ b/Ryujinx/Program.cs @@ -1,7 +1,7 @@ using Gtk; using Ryujinx.Common.Logging; using Ryujinx.Profiler; -using Ryujinx.UI; +using Ryujinx.Ui; using System; using System.IO; @@ -18,16 +18,20 @@ namespace Ryujinx AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit; + GLib.ExceptionManager.UnhandledException += Glib_UnhandledException; Profile.Initialize(); Application.Init(); - Application gtkApplication = new Application("Ryujinx.Ryujinx", GLib.ApplicationFlags.None); - MainWindow mainWindow = new MainWindow(args, gtkApplication); + string appDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFs", "system", "prod.keys"); + string userProfilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".switch", "prod.keys"); + if (!File.Exists(appDataPath) && !File.Exists(userProfilePath)) + { + GtkDialog.CreateErrorDialog($"Key file was not found. Please refer to `KEYS.md` for more info"); + } - gtkApplication.Register(GLib.Cancellable.Current); - gtkApplication.AddWindow(mainWindow); + MainWindow mainWindow = new MainWindow(); mainWindow.Show(); if (args.Length == 1) @@ -45,7 +49,7 @@ namespace Ryujinx private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { - var exception = e.ExceptionObject as Exception; + Exception exception = e.ExceptionObject as Exception; Logger.PrintError(LogClass.Emulation, $"Unhandled exception caught: {exception}"); @@ -54,5 +58,17 @@ namespace Ryujinx Logger.Shutdown(); } } + + private static void Glib_UnhandledException(GLib.UnhandledExceptionArgs e) + { + Exception exception = e.ExceptionObject as Exception; + + Logger.PrintError(LogClass.Application, $"Unhandled exception caught: {exception}"); + + if (e.IsTerminating) + { + Logger.Shutdown(); + } + } } } \ No newline at end of file diff --git a/Ryujinx/RPsupported.dat b/Ryujinx/RPsupported.dat index bcce8b495..c58195bab 100644 --- a/Ryujinx/RPsupported.dat +++ b/Ryujinx/RPsupported.dat @@ -9,6 +9,7 @@ 010034e005c9c000 01004f8006a78000 010051f00ac5e000 +010056e00853a000 0100574009f9e000 0100628004bce000 0100633007d48000 @@ -16,15 +17,20 @@ 010068f00aa78000 01006a800016e000 010072800cbe8000 +01007300020fa000 01007330027ee000 0100749009844000 01007a4008486000 +01007ef00011e000 010080b00ad66000 +01008db008c2c000 010094e00b52e000 01009aa000faa000 01009b90006dc000 +01009cc00c97c000 0100a4200a284000 0100a5c00d162000 +0100abf008968000 0100ae000aebc000 0100b3f000be2000 0100bc2004ff4000 diff --git a/Ryujinx/Ryujinx.csproj b/Ryujinx/Ryujinx.csproj index 90c3f8e5d..c54beffe4 100644 --- a/Ryujinx/Ryujinx.csproj +++ b/Ryujinx/Ryujinx.csproj @@ -18,23 +18,50 @@ false - + false + + MACOS_BUILD + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + - + @@ -42,8 +69,8 @@ - - + + @@ -61,9 +88,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest diff --git a/Ryujinx/Theme.css b/Ryujinx/Theme.css deleted file mode 100644 index 286e092c8..000000000 --- a/Ryujinx/Theme.css +++ /dev/null @@ -1,4054 +0,0 @@ -/* 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/AboutInfo.cs b/Ryujinx/Ui/AboutInfo.cs new file mode 100644 index 000000000..01e0d81b5 --- /dev/null +++ b/Ryujinx/Ui/AboutInfo.cs @@ -0,0 +1,9 @@ +namespace Ryujinx.Ui +{ + internal struct AboutInfo + { + public string InstallVersion; + public string InstallCommit; + public string InstallBranch; + } +} \ No newline at end of file diff --git a/Ryujinx/Ui/AboutWindow.cs b/Ryujinx/Ui/AboutWindow.cs index ccdd55186..b95342437 100644 --- a/Ryujinx/Ui/AboutWindow.cs +++ b/Ryujinx/Ui/AboutWindow.cs @@ -1,27 +1,22 @@ using Gtk; -using GUI = Gtk.Builder.ObjectAttribute; using System; using System.Diagnostics; +using System.IO; using System.Reflection; using System.Runtime.InteropServices; using Utf8Json; using Utf8Json.Resolvers; -using System.IO; -namespace Ryujinx.UI +using GUI = Gtk.Builder.ObjectAttribute; + +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; } + private static AboutInfo AboutInformation { get; set; } -#pragma warning disable 649 +#pragma warning disable CS0649 +#pragma warning disable IDE0044 [GUI] Window _aboutWin; [GUI] Label _versionText; [GUI] Image _ryujinxLogo; @@ -29,7 +24,8 @@ namespace Ryujinx.UI [GUI] Image _gitHubLogo; [GUI] Image _discordLogo; [GUI] Image _twitterLogo; -#pragma warning restore 649 +#pragma warning restore CS0649 +#pragma warning restore IDE0044 public AboutWindow() : this(new Builder("Ryujinx.Ui.AboutWindow.glade")) { } @@ -37,8 +33,8 @@ namespace Ryujinx.UI { 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); + _aboutWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.Icon.png"); + _ryujinxLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.Icon.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 ); @@ -50,10 +46,10 @@ namespace Ryujinx.UI using (Stream stream = File.OpenRead(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "Installer", "Config", "Config.json"))) { - Information = JsonSerializer.Deserialize(stream, resolver); + AboutInformation = JsonSerializer.Deserialize(stream, resolver); } - _versionText.Text = $"Version {Information.InstallVersion} - {Information.InstallBranch} ({Information.InstallCommit})"; + _versionText.Text = $"Version {AboutInformation.InstallVersion} - {AboutInformation.InstallBranch} ({AboutInformation.InstallCommit})"; } catch { @@ -61,7 +57,7 @@ namespace Ryujinx.UI } } - public void OpenUrl(string url) + private static void OpenUrl(string url) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { @@ -78,39 +74,39 @@ namespace Ryujinx.UI } //Events - private void RyujinxButton_Pressed(object obj, ButtonPressEventArgs args) + private void RyujinxButton_Pressed(object sender, ButtonPressEventArgs args) { OpenUrl("https://ryujinx.org"); } - private void PatreonButton_Pressed(object obj, ButtonPressEventArgs args) + private void PatreonButton_Pressed(object sender, ButtonPressEventArgs args) { OpenUrl("https://www.patreon.com/ryujinx"); } - private void GitHubButton_Pressed(object obj, ButtonPressEventArgs args) + private void GitHubButton_Pressed(object sender, ButtonPressEventArgs args) { OpenUrl("https://github.com/Ryujinx/Ryujinx"); } - private void DiscordButton_Pressed(object obj, ButtonPressEventArgs args) + private void DiscordButton_Pressed(object sender, ButtonPressEventArgs args) { OpenUrl("https://discordapp.com/invite/N2FmfVc"); } - private void TwitterButton_Pressed(object obj, ButtonPressEventArgs args) + private void TwitterButton_Pressed(object sender, ButtonPressEventArgs args) { OpenUrl("https://twitter.com/RyujinxEmu"); } - private void ContributersButton_Pressed(object obj, ButtonPressEventArgs args) + private void ContributorsButton_Pressed(object sender, ButtonPressEventArgs args) { OpenUrl("https://github.com/Ryujinx/Ryujinx/graphs/contributors?type=a"); } - private void CloseToggle_Activated(object obj, EventArgs args) + private void CloseToggle_Activated(object sender, EventArgs args) { - Destroy(); + Dispose(); } } } diff --git a/Ryujinx/Ui/AboutWindow.glade b/Ryujinx/Ui/AboutWindow.glade index 28a800720..8a27f372e 100644 --- a/Ryujinx/Ui/AboutWindow.glade +++ b/Ryujinx/Ui/AboutWindow.glade @@ -154,10 +154,10 @@ - + True False - Unlicenced + MIT License center @@ -168,7 +168,7 @@ - + True False Ryujinx is not affiliated with Nintendo, @@ -523,11 +523,11 @@ Andy A (BaronKiko) - + True False start - + True diff --git a/Ryujinx/Ui/ApplicationAddedEventArgs.cs b/Ryujinx/Ui/ApplicationAddedEventArgs.cs new file mode 100644 index 000000000..85a2f5a18 --- /dev/null +++ b/Ryujinx/Ui/ApplicationAddedEventArgs.cs @@ -0,0 +1,11 @@ +using System; + +namespace Ryujinx.Ui +{ + public class ApplicationAddedEventArgs : EventArgs + { + public ApplicationData AppData { get; set; } + public int NumAppsFound { get; set; } + public int NumAppsLoaded { get; set; } + } +} diff --git a/Ryujinx/Ui/ApplicationData.cs b/Ryujinx/Ui/ApplicationData.cs new file mode 100644 index 000000000..f43099c1c --- /dev/null +++ b/Ryujinx/Ui/ApplicationData.cs @@ -0,0 +1,17 @@ +namespace Ryujinx.Ui +{ + public struct ApplicationData + { + public bool Favorite { get; set; } + public byte[] Icon { get; set; } + public string TitleName { get; set; } + public string TitleId { get; set; } + public string Developer { get; set; } + public string Version { get; set; } + public string TimePlayed { get; set; } + public string LastPlayed { get; set; } + public string FileExtension { get; set; } + public string FileSize { get; set; } + public string Path { get; set; } + } +} diff --git a/Ryujinx/Ui/ApplicationLibrary.cs b/Ryujinx/Ui/ApplicationLibrary.cs index 1b697e426..fecbf27b4 100644 --- a/Ryujinx/Ui/ApplicationLibrary.cs +++ b/Ryujinx/Ui/ApplicationLibrary.cs @@ -1,66 +1,50 @@ -using LibHac; +using JsonPrettyPrinterPlus; +using LibHac; using LibHac.Fs; using LibHac.FsSystem; using LibHac.FsSystem.NcaUtils; using LibHac.Spl; using Ryujinx.Common.Logging; +using Ryujinx.HLE.FileSystem; +using Ryujinx.HLE.Loaders.Npdm; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; +using Utf8Json; +using Utf8Json.Resolvers; -using SystemState = Ryujinx.HLE.HOS.SystemState; +using TitleLanguage = Ryujinx.HLE.HOS.SystemState.TitleLanguage; -namespace Ryujinx.UI +namespace Ryujinx.Ui { public class ApplicationLibrary { - private static Keyset KeySet; - private static SystemState.TitleLanguage DesiredTitleLanguage; + public static event EventHandler ApplicationAdded; - private const double SecondsPerMinute = 60.0; - private const double SecondsPerHour = SecondsPerMinute * 60; - private const double SecondsPerDay = SecondsPerHour * 24; + private static readonly byte[] _nspIcon = GetResourceBytes("Ryujinx.Ui.assets.NSPIcon.png"); + private static readonly byte[] _xciIcon = GetResourceBytes("Ryujinx.Ui.assets.XCIIcon.png"); + private static readonly byte[] _ncaIcon = GetResourceBytes("Ryujinx.Ui.assets.NCAIcon.png"); + private static readonly byte[] _nroIcon = GetResourceBytes("Ryujinx.Ui.assets.NROIcon.png"); + private static readonly byte[] _nsoIcon = GetResourceBytes("Ryujinx.Ui.assets.NSOIcon.png"); - 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; } + private static Keyset _keySet; + private static TitleLanguage _desiredTitleLanguage; + private static ApplicationMetadata _appMetadata; - public static List ApplicationLibraryData { get; private set; } - - public struct ApplicationData + public static void LoadApplications(List appDirs, Keyset keySet, TitleLanguage desiredTitleLanguage) { - 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; - } + int numApplicationsFound = 0; + int numApplicationsLoaded = 0; - 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"); + _keySet = keySet; + _desiredTitleLanguage = desiredTitleLanguage; // Builds the applications list with paths to found applications List applications = new List(); - foreach (string appDir in AppDirs) + foreach (string appDir in appDirs) { if (Directory.Exists(appDir) == false) { @@ -69,30 +53,80 @@ namespace Ryujinx.UI continue; } - DirectoryInfo AppDirInfo = new DirectoryInfo(appDir); - foreach (FileInfo App in AppDirInfo.GetFiles()) + foreach (string app in Directory.GetFiles(appDir, "*.*", SearchOption.AllDirectories)) { - 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")) + if ((Path.GetExtension(app) == ".xci") || + (Path.GetExtension(app) == ".nro") || + (Path.GetExtension(app) == ".nso") || + (Path.GetFileName(app) == "hbl.nsp")) { - applications.Add(App.ToString()); + applications.Add(app); + numApplicationsFound++; + } + else if ((Path.GetExtension(app) == ".nsp") || (Path.GetExtension(app) == ".pfs0")) + { + try + { + bool hasMainNca = false; + + PartitionFileSystem nsp = new PartitionFileSystem(new FileStream(app, FileMode.Open, FileAccess.Read).AsStorage()); + foreach (DirectoryEntryEx fileEntry in nsp.EnumerateEntries("/", "*.nca")) + { + nsp.OpenFile(out IFile ncaFile, fileEntry.FullPath, OpenMode.Read).ThrowIfFailure(); + + Nca nca = new Nca(_keySet, ncaFile.AsStorage()); + int dataIndex = Nca.GetSectionIndexFromType(NcaSectionType.Data, NcaContentType.Program); + + if (nca.Header.ContentType == NcaContentType.Program && !nca.Header.GetFsHeader(dataIndex).IsPatchSection()) + { + hasMainNca = true; + } + } + + if (!hasMainNca) + { + continue; + } + } + catch (InvalidDataException) + { + Logger.PrintWarning(LogClass.Application, $"{app}: The header key is incorrect or missing and therefore the NCA header content type check has failed."); + } + + applications.Add(app); + numApplicationsFound++; + } + else if (Path.GetExtension(app) == ".nca") + { + try + { + Nca nca = new Nca(_keySet, new FileStream(app, FileMode.Open, FileAccess.Read).AsStorage()); + int dataIndex = Nca.GetSectionIndexFromType(NcaSectionType.Data, NcaContentType.Program); + + if (nca.Header.ContentType != NcaContentType.Program || nca.Header.GetFsHeader(dataIndex).IsPatchSection()) + { + continue; + } + } + catch (InvalidDataException) + { + Logger.PrintWarning(LogClass.Application, $"{app}: The header key is incorrect or missing and therefore the NCA header content type check has failed."); + } + + applications.Add(app); + numApplicationsFound++; } } } - // Loops through applications list, creating a struct for each application and then adding the struct to a list of structs - ApplicationLibraryData = new List(); + // Loops through applications list, creating a struct and then firing an event containing the struct for each application 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; + double fileSize = new FileInfo(applicationPath).Length * 0.000000000931; + string titleName = "Unknown"; + string titleId = "0000000000000000"; + string developer = "Unknown"; + string version = "0"; byte[] applicationIcon = null; using (FileStream file = new FileStream(applicationPath, FileMode.Open, FileAccess.Read)) @@ -103,158 +137,48 @@ namespace Ryujinx.UI { try { - IFileSystem controlFs = null; - - // Store the ControlFS in variable called controlFs + PartitionFileSystem pfs; + if (Path.GetExtension(applicationPath) == ".xci") { - Xci xci = new Xci(KeySet, file.AsStorage()); + Xci xci = new Xci(_keySet, file.AsStorage()); - controlFs = GetControlFs(xci.OpenPartition(XciPartitionType.Secure)); + pfs = xci.OpenPartition(XciPartitionType.Secure); } else { - controlFs = GetControlFs(new PartitionFileSystem(file.AsStorage())); + pfs = new PartitionFileSystem(file.AsStorage()); } - // Creates NACP class from the NACP file - controlFs.OpenFile(out IFile controlNacpFile, "/control.nacp", OpenMode.Read).ThrowIfFailure(); + // Store the ControlFS in variable called controlFs + IFileSystem controlFs = GetControlFs(pfs); - Nacp controlData = new Nacp(controlNacpFile.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)) + // If this is null then this is probably not a normal NSP, it's probably an ExeFS as an NSP + if (controlFs == null) { - titleName = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title; - } + applicationIcon = _nspIcon; - titleId = controlData.PresenceGroupId.ToString("x16"); + Result result = pfs.OpenFile(out IFile npdmFile, "/main.npdm", OpenMode.Read); - 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 - { - controlFs.OpenFile(out IFile icon, $"/icon_{DesiredTitleLanguage}.dat", OpenMode.Read).ThrowIfFailure(); - - using (MemoryStream stream = new MemoryStream()) + if (result != ResultFs.PathNotFound) { - icon.AsStream().CopyTo(stream); - applicationIcon = stream.ToArray(); + Npdm npdm = new Npdm(npdmFile.AsStream()); + + titleName = npdm.TitleName; + titleId = npdm.Aci0.TitleId.ToString("x16"); } } - catch (HorizonResultException) + else { - foreach (DirectoryEntryEx entry in controlFs.EnumerateEntries("/", "*")) - { - if (entry.Name == "control.nacp") - { - continue; - } + // Creates NACP class from the NACP file + controlFs.OpenFile(out IFile controlNacpFile, "/control.nacp", OpenMode.Read).ThrowIfFailure(); - controlFs.OpenFile(out IFile icon, entry.FullPath, OpenMode.Read).ThrowIfFailure(); - - 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); + Nacp controlData = new Nacp(controlNacpFile.AsStream()); // Get the title name, title ID, developer name and version number from the NACP version = controlData.DisplayVersion; - titleName = controlData.Descriptions[(int)DesiredTitleLanguage].Title; + titleName = controlData.Descriptions[(int)_desiredTitleLanguage].Title; if (string.IsNullOrWhiteSpace(titleName)) { @@ -273,7 +197,123 @@ namespace Ryujinx.UI titleId = (controlData.AddOnContentBaseId - 0x1000).ToString("x16"); } - developer = controlData.Descriptions[(int)DesiredTitleLanguage].Developer; + 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 + { + controlFs.OpenFile(out IFile icon, $"/icon_{_desiredTitleLanguage}.dat", OpenMode.Read).ThrowIfFailure(); + + using (MemoryStream stream = new MemoryStream()) + { + icon.AsStream().CopyTo(stream); + applicationIcon = stream.ToArray(); + } + } + catch (HorizonResultException) + { + foreach (DirectoryEntryEx entry in controlFs.EnumerateEntries("/", "*")) + { + if (entry.Name == "control.nacp") + { + continue; + } + + controlFs.OpenFile(out IFile icon, entry.FullPath, OpenMode.Read).ThrowIfFailure(); + + using (MemoryStream stream = new MemoryStream()) + { + icon.AsStream().CopyTo(stream); + applicationIcon = stream.ToArray(); + } + + if (applicationIcon != null) + { + break; + } + } + + if (applicationIcon == null) + { + applicationIcon = Path.GetExtension(applicationPath) == ".xci" ? _xciIcon : _nspIcon; + } + } + } + } + catch (MissingKeyException exception) + { + applicationIcon = Path.GetExtension(applicationPath) == ".xci" ? _xciIcon : _nspIcon; + + Logger.PrintWarning(LogClass.Application, $"Your key set is missing a key with the name: {exception.Name}"); + } + catch (InvalidDataException) + { + applicationIcon = Path.GetExtension(applicationPath) == ".xci" ? _xciIcon : _nspIcon; + + Logger.PrintWarning(LogClass.Application, $"The header key is incorrect or missing and therefore the NCA header content type check has failed. Errored File: {applicationPath}"); + } + } + 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)) { @@ -283,59 +323,50 @@ namespace Ryujinx.UI } else { - applicationIcon = RyujinxNroIcon; - titleName = "Application"; - titleId = "0000000000000000"; - developer = "Unknown"; - version = "?"; + applicationIcon = _nroIcon; } } // 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"; + applicationIcon = Path.GetExtension(applicationPath) == ".nca" ? _ncaIcon : _nsoIcon; + titleName = Path.GetFileNameWithoutExtension(applicationPath); } } - string[] playedData = GetPlayedData(titleId, "00000000000000000000000000000001"); + (bool favorite, string timePlayed, string lastPlayed) = GetMetadata(titleId); 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, + Favorite = favorite, + Icon = applicationIcon, + TitleName = titleName, + TitleId = titleId, + Developer = developer, + Version = version, + TimePlayed = timePlayed, + LastPlayed = lastPlayed, + FileExtension = Path.GetExtension(applicationPath).ToUpper().Remove(0 ,1), + FileSize = (fileSize < 1) ? (fileSize * 1024).ToString("0.##") + "MB" : fileSize.ToString("0.##") + "GB", + Path = applicationPath, }; - ApplicationLibraryData.Add(data); + numApplicationsLoaded++; + + OnApplicationAdded(new ApplicationAddedEventArgs() + { + AppData = data, + NumAppsFound = numApplicationsFound, + NumAppsLoaded = numApplicationsLoaded + }); } } + protected static void OnApplicationAdded(ApplicationAddedEventArgs e) + { + ApplicationAdded?.Invoke(null, e); + } + private static byte[] GetResourceBytes(string resourceName) { Stream resourceStream = Assembly.GetCallingAssembly().GetManifestResourceStream(resourceName); @@ -346,29 +377,29 @@ namespace Ryujinx.UI return resourceByteArray; } - private static IFileSystem GetControlFs(PartitionFileSystem Pfs) + private static IFileSystem GetControlFs(PartitionFileSystem pfs) { Nca controlNca = null; - // Add keys to keyset if needed - foreach (DirectoryEntryEx ticketEntry in Pfs.EnumerateEntries("/", "*.tik")) + // Add keys to key set if needed + foreach (DirectoryEntryEx ticketEntry in pfs.EnumerateEntries("/", "*.tik")) { - Result result = Pfs.OpenFile(out IFile ticketFile, ticketEntry.FullPath, OpenMode.Read); + Result result = pfs.OpenFile(out IFile ticketFile, ticketEntry.FullPath, OpenMode.Read); if (result.IsSuccess()) { Ticket ticket = new Ticket(ticketFile.AsStream()); - KeySet.ExternalKeySet.Add(new RightsId(ticket.RightsId), new AccessKey(ticket.GetTitleKey(KeySet))); + _keySet.ExternalKeySet.Add(new RightsId(ticket.RightsId), new AccessKey(ticket.GetTitleKey(_keySet))); } } // Find the Control NCA and store it in variable called controlNca - foreach (DirectoryEntryEx fileEntry in Pfs.EnumerateEntries("/", "*.nca")) + foreach (DirectoryEntryEx fileEntry in pfs.EnumerateEntries("/", "*.nca")) { - Pfs.OpenFile(out IFile ncaFile, fileEntry.FullPath, OpenMode.Read).ThrowIfFailure(); + pfs.OpenFile(out IFile ncaFile, fileEntry.FullPath, OpenMode.Read).ThrowIfFailure(); - Nca nca = new Nca(KeySet, ncaFile.AsStorage()); + Nca nca = new Nca(_keySet, ncaFile.AsStorage()); if (nca.Header.ContentType == NcaContentType.Control) { @@ -377,84 +408,65 @@ namespace Ryujinx.UI } // Return the ControlFS - return controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None); + return controlNca?.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None); } - private static string[] GetPlayedData(string TitleId, string UserId) + private static (bool favorite, string timePlayed, string lastPlayed) GetMetadata(string titleId) { - try + string metadataFolder = Path.Combine(new VirtualFileSystem().GetBasePath(), "games", titleId, "gui"); + string metadataFile = Path.Combine(metadataFolder, "metadata.json"); + + IJsonFormatterResolver resolver = CompositeResolver.Create(StandardResolver.AllowPrivateSnakeCase); + + if (!File.Exists(metadataFile)) { - string[] playedData = new string[2]; - string savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "nand", "user", "save", "0000000000000000", UserId, TitleId); + Directory.CreateDirectory(metadataFolder); - if (File.Exists(Path.Combine(savePath, "TimePlayed.dat")) == false) + _appMetadata = new ApplicationMetadata { - 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()); + Favorite = false, + TimePlayed = 0, + LastPlayed = "Never" + }; - 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; + byte[] saveData = JsonSerializer.Serialize(_appMetadata, resolver); + File.WriteAllText(metadataFile, Encoding.UTF8.GetString(saveData, 0, saveData.Length).PrettyPrintJson()); } - catch + + using (Stream stream = File.OpenRead(metadataFile)) { - return new string[] { "Unknown", "Unknown" }; + _appMetadata = JsonSerializer.Deserialize(stream, resolver); } + + return (_appMetadata.Favorite, ConvertSecondsToReadableString(_appMetadata.TimePlayed), _appMetadata.LastPlayed); } - private static byte[] NspOrXciIcon(string applicationPath) + private static string ConvertSecondsToReadableString(double seconds) { - if (Path.GetExtension(applicationPath) == ".xci") + const int secondsPerMinute = 60; + const int secondsPerHour = secondsPerMinute * 60; + const int secondsPerDay = secondsPerHour * 24; + + string readableString; + + if (seconds < secondsPerMinute) { - return RyujinxXciIcon; + readableString = $"{seconds}s"; + } + else if (seconds < secondsPerHour) + { + readableString = $"{Math.Round(seconds / secondsPerMinute, 2, MidpointRounding.AwayFromZero)} mins"; + } + else if (seconds < secondsPerDay) + { + readableString = $"{Math.Round(seconds / secondsPerHour, 2, MidpointRounding.AwayFromZero)} hrs"; } else { - return RyujinxNspIcon; + readableString = $"{Math.Round(seconds / secondsPerDay, 2, MidpointRounding.AwayFromZero)} days"; } + + return readableString; } } } diff --git a/Ryujinx/Ui/ApplicationMetadata.cs b/Ryujinx/Ui/ApplicationMetadata.cs new file mode 100644 index 000000000..adc2b9df9 --- /dev/null +++ b/Ryujinx/Ui/ApplicationMetadata.cs @@ -0,0 +1,9 @@ +namespace Ryujinx.Ui +{ + internal struct ApplicationMetadata + { + public bool Favorite { get; set; } + public double TimePlayed { get; set; } + public string LastPlayed { get; set; } + } +} diff --git a/Ryujinx/Ui/GLScreen.cs b/Ryujinx/Ui/GLScreen.cs index 7c3946300..c23a36929 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.UI +namespace Ryujinx.Ui { public class GlScreen : GameWindow { @@ -297,10 +297,13 @@ namespace Ryujinx.UI double hostFps = _device.Statistics.GetSystemFrameRate(); double gameFps = _device.Statistics.GetGameFrameRate(); - string titleSection = string.IsNullOrWhiteSpace(_device.System.CurrentTitle) ? string.Empty - : " | " + _device.System.CurrentTitle; + string titleNameSection = string.IsNullOrWhiteSpace(_device.System.TitleName) ? string.Empty + : " | " + _device.System.TitleName; - _newTitle = $"Ryujinx{titleSection} | Host FPS: {hostFps:0.0} | Game FPS: {gameFps:0.0} | " + + string titleIDSection = string.IsNullOrWhiteSpace(_device.System.TitleId) ? string.Empty + : " | " + _device.System.TitleId.ToUpper(); + + _newTitle = $"Ryujinx{titleNameSection}{titleIDSection} | Host FPS: {hostFps:0.0} | Game FPS: {gameFps:0.0} | " + $"Game Vsync: {(_device.EnableDeviceVsync ? "On" : "Off")}"; _titleEvent = true; diff --git a/Ryujinx/Ui/GtkDialog.cs b/Ryujinx/Ui/GtkDialog.cs new file mode 100644 index 000000000..7f6be8dc7 --- /dev/null +++ b/Ryujinx/Ui/GtkDialog.cs @@ -0,0 +1,23 @@ +using Gtk; +using System.Reflection; + +namespace Ryujinx.Ui +{ + internal class GtkDialog + { + internal static void CreateErrorDialog(string errorMessage) + { + MessageDialog errorDialog = new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, null) + { + Title = "Ryujinx - Error", + Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.Icon.png"), + Text = "Ryujinx has encountered an error", + SecondaryText = errorMessage, + WindowPosition = WindowPosition.Center + }; + errorDialog.SetSizeRequest(100, 20); + errorDialog.Run(); + errorDialog.Dispose(); + } + } +} diff --git a/Ryujinx/Ui/GuiColumns.cs b/Ryujinx/Ui/GuiColumns.cs new file mode 100644 index 000000000..b86a273ea --- /dev/null +++ b/Ryujinx/Ui/GuiColumns.cs @@ -0,0 +1,16 @@ +namespace Ryujinx.Ui +{ + public struct GuiColumns + { + public bool FavColumn; + public bool IconColumn; + public bool AppColumn; + public bool DevColumn; + public bool VersionColumn; + public bool TimePlayedColumn; + public bool LastPlayedColumn; + public bool FileExtColumn; + public bool FileSizeColumn; + public bool PathColumn; + } +} diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs index 28c6ac586..a24f3ed05 100644 --- a/Ryujinx/Ui/MainWindow.cs +++ b/Ryujinx/Ui/MainWindow.cs @@ -1,10 +1,11 @@ using DiscordRPC; using Gtk; -using GUI = Gtk.Builder.ObjectAttribute; +using JsonPrettyPrinterPlus; using Ryujinx.Audio; using Ryujinx.Common.Logging; -using Ryujinx.Graphics.Gal; using Ryujinx.Graphics.Gal.OpenGL; +using Ryujinx.Graphics.Gal; +using Ryujinx.HLE.FileSystem; using Ryujinx.Profiler; using System; using System.Diagnostics; @@ -12,25 +13,42 @@ using System.IO; using System.Linq; using System.Reflection; using System.Text; +using System.Threading.Tasks; using System.Threading; +using Utf8Json; +using Utf8Json.Resolvers; -namespace Ryujinx.UI +using GUI = Gtk.Builder.ObjectAttribute; + +namespace Ryujinx.Ui { public class MainWindow : Window { - internal static HLE.Switch _device; + private static HLE.Switch _device; private static IGalRenderer _renderer; private static IAalOutput _audioOut; - private static Application _gtkApplication; + private static GlScreen _screen; private static ListStore _tableStore; - private static bool _gameLoaded = false; + private static bool _updatingGameTable; + private static bool _gameLoaded; + private static bool _ending; - private static string _userId = "00000000000000000000000000000001"; + private static TreeViewColumn _favColumn; + private static TreeViewColumn _appColumn; + private static TreeViewColumn _devColumn; + private static TreeViewColumn _versionColumn; + private static TreeViewColumn _timePlayedColumn; + private static TreeViewColumn _lastPlayedColumn; + private static TreeViewColumn _fileExtColumn; + private static TreeViewColumn _fileSizeColumn; + private static TreeViewColumn _pathColumn; + + private static TreeView _treeView; public static bool DiscordIntegrationEnabled { get; set; } @@ -38,12 +56,14 @@ namespace Ryujinx.UI public static RichPresence DiscordPresence; -#pragma warning disable 649 +#pragma warning disable CS0649 +#pragma warning disable IDE0044 [GUI] Window _mainWin; [GUI] CheckMenuItem _fullScreen; [GUI] MenuItem _stopEmulation; + [GUI] CheckMenuItem _favToggle; [GUI] CheckMenuItem _iconToggle; - [GUI] CheckMenuItem _titleToggle; + [GUI] CheckMenuItem _appToggle; [GUI] CheckMenuItem _developerToggle; [GUI] CheckMenuItem _versionToggle; [GUI] CheckMenuItem _timePlayedToggle; @@ -51,28 +71,33 @@ namespace Ryujinx.UI [GUI] CheckMenuItem _fileExtToggle; [GUI] CheckMenuItem _fileSizeToggle; [GUI] CheckMenuItem _pathToggle; - [GUI] Box _box; [GUI] TreeView _gameTable; - [GUI] GLArea _glScreen; -#pragma warning restore 649 + [GUI] Label _progressLabel; + [GUI] LevelBar _progressBar; +#pragma warning restore CS0649 +#pragma warning restore IDE0044 - public MainWindow(string[] args, Application gtkApplication) : this(new Builder("Ryujinx.Ui.MainWindow.glade"), args, gtkApplication) { } + public MainWindow() : this(new Builder("Ryujinx.Ui.MainWindow.glade")) { } - private MainWindow(Builder builder, string[] args, Application gtkApplication) : base(builder.GetObject("_mainWin").Handle) + private MainWindow(Builder builder) : base(builder.GetObject("_mainWin").Handle) { + builder.Autoconnect(this); + + DeleteEvent += Window_Close; + + ApplicationLibrary.ApplicationAdded += Application_Added; + _renderer = new OglRenderer(); _audioOut = InitializeAudioEngine(); _device = new HLE.Switch(_renderer, _audioOut); + _treeView = _gameTable; + 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) @@ -94,117 +119,130 @@ namespace Ryujinx.UI DiscordClient.SetPresence(DiscordPresence); } - builder.Autoconnect(this); - - DeleteEvent += Window_Close; - - _mainWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ryujinxIcon.png"); + _mainWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.Icon.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 (SwitchSettings.SwitchConfig.GuiColumns.FavColumn) { _favToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.IconColumn) { _iconToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.AppColumn) { _appToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.DevColumn) { _developerToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.VersionColumn) { _versionToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.TimePlayedColumn) { _timePlayedToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.LastPlayedColumn) { _lastPlayedToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.FileExtColumn) { _fileExtToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.FileSizeColumn) { _fileSizeToggle.Active = true; } + if (SwitchSettings.SwitchConfig.GuiColumns.PathColumn) { _pathToggle.Active = true; } - if (args.Length == 1) + _gameTable.Model = _tableStore = new ListStore( + typeof(bool), + typeof(Gdk.Pixbuf), + typeof(string), + typeof(string), + typeof(string), + typeof(string), + typeof(string), + typeof(string), + typeof(string), + typeof(string)); + + _tableStore.SetSortFunc(5, TimePlayedSort); + _tableStore.SetSortFunc(6, LastPlayedSort); + _tableStore.SetSortFunc(8, FileSizeSort); + _tableStore.SetSortColumnId(0, SortType.Descending); + + UpdateColumns(); +#pragma warning disable CS4014 + UpdateGameTable(); +#pragma warning restore CS4014 + } + + internal static void ApplyTheme() + { + if (!SwitchSettings.SwitchConfig.EnableCustomTheme) { - // Temporary code section start, remove this section when game is rendered to the GLArea in the GUI - _box.Remove(_glScreen); + return; + } - 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); } + if (File.Exists(SwitchSettings.SwitchConfig.CustomThemePath) && (System.IO.Path.GetExtension(SwitchSettings.SwitchConfig.CustomThemePath) == ".css")) + { + CssProvider cssProvider = new CssProvider(); - _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; + cssProvider.LoadFromPath(SwitchSettings.SwitchConfig.CustomThemePath); - UpdateGameTable(); - // Temporary code section end + StyleContext.AddProviderForScreen(Gdk.Screen.Default, cssProvider, 800); } 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(); + Logger.PrintWarning(LogClass.Application, $"The \"custom_theme_path\" section in \"Config.json\" contains an invalid path: \"{SwitchSettings.SwitchConfig.CustomThemePath}\"."); } } - public static void CreateErrorDialog(string errorMessage) + private void UpdateColumns() { - MessageDialog errorDialog = new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, errorMessage) + foreach (TreeViewColumn column in _gameTable.Columns) { - 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(); + _gameTable.RemoveColumn(column); + } + + CellRendererToggle favToggle = new CellRendererToggle(); + favToggle.Toggled += FavToggle_Toggled; + + if (SwitchSettings.SwitchConfig.GuiColumns.FavColumn) { _gameTable.AppendColumn("Fav", favToggle, "active", 0); } + if (SwitchSettings.SwitchConfig.GuiColumns.IconColumn) { _gameTable.AppendColumn("Icon", new CellRendererPixbuf(), "pixbuf", 1); } + if (SwitchSettings.SwitchConfig.GuiColumns.AppColumn) { _gameTable.AppendColumn("Application", new CellRendererText(), "text", 2); } + if (SwitchSettings.SwitchConfig.GuiColumns.DevColumn) { _gameTable.AppendColumn("Developer", new CellRendererText(), "text", 3); } + if (SwitchSettings.SwitchConfig.GuiColumns.VersionColumn) { _gameTable.AppendColumn("Version", new CellRendererText(), "text", 4); } + if (SwitchSettings.SwitchConfig.GuiColumns.TimePlayedColumn) { _gameTable.AppendColumn("Time Played", new CellRendererText(), "text", 5); } + if (SwitchSettings.SwitchConfig.GuiColumns.LastPlayedColumn) { _gameTable.AppendColumn("Last Played", new CellRendererText(), "text", 6); } + if (SwitchSettings.SwitchConfig.GuiColumns.FileExtColumn) { _gameTable.AppendColumn("File Ext", new CellRendererText(), "text", 7); } + if (SwitchSettings.SwitchConfig.GuiColumns.FileSizeColumn) { _gameTable.AppendColumn("File Size", new CellRendererText(), "text", 8); } + if (SwitchSettings.SwitchConfig.GuiColumns.PathColumn) { _gameTable.AppendColumn("Path", new CellRendererText(), "text", 9); } + + foreach (TreeViewColumn column in _gameTable.Columns) + { + if (column.Title == "Fav") { _favColumn = column; } + else if (column.Title == "Application") { _appColumn = column; } + else if (column.Title == "Developer") { _devColumn = column; } + else if (column.Title == "Version") { _versionColumn = column; } + else if (column.Title == "Time Played") { _timePlayedColumn = column; } + else if (column.Title == "Last Played") { _lastPlayedColumn = column; } + else if (column.Title == "File Ext") { _fileExtColumn = column; } + else if (column.Title == "File Size") { _fileSizeColumn = column; } + else if (column.Title == "Path") { _pathColumn = column; } + } + + if (SwitchSettings.SwitchConfig.GuiColumns.FavColumn) { _favColumn.SortColumnId = 0; } + if (SwitchSettings.SwitchConfig.GuiColumns.IconColumn) { _appColumn.SortColumnId = 2; } + if (SwitchSettings.SwitchConfig.GuiColumns.AppColumn) { _devColumn.SortColumnId = 3; } + if (SwitchSettings.SwitchConfig.GuiColumns.DevColumn) { _versionColumn.SortColumnId = 4; } + if (SwitchSettings.SwitchConfig.GuiColumns.TimePlayedColumn) { _timePlayedColumn.SortColumnId = 5; } + if (SwitchSettings.SwitchConfig.GuiColumns.LastPlayedColumn) { _lastPlayedColumn.SortColumnId = 6; } + if (SwitchSettings.SwitchConfig.GuiColumns.FileExtColumn) { _fileExtColumn.SortColumnId = 7; } + if (SwitchSettings.SwitchConfig.GuiColumns.FileSizeColumn) { _fileSizeColumn.SortColumnId = 8; } + if (SwitchSettings.SwitchConfig.GuiColumns.PathColumn) { _pathColumn.SortColumnId = 9; } } - public static void UpdateGameTable() + internal static async Task UpdateGameTable() { + if (_updatingGameTable) + { + return; + } + + _updatingGameTable = true; + _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); - } - } + await Task.Run(() => ApplicationLibrary.LoadApplications(SwitchSettings.SwitchConfig.GameDirs, _device.System.KeySet, _device.System.State.DesiredTitleLanguage)); - 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); + _updatingGameTable = false; } internal void LoadApplication(string path) { if (_gameLoaded) { - CreateErrorDialog("A game has already been loaded. Please close the emulator and try again"); + GtkDialog.CreateErrorDialog("A game has already been loaded. Please close the emulator and try again"); } else { @@ -266,19 +304,23 @@ namespace Ryujinx.UI End(); } - new Thread(new ThreadStart(CreateGameWindow)).Start(); +#if MACOS_BUILD + CreateGameWindow(); +#else + new Thread(CreateGameWindow).Start(); +#endif _gameLoaded = true; _stopEmulation.Sensitive = true; if (DiscordIntegrationEnabled) { - if (File.ReadAllLines(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RPsupported.dat")).Contains(_device.System.TitleID)) + if (File.ReadAllLines(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RPsupported.dat")).Contains(_device.System.TitleId)) { - DiscordPresence.Assets.LargeImageKey = _device.System.TitleID; + DiscordPresence.Assets.LargeImageKey = _device.System.TitleId; } - string state = _device.System.TitleID; + string state = _device.System.TitleId; if (state == null) { @@ -306,40 +348,37 @@ namespace Ryujinx.UI DiscordClient.SetPresence(DiscordPresence); } - try + string metadataFolder = System.IO.Path.Combine(new VirtualFileSystem().GetBasePath(), "games", _device.System.TitleId, "gui"); + string metadataFile = System.IO.Path.Combine(metadataFolder, "metadata.json"); + + IJsonFormatterResolver resolver = CompositeResolver.Create(new[] { StandardResolver.AllowPrivateSnakeCase }); + + ApplicationMetadata appMetadata; + + if (!File.Exists(metadataFile)) { - string savePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "nand", "user", "save", "0000000000000000", _userId, _device.System.TitleID); + Directory.CreateDirectory(metadataFolder); - if (File.Exists(System.IO.Path.Combine(savePath, "TimePlayed.dat")) == false) + appMetadata = new ApplicationMetadata { - Directory.CreateDirectory(savePath); - using (FileStream stream = File.OpenWrite(System.IO.Path.Combine(savePath, "TimePlayed.dat"))) - { - stream.Write(Encoding.ASCII.GetBytes("0")); - } - } + Favorite = false, + TimePlayed = 0, + LastPlayed = "Never" + }; - 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); - } - } + byte[] data = JsonSerializer.Serialize(appMetadata, resolver); + File.WriteAllText(metadataFile, Encoding.UTF8.GetString(data, 0, data.Length).PrettyPrintJson()); } - catch (ArgumentNullException) + + using (Stream stream = File.OpenRead(metadataFile)) { - Logger.PrintWarning(LogClass.Application, $"Could not access save path to retrieve time/last played data using: UserID: {_userId}, TitleID: {_device.System.TitleID}"); + appMetadata = JsonSerializer.Deserialize(stream, resolver); } + + appMetadata.LastPlayed = DateTime.UtcNow.ToString(); + + byte[] saveData = JsonSerializer.Serialize(appMetadata, resolver); + File.WriteAllText(metadataFile, Encoding.UTF8.GetString(saveData, 0, saveData.Length).PrettyPrintJson()); } } @@ -347,9 +386,9 @@ namespace Ryujinx.UI { Configuration.ConfigureHid(_device, SwitchSettings.SwitchConfig); - using (GlScreen screen = new GlScreen(_device, _renderer)) + using (_screen = new GlScreen(_device, _renderer)) { - screen.MainLoop(); + _screen.MainLoop(); End(); } @@ -357,41 +396,49 @@ namespace Ryujinx.UI private static void End() { + if (_ending) + { + return; + } + + _ending = true; + 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; + string metadataFolder = System.IO.Path.Combine(new VirtualFileSystem().GetBasePath(), "games", _device.System.TitleId, "gui"); + string metadataFile = System.IO.Path.Combine(metadataFolder, "metadata.json"); - using (FileStream stream = File.OpenRead(System.IO.Path.Combine(savePath, "LastPlayed.dat"))) + IJsonFormatterResolver resolver = CompositeResolver.Create(new[] { StandardResolver.AllowPrivateSnakeCase }); + + ApplicationMetadata appMetadata; + + if (!File.Exists(metadataFile)) + { + Directory.CreateDirectory(metadataFolder); + + appMetadata = new ApplicationMetadata { - using (StreamReader reader = new StreamReader(stream)) - { - DateTime startTime = DateTime.Parse(reader.ReadLine()); + Favorite = false, + TimePlayed = 0, + LastPlayed = "Never" + }; - 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)); - } - } - } - } + byte[] data = JsonSerializer.Serialize(appMetadata, resolver); + File.WriteAllText(metadataFile, Encoding.UTF8.GetString(data, 0, data.Length).PrettyPrintJson()); } - catch (ArgumentNullException) + + using (Stream stream = File.OpenRead(metadataFile)) { - Logger.PrintWarning(LogClass.Application, $"Could not access save path to retrieve time/last played data using: UserID: {_userId}, TitleID: {_device.System.TitleID}"); + appMetadata = JsonSerializer.Deserialize(stream, resolver); } + + DateTime lastPlayedDateTime = DateTime.Parse(appMetadata.LastPlayed); + double sessionTimePlayed = DateTime.UtcNow.Subtract(lastPlayedDateTime).TotalSeconds; + + appMetadata.TimePlayed += Math.Round(sessionTimePlayed, MidpointRounding.AwayFromZero); + + byte[] saveData = JsonSerializer.Serialize(appMetadata, resolver); + File.WriteAllText(metadataFile, Encoding.UTF8.GetString(saveData, 0, saveData.Length).PrettyPrintJson()); } Profile.FinishProfiling(); @@ -423,15 +470,69 @@ namespace Ryujinx.UI } //Events - private void Row_Activated(object o, RowActivatedArgs args) + private void Application_Added(object sender, ApplicationAddedEventArgs e) + { + Application.Invoke(delegate + { + _tableStore.AppendValues( + e.AppData.Favorite, + new Gdk.Pixbuf(e.AppData.Icon, 75, 75), + $"{e.AppData.TitleName}\n{e.AppData.TitleId.ToUpper()}", + e.AppData.Developer, + e.AppData.Version, + e.AppData.TimePlayed, + e.AppData.LastPlayed, + e.AppData.FileExtension, + e.AppData.FileSize, + e.AppData.Path); + + _progressLabel.Text = $"{e.NumAppsLoaded}/{e.NumAppsFound} Games Loaded"; + _progressBar.Value = (float)e.NumAppsLoaded / e.NumAppsFound; + }); + } + + private void FavToggle_Toggled(object sender, ToggledArgs args) + { + _tableStore.GetIter(out TreeIter treeIter, new TreePath(args.Path)); + + string titleId = _tableStore.GetValue(treeIter, 2).ToString().Split("\n")[1].ToLower(); + string metadataPath = System.IO.Path.Combine(new VirtualFileSystem().GetBasePath(), "games", titleId, "gui", "metadata.json"); + + IJsonFormatterResolver resolver = CompositeResolver.Create(new[] { StandardResolver.AllowPrivateSnakeCase }); + + ApplicationMetadata appMetadata; + + using (Stream stream = File.OpenRead(metadataPath)) + { + appMetadata = JsonSerializer.Deserialize(stream, resolver); + } + + if ((bool)_tableStore.GetValue(treeIter, 0)) + { + _tableStore.SetValue(treeIter, 0, false); + + appMetadata.Favorite = false; + } + else + { + _tableStore.SetValue(treeIter, 0, true); + + appMetadata.Favorite = true; + } + + byte[] saveData = JsonSerializer.Serialize(appMetadata, resolver); + File.WriteAllText(metadataPath, Encoding.UTF8.GetString(saveData, 0, saveData.Length).PrettyPrintJson()); + } + + private void Row_Activated(object sender, RowActivatedArgs args) { _tableStore.GetIter(out TreeIter treeIter, new TreePath(args.Path.ToString())); - string path = (string)_tableStore.GetValue(treeIter, 8); + string path = (string)_tableStore.GetValue(treeIter, 9); LoadApplication(path); } - private void Load_Application_File(object o, EventArgs args) + private void Load_Application_File(object sender, EventArgs args) { FileChooserDialog fileChooser = new FileChooserDialog("Choose the file to open", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); @@ -448,10 +549,10 @@ namespace Ryujinx.UI LoadApplication(fileChooser.Filename); } - fileChooser.Destroy(); + fileChooser.Dispose(); } - private void Load_Application_Folder(object o, EventArgs args) + private void Load_Application_Folder(object sender, EventArgs args) { FileChooserDialog fileChooser = new FileChooserDialog("Choose the folder to open", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); @@ -460,35 +561,39 @@ namespace Ryujinx.UI LoadApplication(fileChooser.Filename); } - fileChooser.Destroy(); + fileChooser.Dispose(); } - private void Open_Ryu_Folder(object o, EventArgs args) + private void Open_Ryu_Folder(object sender, EventArgs args) { Process.Start(new ProcessStartInfo() { - FileName = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFs"), + FileName = new VirtualFileSystem().GetBasePath(), UseShellExecute = true, Verb = "open" }); } - private void Exit_Pressed(object o, EventArgs args) + private void Exit_Pressed(object sender, EventArgs args) { + _screen?.Exit(); End(); } - private void Window_Close(object o, DeleteEventArgs args) + private void Window_Close(object sender, DeleteEventArgs args) { + _screen?.Exit(); End(); } - private void StopEmulation_Pressed(object o, EventArgs args) + private void StopEmulation_Pressed(object sender, EventArgs args) { // TODO: Write logic to kill running game + + _gameLoaded = false; } - private void FullScreen_Toggled(object o, EventArgs args) + private void FullScreen_Toggled(object sender, EventArgs args) { if (_fullScreen.Active) { @@ -500,19 +605,15 @@ namespace Ryujinx.UI } } - private void Settings_Pressed(object o, EventArgs args) + private void Settings_Pressed(object sender, EventArgs args) { - SwitchSettings SettingsWin = new SwitchSettings(_device); - - _gtkApplication.Register(GLib.Cancellable.Current); - _gtkApplication.AddWindow(SettingsWin); - - SettingsWin.Show(); + SwitchSettings settingsWin = new SwitchSettings(_device); + settingsWin.Show(); } - private void Update_Pressed(object o, EventArgs args) + private void Update_Pressed(object sender, EventArgs args) { - string ryuUpdater = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RyuFS", "RyuUpdater.exe"); + string ryuUpdater = System.IO.Path.Combine(new VirtualFileSystem().GetBasePath(), "RyuUpdater.exe"); try { @@ -520,81 +621,249 @@ namespace Ryujinx.UI } catch(System.ComponentModel.Win32Exception) { - CreateErrorDialog("Update canceled by user or updater was not found"); + GtkDialog.CreateErrorDialog("Update canceled by user or updater was not found"); } } - private void About_Pressed(object o, EventArgs args) + private void About_Pressed(object sender, EventArgs args) { - AboutWindow AboutWin = new AboutWindow(); - - _gtkApplication.Register(GLib.Cancellable.Current); - _gtkApplication.AddWindow(AboutWin); - - AboutWin.Show(); + AboutWindow aboutWin = new AboutWindow(); + aboutWin.Show(); } - private void Icon_Toggled(object o, EventArgs args) + private void Fav_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[0] = _iconToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.FavColumn = _favToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void Title_Toggled(object o, EventArgs args) + private void Icon_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[1] = _titleToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.IconColumn = _iconToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void Developer_Toggled(object o, EventArgs args) + private void Title_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[2] = _developerToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.AppColumn = _appToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void Version_Toggled(object o, EventArgs args) + private void Developer_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[3] = _versionToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.DevColumn = _developerToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void TimePlayed_Toggled(object o, EventArgs args) + private void Version_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[4] = _timePlayedToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.VersionColumn = _versionToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void LastPlayed_Toggled(object o, EventArgs args) + private void TimePlayed_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[5] = _lastPlayedToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.TimePlayedColumn = _timePlayedToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void FileExt_Toggled(object o, EventArgs args) + private void LastPlayed_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[6] = _fileExtToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.LastPlayedColumn = _lastPlayedToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void FileSize_Toggled(object o, EventArgs args) + private void FileExt_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[7] = _fileSizeToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.FileExtColumn = _fileExtToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); } - private void Path_Toggled(object o, EventArgs args) + private void FileSize_Toggled(object sender, EventArgs args) { - SwitchSettings.SwitchConfig.GuiColumns[8] = _pathToggle.Active; + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.FileSizeColumn = _fileSizeToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); + } + + private void Path_Toggled(object sender, EventArgs args) + { + GuiColumns updatedColumns = SwitchSettings.SwitchConfig.GuiColumns; + + updatedColumns.PathColumn = _pathToggle.Active; + SwitchSettings.SwitchConfig.GuiColumns = updatedColumns; + + Configuration.SaveConfig(SwitchSettings.SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + + UpdateColumns(); + } + + private void RefreshList_Pressed(object sender, ButtonReleaseEventArgs args) + { +#pragma warning disable CS4014 + UpdateGameTable(); +#pragma warning restore CS4014 + } + + private static int TimePlayedSort(ITreeModel model, TreeIter a, TreeIter b) + { + string aValue = model.GetValue(a, 5).ToString(); + string bValue = model.GetValue(b, 5).ToString(); + + if (aValue.Length > 4 && aValue.Substring(aValue.Length - 4) == "mins") + { + aValue = (float.Parse(aValue.Substring(0, aValue.Length - 5)) * 60).ToString(); + } + else if (aValue.Length > 3 && aValue.Substring(aValue.Length - 3) == "hrs") + { + aValue = (float.Parse(aValue.Substring(0, aValue.Length - 4)) * 3600).ToString(); + } + else if (aValue.Length > 4 && aValue.Substring(aValue.Length - 4) == "days") + { + aValue = (float.Parse(aValue.Substring(0, aValue.Length - 5)) * 86400).ToString(); + } + else + { + aValue = aValue.Substring(0, aValue.Length - 1); + } + + if (bValue.Length > 4 && bValue.Substring(bValue.Length - 4) == "mins") + { + bValue = (float.Parse(bValue.Substring(0, bValue.Length - 5)) * 60).ToString(); + } + else if (bValue.Length > 3 && bValue.Substring(bValue.Length - 3) == "hrs") + { + bValue = (float.Parse(bValue.Substring(0, bValue.Length - 4)) * 3600).ToString(); + } + else if (bValue.Length > 4 && bValue.Substring(bValue.Length - 4) == "days") + { + bValue = (float.Parse(bValue.Substring(0, bValue.Length - 5)) * 86400).ToString(); + } + else + { + bValue = bValue.Substring(0, bValue.Length - 1); + } + + if (float.Parse(aValue) > float.Parse(bValue)) + { + return -1; + } + else if (float.Parse(bValue) > float.Parse(aValue)) + { + return 1; + } + else + { + return 0; + } + } + + private static int LastPlayedSort(ITreeModel model, TreeIter a, TreeIter b) + { + string aValue = model.GetValue(a, 6).ToString(); + string bValue = model.GetValue(b, 6).ToString(); + + if (aValue == "Never") + { + aValue = DateTime.UnixEpoch.ToString(); + } + + if (bValue == "Never") + { + bValue = DateTime.UnixEpoch.ToString(); + } + + return DateTime.Compare(DateTime.Parse(bValue), DateTime.Parse(aValue)); + } + + private static int FileSizeSort(ITreeModel model, TreeIter a, TreeIter b) + { + string aValue = model.GetValue(a, 8).ToString(); + string bValue = model.GetValue(b, 8).ToString(); + + if (aValue.Substring(aValue.Length - 2) == "GB") + { + aValue = (float.Parse(aValue[0..^2]) * 1024).ToString(); + } + else + { + aValue = aValue[0..^2]; + } + + if (bValue.Substring(bValue.Length - 2) == "GB") + { + bValue = (float.Parse(bValue[0..^2]) * 1024).ToString(); + } + else + { + bValue = bValue[0..^2]; + } + + if (float.Parse(aValue) > float.Parse(bValue)) + { + return -1; + } + else if (float.Parse(bValue) > float.Parse(aValue)) + { + return 1; + } + else + { + return 0; + } } } } diff --git a/Ryujinx/Ui/MainWindow.glade b/Ryujinx/Ui/MainWindow.glade index e12a7b1bb..6d66dc200 100644 --- a/Ryujinx/Ui/MainWindow.glade +++ b/Ryujinx/Ui/MainWindow.glade @@ -126,13 +126,23 @@ True False - Select which GUI columns to enable (restart Ryujinx for these changes to take effect) + Select which GUI columns to enable Enable GUI Columns True True False + + + True + False + Enable or Disable Favorite Games Column in the game list + Enable Favorite Games Column + True + + + True @@ -144,7 +154,7 @@ - + True False Enable or Disable Title Name/ID Column in the game list @@ -303,22 +313,96 @@ - + True - True - in + False + vertical - + True True - False - True - True - - - + in + + + True + True + True + True + + + + + + + True + True + 0 + + + + + True + False + + + True + False + 5 + + + + RefreshList + True + False + gtk-refresh + + + + + False + True + 0 + + + + + True + False + 5 + 5 + 2 + 2 + 0/0 Games Loaded + + + False + True + 1 + + + + + 200 + True + False + start + 5 + 5 + + + True + True + 2 + + + + + False + True + 1 + @@ -327,20 +411,6 @@ 1 - - - 1280 - 720 - True - True - False - - - True - True - 2 - - diff --git a/Ryujinx/Ui/NpadController.cs b/Ryujinx/Ui/NpadController.cs index c0baf9fb4..f72c40755 100644 --- a/Ryujinx/Ui/NpadController.cs +++ b/Ryujinx/Ui/NpadController.cs @@ -3,7 +3,7 @@ using OpenTK.Input; using Ryujinx.HLE.Input; using System; -namespace Ryujinx.UI.Input +namespace Ryujinx.Ui.Input { public enum ControllerInputId { @@ -64,7 +64,6 @@ namespace Ryujinx.UI.Input public struct NpadControllerRight { public ControllerInputId Stick; - public ControllerInputId StickY; public ControllerInputId StickButton; public ControllerInputId ButtonA; public ControllerInputId ButtonB; diff --git a/Ryujinx/Ui/NpadKeyboard.cs b/Ryujinx/Ui/NpadKeyboard.cs index ac739c086..95fb22218 100644 --- a/Ryujinx/Ui/NpadKeyboard.cs +++ b/Ryujinx/Ui/NpadKeyboard.cs @@ -1,7 +1,7 @@ using OpenTK.Input; using Ryujinx.HLE.Input; -namespace Ryujinx.UI.Input +namespace Ryujinx.Ui.Input { public struct NpadKeyboardLeft { diff --git a/Ryujinx/Ui/SwitchSettings.cs b/Ryujinx/Ui/SwitchSettings.cs index 589d9a7d1..955c6b0b6 100644 --- a/Ryujinx/Ui/SwitchSettings.cs +++ b/Ryujinx/Ui/SwitchSettings.cs @@ -1,27 +1,29 @@ using Gtk; -using GUI = Gtk.Builder.ObjectAttribute; using Ryujinx.HLE.HOS.SystemState; using Ryujinx.HLE.Input; -using Ryujinx.UI.Input; +using Ryujinx.Ui.Input; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; -namespace Ryujinx.UI +using GUI = Gtk.Builder.ObjectAttribute; + +namespace Ryujinx.Ui { public class SwitchSettings : Window { internal static Configuration SwitchConfig { get; set; } - internal HLE.Switch Device { get; set; } + private readonly HLE.Switch _device; private static ListStore _gameDirsBoxStore; private static bool _listeningForKeypress; -#pragma warning disable 649 +#pragma warning disable CS0649 +#pragma warning disable IDE0044 [GUI] Window _settingsWin; [GUI] CheckButton _errorLogToggle; [GUI] CheckButton _warningLogToggle; @@ -51,7 +53,7 @@ namespace Ryujinx.UI [GUI] ToggleButton _removeDir; [GUI] Entry _logPath; [GUI] Entry _graphicsShadersDumpPath; - [GUI] Image _controllerImage; + [GUI] Image _controller1Image; [GUI] ComboBoxText _controller1Type; [GUI] ToggleButton _lStickUp1; @@ -78,67 +80,70 @@ namespace Ryujinx.UI [GUI] ToggleButton _plus1; [GUI] ToggleButton _r1; [GUI] ToggleButton _zR1; -#pragma warning restore 649 +#pragma warning restore CS0649 +#pragma warning restore IDE0044 - public static void ConfigureSettings(Configuration Instance) { SwitchConfig = Instance; } + 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); + _device = device; + + _settingsWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.Icon.png"); + _controller1Image.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); + _lStickUp1.Clicked += (sender, args) => Button_Pressed(sender, args, _lStickUp1); + _lStickDown1.Clicked += (sender, args) => Button_Pressed(sender, args, _lStickDown1); + _lStickLeft1.Clicked += (sender, args) => Button_Pressed(sender, args, _lStickLeft1); + _lStickRight1.Clicked += (sender, args) => Button_Pressed(sender, args, _lStickRight1); + _lStickButton1.Clicked += (sender, args) => Button_Pressed(sender, args, _lStickButton1); + _dpadUp1.Clicked += (sender, args) => Button_Pressed(sender, args, _dpadUp1); + _dpadDown1.Clicked += (sender, args) => Button_Pressed(sender, args, _dpadDown1); + _dpadLeft1.Clicked += (sender, args) => Button_Pressed(sender, args, _dpadLeft1); + _dpadRight1.Clicked += (sender, args) => Button_Pressed(sender, args, _dpadRight1); + _minus1.Clicked += (sender, args) => Button_Pressed(sender, args, _minus1); + _l1.Clicked += (sender, args) => Button_Pressed(sender, args, _l1); + _zL1.Clicked += (sender, args) => Button_Pressed(sender, args, _zL1); + _rStickUp1.Clicked += (sender, args) => Button_Pressed(sender, args, _rStickUp1); + _rStickDown1.Clicked += (sender, args) => Button_Pressed(sender, args, _rStickDown1); + _rStickLeft1.Clicked += (sender, args) => Button_Pressed(sender, args, _rStickLeft1); + _rStickRight1.Clicked += (sender, args) => Button_Pressed(sender, args, _rStickRight1); + _rStickButton1.Clicked += (sender, args) => Button_Pressed(sender, args, _rStickButton1); + _a1.Clicked += (sender, args) => Button_Pressed(sender, args, _a1); + _b1.Clicked += (sender, args) => Button_Pressed(sender, args, _b1); + _x1.Clicked += (sender, args) => Button_Pressed(sender, args, _x1); + _y1.Clicked += (sender, args) => Button_Pressed(sender, args, _y1); + _plus1.Clicked += (sender, args) => Button_Pressed(sender, args, _plus1); + _r1.Clicked += (sender, args) => Button_Pressed(sender, args, _r1); + _zR1.Clicked += (sender, args) => Button_Pressed(sender, args, _zR1); + _controller1Type.Changed += (sender, args) => Controller_Changed(sender, args, _controller1Type.ActiveId, _controller1Image); //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.IgnoreMissingServices) { _ignoreToggle.Click(); } - if (SwitchConfig.EnableKeyboard) { _directKeyboardAccess.Click(); } - if (SwitchConfig.EnableCustomTheme) { _custThemeToggle.Click(); } + 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.IgnoreMissingServices) _ignoreToggle.Click(); + if (SwitchConfig.EnableKeyboard) _directKeyboardAccess.Click(); + if (SwitchConfig.EnableCustomTheme) _custThemeToggle.Click(); _systemLanguageSelect.SetActiveId(SwitchConfig.SystemLanguage.ToString()); _controller1Type .SetActiveId(SwitchConfig.ControllerType.ToString()); + Controller_Changed(null, null, _controller1Type.ActiveId, _controller1Image); _lStickUp1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickUp.ToString(); _lStickDown1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickDown.ToString(); @@ -190,7 +195,7 @@ namespace Ryujinx.UI } //Events - private void Button_Pressed(object obj, EventArgs args, ToggleButton Button) + private void Button_Pressed(object sender, EventArgs args, ToggleButton button) { if (_listeningForKeypress == false) { @@ -198,25 +203,25 @@ namespace Ryujinx.UI _listeningForKeypress = true; - void On_KeyPress(object Obj, KeyPressEventArgs KeyPressed) + void On_KeyPress(object o, KeyPressEventArgs keyPressed) { - string key = KeyPressed.Event.Key.ToString(); + 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; + button.Label = capKey; } - else if (GdkToOpenTKInput.ContainsKey(key)) + else if (GdkToOpenTkInput.ContainsKey(key)) { - Button.Label = GdkToOpenTKInput[key]; + button.Label = GdkToOpenTkInput[key]; } else { - Button.Label = "Space"; + button.Label = "Space"; } - Button.SetStateFlags(0, true); + button.SetStateFlags(0, true); KeyPressEvent -= On_KeyPress; @@ -225,11 +230,30 @@ namespace Ryujinx.UI } else { - Button.SetStateFlags(0, true); + button.SetStateFlags(0, true); } } - private void AddDir_Pressed(object obj, EventArgs args) + private void Controller_Changed(object sender, EventArgs args, string controllerType, Image controllerImage) + { + switch (controllerType) + { + case "ProController": + controllerImage.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ProCon.png", 500, 500); + break; + case "NpadLeft": + controllerImage.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.BlueCon.png", 500, 500); + break; + case "NpadRight": + controllerImage.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.RedCon.png", 500, 500); + break; + default: + controllerImage.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.JoyCon.png", 500, 500); + break; + } + } + + private void AddDir_Pressed(object sender, EventArgs args) { if (Directory.Exists(_addGameDirBox.Buffer.Text)) { @@ -239,7 +263,7 @@ namespace Ryujinx.UI _addDir.SetStateFlags(0, true); } - private void BrowseDir_Pressed(object obj, EventArgs args) + private void BrowseDir_Pressed(object sender, EventArgs args) { FileChooserDialog fileChooser = new FileChooserDialog("Choose the game directory to add to the list", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Add", ResponseType.Accept); @@ -248,12 +272,12 @@ namespace Ryujinx.UI _gameDirsBoxStore.AppendValues(fileChooser.Filename); } - fileChooser.Destroy(); + fileChooser.Dispose(); _browseDir.SetStateFlags(0, true); } - private void RemoveDir_Pressed(object obj, EventArgs args) + private void RemoveDir_Pressed(object sender, EventArgs args) { TreeSelection selection = _gameDirsBox.Selection; @@ -263,14 +287,14 @@ namespace Ryujinx.UI _removeDir.SetStateFlags(0, true); } - private void CustThemeToggle_Activated(object obj, EventArgs args) + private void CustThemeToggle_Activated(object sender, EventArgs args) { _custThemePath.Sensitive = _custThemeToggle.Active; _custThemePathLabel.Sensitive = _custThemeToggle.Active; _browseThemePath.Sensitive = _custThemeToggle.Active; } - private void BrowseThemeDir_Pressed(object obj, EventArgs args) + private void BrowseThemeDir_Pressed(object sender, EventArgs args) { FileChooserDialog fileChooser = new FileChooserDialog("Choose the theme to load", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Select", ResponseType.Accept); @@ -282,12 +306,12 @@ namespace Ryujinx.UI _custThemePath.Buffer.Text = fileChooser.Filename; } - fileChooser.Destroy(); + fileChooser.Dispose(); _browseThemePath.SetStateFlags(0, true); } - private void SaveToggle_Activated(object obj, EventArgs args) + private void SaveToggle_Activated(object sender, EventArgs args) { List gameDirs = new List(); @@ -358,20 +382,21 @@ namespace Ryujinx.UI SwitchConfig.FsGlobalAccessLogMode = (int)_fsLogSpinAdjustment.Value; Configuration.SaveConfig(SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); - Configuration.Configure(Device, SwitchConfig); + Configuration.Configure(_device, SwitchConfig); MainWindow.ApplyTheme(); +#pragma warning disable CS4014 MainWindow.UpdateGameTable(); - - Destroy(); +#pragma warning restore CS4014 + Dispose(); } - private void CloseToggle_Activated(object obj, EventArgs args) + private void CloseToggle_Activated(object sender, EventArgs args) { - Destroy(); + Dispose(); } - public readonly Dictionary GdkToOpenTKInput = new Dictionary() + public readonly Dictionary GdkToOpenTkInput = new Dictionary() { { "Key_0", "Number0" }, { "Key_1", "Number1" }, diff --git a/Ryujinx/Ui/SwitchSettings.glade b/Ryujinx/Ui/SwitchSettings.glade index 74141a2b9..cd00625c4 100644 --- a/Ryujinx/Ui/SwitchSettings.glade +++ b/Ryujinx/Ui/SwitchSettings.glade @@ -139,6 +139,7 @@ True False Change System Language + 5 American English British English @@ -174,7 +175,7 @@ - Enable Discord Integration + Enable Discord Rich Presence True True False @@ -512,7 +513,7 @@ - + True False vertical @@ -521,7 +522,7 @@ True False 5 - 10 + 5 Enable Docked Mode @@ -563,636 +564,66 @@ - + True - True + False + + + False + True + 1 + + + + + True + False + 10 + 10 + 5 True False - 5 - 5 - 5 - 5 + vertical 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 - - + The primary controller's type + center + 5 + 5 + Controller Type: False True - 10 + 0 + + + + + True + False + The primary controller's type + 5 + 0 + + Handheld + Pro Controller + Paired Joycons + Left Joycon + Right Joycon + + + + True + True 1 @@ -1200,179 +631,592 @@ False True + 10 0 - + True False - 5 + 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 + + - True + False True + 10 1 - - - - True - False - Controller 1 - - False + False + True + 0 - + True False - Multiple controllers are not yet supported + True + True 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 diff --git a/Ryujinx/Ui/assets/BlueCon.png b/Ryujinx/Ui/assets/BlueCon.png new file mode 100644 index 0000000000000000000000000000000000000000..25691957eb95c51227ab77ecd2a89f345b4e829f GIT binary patch literal 164842 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 z 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 D<@^PY literal 0 HcmV?d00001 diff --git a/Ryujinx/Ui/assets/DiscordLogo.png b/Ryujinx/Ui/assets/DiscordLogo.png index 85c46fd8d3309470db37473778e1452102dd31fa..f3486b99c91c081b1498e199923c7897a8032426 100644 GIT binary patch delta 12098 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 pfy0k^gnBRC`tYN?`_n)E&r?73|78FG diff --git a/Ryujinx/Ui/assets/GitHubLogo.png b/Ryujinx/Ui/assets/GitHubLogo.png index 192846a12085914cc0e38d9b48036b11d2a4d7c4..2e860709ed0181c386040e0eb51be48a094dcd28 100644 GIT binary patch delta 26546 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

;n`WH*%#;8R&U$)^V#g=1-&da2j;Q7 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 delta 3588 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 diff --git a/Ryujinx/Ui/assets/ryujinxIcon.png b/Ryujinx/Ui/assets/Icon.png similarity index 100% rename from Ryujinx/Ui/assets/ryujinxIcon.png rename to Ryujinx/Ui/assets/Icon.png diff --git a/Ryujinx/Ui/assets/JoyCon.png b/Ryujinx/Ui/assets/JoyCon.png index ec8a8f993cccadfd1ca5c4cbac1b8d990835cc3e..ec7458637669e084c9041fbe87afaa8b0ae486f7 100644 GIT binary patch literal 331451 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