diff --git a/README.md b/README.md index 217590d..a59fa7b 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,64 @@ # MSFX + Fork of [the MSFX Firefox userChrome](https://github.com/WinClassic/MSFX). ![Screenshot of MSFX](.assets/screenshot.png) ## Changes -* Uses normal [firefox-scripts](https://github.com/xiaoxiaoflood/firefox-scripts) instead of a stripped down version for greater userscript compatibility -* More accurate styles in some places - * Bookmarks bar folder menus - * All tabs button - * Replaced with overflow arrows icon - * Scrollbars forced to light theme - * Selected address bar forced to light theme - * Resize grabber no longer appears when maximized - * Autoplay Pending indicator icon replaced -* Pinned tabs no longer have extra padding -* Internet status bar widget is its own component - * Empty boxes have been removed in favor of putting extensions on the status bar -* Address bar is no longer forced to the Address toolbar when opening a new window + +- Uses normal [firefox-scripts](https://github.com/xiaoxiaoflood/firefox-scripts) instead of a stripped down version for greater userscript compatibility + - Fixed up for 117+ and now bundled with again, as the upstream repo's maintainer is MIA. +- More accurate styles in some places + - Bookmarks bar folder menus + - All tabs button + - Replaced with overflow arrows icon + - Scrollbars forced to light theme + - Selected address bar forced to light theme + - Resize grabber no longer appears when maximized + - Autoplay Pending indicator icon replaced + - Accurate menus (117+) + - Unlocked toolbar style has proper bottom resizer (visual only) + - Properly styled address bar dropdown + - Proper hover/active states for menu bar items + - Scrollbar dithering +- Internet status bar widget is its own component + - Empty boxes have been removed in favor of putting extensions on the status bar +- Address bar is no longer forced to the Address toolbar (configurable, enabled by default) +- Works with Firefox 117+ (fixes developed for on 122.0b3) + - A lot of legacy styling was removed to where the `appearance` property does nothing, everything that used this to achieve the classic style has been accurately recreated as best as possible. + +## What's missing? + +- The stock extensions menu, the main menu and the overflow tabs menu are not styled, as I do not personally use them. +- More configuration options probably. There might've been some things I commented out for my own liking that you may not agree with in terms of accuracy to IE5. +- Default favicons for bookmark items, as these cannot be changed in pure CSS. (needs investigation) +- Extension button tooltips don't seem to be standard tooltips. + +## Known issues + +- Opening "Customize Toolbar" resets the access key for the Favorites (bookmarks) menu item back to "B", resulting in "Favorites (B)" + +## What can be improved? + +- Stop using base64 URLs everywhere. +- More configuration. +- [Nested rulesets](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_nesting), since Firefox itself uses them everywhere. (117+) + - Some of the 117+ fixes have been using them (e.g. context menus) +- Multiple files. ## Installation -* Set the following keys in `about:config`: - * `svg.context-properties.content.enabled` to `true` - * `ui.prefersReducedMotion` to `1` - * `browser.display.windows.non_native_menus` to `0` -* Follow [firefox-scripts](https://github.com/xiaoxiaoflood/firefox-scripts) installation. -* Install [Status Bar userscript](https://raw.githubusercontent.com/xiaoxiaoflood/firefox-scripts/master/chrome/status-bar.uc.js). -* Merge `chrome` folder from the repo into your profile's `chrome` folder. + +- Set the following keys in `about:config`: + - `toolkit.legacyUserProfileCustomizations.stylesheets` to `true` + - `svg.context-properties.content.enabled` to `true` + - `ui.prefersReducedMotion` to `1` + - ~~`browser.display.windows.non_native_menus` to `0`~~ (removed in 117+) +- Copy the contents of `ffroot` into your Firefox install folder (typically `C:\Program Files\Mozilla Firefox`) + - There is an extra set of folders added (`browser\chrome\icons\default`) to change the main window icon. The default is the IE5 page icon, but the 2001-2003 Mozilla icon is included as well, just needs to be renamed from `_main-window.ico` to `main-window.ico`. +- Merge `chrome` folder from the repo into your profile's `chrome` folder. (path can be found via `about:profiles` or `about:support`) ## Recommendations -* [Extensions Options Menu](https://raw.githubusercontent.com/xiaoxiaoflood/firefox-scripts/master/chrome/extensionOptionsMenu.uc.js) - * More lightweight than the stock extensions menu, which is disabled by the theme anyways -* [userChromeJS Manager](https://raw.githubusercontent.com/xiaoxiaoflood/firefox-scripts/master/chrome/rebuild_userChrome.uc.js) -* [Save File to](https://raw.githubusercontent.com/xiaoxiaoflood/firefox-scripts/master/extensions/savefileto/savefileto.xpi) - * **Requires extensions support in firefox-scripts** - * "Replaces" save dialog for hybrid classic theme setup with Windhawk until investigation is done to fix the save dialog on classic enabled programs. + +- [Extensions Options Menu](https://raw.githubusercontent.com/xiaoxiaoflood/firefox-scripts/master/chrome/extensionOptionsMenu.uc.js) + - More lightweight than the stock extensions menu, which is "hidden" by the theme anyways +- [userChromeJS Manager](https://raw.githubusercontent.com/xiaoxiaoflood/firefox-scripts/master/chrome/rebuild_userChrome.uc.js) diff --git a/chrome/activity_throbber.uc.js b/chrome/activity_throbber.uc.js index b540e5c..644ae77 100644 --- a/chrome/activity_throbber.uc.js +++ b/chrome/activity_throbber.uc.js @@ -1,52 +1,53 @@ // 'Activity throbber' script for Firefox 60+ by Aris +(function () { + Components.utils.import("resource:///modules/CustomizableUI.jsm"); + var Services = + globalThis.Services || + ChromeUtils.import("resource://gre/modules/Services.jsm").Services; + var sss = Components.classes[ + "@mozilla.org/content/style-sheet-service;1" + ].getService(Components.interfaces.nsIStyleSheetService); -Components.utils.import("resource:///modules/CustomizableUI.jsm"); -var { Services } = Components.utils.import( - "resource://gre/modules/Services.jsm", - {} -); -var sss = Components.classes[ - "@mozilla.org/content/style-sheet-service;1" -].getService(Components.interfaces.nsIStyleSheetService); + var at_label = "Activity Throbber"; -var at_label = "Activity Throbber"; + var ActivityThrobber = { + init: function () { + try { + document.addEventListener("TabAttrModified", _ActivityThrobber, false); + document.addEventListener("TabSelect", _ActivityThrobber, false); + document.addEventListener("TabOpen", _ActivityThrobber, false); + document.addEventListener("TabClose", _ActivityThrobber, false); + document.addEventListener("load", _ActivityThrobber, false); -var ActivityThrobber = { - init: function () { - try { - document.addEventListener("TabAttrModified", _ActivityThrobber, false); - document.addEventListener("TabSelect", _ActivityThrobber, false); - document.addEventListener("TabOpen", _ActivityThrobber, false); - document.addEventListener("TabClose", _ActivityThrobber, false); - document.addEventListener("load", _ActivityThrobber, false); + // add or remove 'busy' tab from activity item + function _ActivityThrobber() { + if (gBrowser.selectedTab.hasAttribute("busy")) { + document + .querySelector("#activity_throbber") + .setAttribute("busy", "true"); + } else + document + .querySelector("#activity_throbber") + .removeAttribute("busy"); + } - // add or remove 'busy' tab from activity item - function _ActivityThrobber() { - if (gBrowser.selectedTab.hasAttribute("busy")) { - document - .querySelector("#activity_throbber") - .setAttribute("busy", "true"); - } else - document.querySelector("#activity_throbber").removeAttribute("busy"); - } + // create a default toolbar button + CustomizableUI.createWidget({ + id: "activity_throbber", // button id + defaultArea: CustomizableUI.AREA_NAVBAR, + removable: true, + label: at_label, // button title + tooltiptext: at_label, // tooltip title + onCreated: function (button) { + return button; + }, + }); - // create a default toolbar button - CustomizableUI.createWidget({ - id: "activity_throbber", // button id - defaultArea: CustomizableUI.AREA_NAVBAR, - removable: true, - label: at_label, // button title - tooltiptext: at_label, // tooltip title - onCreated: function (button) { - return button; - }, - }); - - // style button icon / embedded non-animated icon, because there is no image for then inside Fx anymore - var uri = Services.io.newURI( - "data:text/css;charset=utf-8," + - encodeURIComponent( - `#activity_throbber { + // style button icon / embedded non-animated icon, because there is no image for then inside Fx anymore + var uri = Services.io.newURI( + "data:text/css;charset=utf-8," + + encodeURIComponent( + `#activity_throbber { -moz-appearance: none !important; list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJ1BMVEUAAAC0tLS0tLSysrK0tLS0tLS0tLS1tbW0tLS6urq0tLS3t7eurq4SF2bYAAAADXRSTlMA2oILm3RnVEEF0y4TZ0HrPwAAAE5JREFUCNdjAAIjZQYISBQDU1uUA0WNvIEMR/FDOoUiQIbiCgaGLiEgY3oDAwNHJQPDtGCQQtNMBkWQKJCEM+BSMMVw7XAD4VYgLIU7AwA5fBJ3rMaMkwAAAABJRU5ErkJggg==); width: 16px !important; @@ -63,20 +64,21 @@ var ActivityThrobber = { list-style-image: url("chrome://global/skin/media/throbber.png"); } ` - ), - null, - null - ); + ), + null, + null + ); - // remove old style sheet, before registering the new one - if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) { - sss.unregisterSheet(uri, sss.AGENT_SHEET); + // remove old style sheet, before registering the new one + if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) { + sss.unregisterSheet(uri, sss.AGENT_SHEET); + } + sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); + } catch (e) { + Components.utils.reportError(e); } - sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); - } catch (e) { - Components.utils.reportError(e); - } - }, -}; + }, + }; -document.addEventListener("DOMContentLoaded", ActivityThrobber.init(), false); + document.addEventListener("DOMContentLoaded", ActivityThrobber.init(), false); +})(); diff --git a/chrome/additional_top_toolbars.uc.js b/chrome/additional_top_toolbars.uc.js index 5440047..8557e12 100644 --- a/chrome/additional_top_toolbars.uc.js +++ b/chrome/additional_top_toolbars.uc.js @@ -7,212 +7,223 @@ // // workaround on Fx 71 to save/restore toolbar visibility // creating an observer array always fails, so observers are created manually atm. +(function () { + Components.utils.import("resource:///modules/CustomizableUI.jsm"); + var Services = + globalThis.Services || + ChromeUtils.import("resource://gre/modules/Services.jsm").Services; + var appversion = parseInt(Services.appinfo.version); -Components.utils.import("resource:///modules/CustomizableUI.jsm"); -var { Services } = Components.utils.import( - "resource://gre/modules/Services.jsm", - {} -); -var appversion = parseInt(Services.appinfo.version); + var AdditionalTopToolbars = { + init: function () { + /* blank tab workaround */ + try { + if (gBrowser.selectedBrowser.getAttribute("blank")) + gBrowser.selectedBrowser.removeAttribute("blank"); + } catch (e) {} -var AdditionalTopToolbars = { - init: function () { - /* blank tab workaround */ - try { - if (gBrowser.selectedBrowser.getAttribute("blank")) - gBrowser.selectedBrowser.removeAttribute("blank"); - } catch (e) {} + var number_of_additional_top_toolbars = 1; // max 5 to save toolbar state on Fx 71+ (add additional code at the bottom for more) + var tb_label = "Address"; - var number_of_additional_top_toolbars = 1; // max 5 to save toolbar state on Fx 71+ (add additional code at the bottom for more) - var tb_label = "Address"; + try { + if (document.getElementById("additional_top_toolbar1") == null) { + if ( + number_of_additional_top_toolbars > 0 && + number_of_additional_top_toolbars < 6 + ) { + var i = 1; - try { - if (document.getElementById("additional_top_toolbar1") == null) { - if ( - number_of_additional_top_toolbars > 0 && - number_of_additional_top_toolbars < 6 - ) { - var i = 1; + while (i <= number_of_additional_top_toolbars) { + if (appversion <= 62) + var toptoolbar = document.createElement("toolbar"); + else var toptoolbar = document.createXULElement("toolbar"); - while (i <= number_of_additional_top_toolbars) { - if (appversion <= 62) - var toptoolbar = document.createElement("toolbar"); - else var toptoolbar = document.createXULElement("toolbar"); - - toptoolbar.setAttribute("id", "additional_top_toolbar" + i + ""); - toptoolbar.setAttribute("toolbarname", tb_label + ""); - toptoolbar.setAttribute("toolbarname", tb_label + ""); - toptoolbar.setAttribute("customizable", "true"); - toptoolbar.setAttribute( - "class", - "toolbar-primary chromeclass-toolbar browser-toolbar customization-target" - ); - toptoolbar.setAttribute("mode", "icons"); - toptoolbar.setAttribute("iconsize", "small"); - toptoolbar.setAttribute("toolboxid", "navigator-toolbox"); - toptoolbar.setAttribute("context", "toolbar-context-menu"); - toptoolbar.setAttribute("lockiconsize", "true"); - toptoolbar.setAttribute("defaultset", "spring"); - - document - .querySelector("#navigator-toolbox") - .appendChild(toptoolbar); - - CustomizableUI.registerArea("additional_top_toolbar" + i + "", { - legacy: true, - }); - if (appversion >= 65) - CustomizableUI.registerToolbarNode(toptoolbar); - - // top toolbars 'collapsed' on startup - //setToolbarVisibility(toptoolbar, false); - - try { - Services.prefs - .getDefaultBranch("browser.additional_top_toolbar" + i + ".") - .setBoolPref("enabled", true); - setToolbarVisibility( - document.getElementById("additional_top_toolbar" + i + ""), - Services.prefs - .getBranch("browser.additional_top_toolbar" + i + ".") - .getBoolPref("enabled") + toptoolbar.setAttribute("id", "additional_top_toolbar" + i + ""); + toptoolbar.setAttribute("toolbarname", tb_label + ""); + toptoolbar.setAttribute("toolbarname", tb_label + ""); + toptoolbar.setAttribute("customizable", "true"); + toptoolbar.setAttribute( + "class", + "toolbar-primary chromeclass-toolbar browser-toolbar customization-target" ); - } catch (e) {} + toptoolbar.setAttribute("mode", "icons"); + toptoolbar.setAttribute("iconsize", "small"); + toptoolbar.setAttribute("toolboxid", "navigator-toolbox"); + toptoolbar.setAttribute("context", "toolbar-context-menu"); + toptoolbar.setAttribute("lockiconsize", "true"); + toptoolbar.setAttribute("defaultset", "spring"); - i++; + document + .querySelector("#navigator-toolbox") + .appendChild(toptoolbar); + + CustomizableUI.registerArea("additional_top_toolbar" + i + "", { + legacy: true, + }); + if (appversion >= 65) + CustomizableUI.registerToolbarNode(toptoolbar); + + // top toolbars 'collapsed' on startup + //setToolbarVisibility(toptoolbar, false); + + try { + Services.prefs + .getDefaultBranch("browser.additional_top_toolbar" + i + ".") + .setBoolPref("enabled", true); + setToolbarVisibility( + document.getElementById("additional_top_toolbar" + i + ""), + Services.prefs + .getBranch("browser.additional_top_toolbar" + i + ".") + .getBoolPref("enabled") + ); + } catch (e) {} + + i++; + } } + + // CSS + var sss = Components.classes[ + "@mozilla.org/content/style-sheet-service;1" + ].getService(Components.interfaces.nsIStyleSheetService); + + var uri = Services.io.newURI( + "data:text/css;charset=utf-8," + + encodeURIComponent( + `toolbar[id^="additional_top_toolbar"] { + -moz-appearance: none !important; + background-color: var(--toolbar-bgcolor); + background-image: var(--toolbar-bgimage); + background-clip: padding-box; + color: var(--toolbar-color, inherit); +} +#main-window[customizing] toolbar[id^="additional_top_toolbar"] { + outline: 1px dashed !important; + outline-offset: -2px !important; +}` + ), + null, + null + ); + + sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); } - // CSS - var sss = Components.classes[ - "@mozilla.org/content/style-sheet-service;1" - ].getService(Components.interfaces.nsIStyleSheetService); - - var uri = Services.io.newURI( - "data:text/css;charset=utf-8," + - encodeURIComponent( - '\ - \ - toolbar[id^="additional_top_toolbar"] { \ - -moz-appearance: none !important; \ - background-color: var(--toolbar-bgcolor); \ - background-image: var(--toolbar-bgimage); \ - background-clip: padding-box; \ - color: var(--toolbar-color, inherit); \ - } \ - #main-window[customizing] toolbar[id^="additional_top_toolbar"] { \ - outline: 1px dashed !important; \ - outline-offset: -2px !important; \ - } \ - \ - ' - ), - null, - null - ); - - sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); - } - - if (number_of_additional_top_toolbars >= 1) { - var observer1 = new MutationObserver(function (mutations) { - mutations.forEach(function (mutation) { - Services.prefs - .getBranch("browser.additional_top_toolbar1.") - .setBoolPref( - "enabled", - !document.querySelector("#additional_top_toolbar1").collapsed - ); + if (number_of_additional_top_toolbars >= 1) { + var observer1 = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + Services.prefs + .getBranch("browser.additional_top_toolbar1.") + .setBoolPref( + "enabled", + !document.querySelector("#additional_top_toolbar1").collapsed + ); + }); }); - }); - observer1.observe(document.querySelector("#additional_top_toolbar1"), { - attributes: true, - childList: true, - characterData: true, - }); - } - if (number_of_additional_top_toolbars >= 2) { - var observer2 = new MutationObserver(function (mutations) { - mutations.forEach(function (mutation) { - Services.prefs - .getBranch("browser.additional_top_toolbar2.") - .setBoolPref( - "enabled", - !document.querySelector("#additional_top_toolbar2").collapsed - ); + observer1.observe( + document.querySelector("#additional_top_toolbar1"), + { + attributes: true, + childList: true, + characterData: true, + } + ); + } + if (number_of_additional_top_toolbars >= 2) { + var observer2 = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + Services.prefs + .getBranch("browser.additional_top_toolbar2.") + .setBoolPref( + "enabled", + !document.querySelector("#additional_top_toolbar2").collapsed + ); + }); }); - }); - observer2.observe(document.querySelector("#additional_top_toolbar2"), { - attributes: true, - childList: true, - characterData: true, - }); - } - if (number_of_additional_top_toolbars >= 3) { - var observer3 = new MutationObserver(function (mutations) { - mutations.forEach(function (mutation) { - Services.prefs - .getBranch("browser.additional_top_toolbar3.") - .setBoolPref( - "enabled", - !document.querySelector("#additional_top_toolbar3").collapsed - ); + observer2.observe( + document.querySelector("#additional_top_toolbar2"), + { + attributes: true, + childList: true, + characterData: true, + } + ); + } + if (number_of_additional_top_toolbars >= 3) { + var observer3 = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + Services.prefs + .getBranch("browser.additional_top_toolbar3.") + .setBoolPref( + "enabled", + !document.querySelector("#additional_top_toolbar3").collapsed + ); + }); }); - }); - observer3.observe(document.querySelector("#additional_top_toolbar3"), { - attributes: true, - childList: true, - characterData: true, - }); - } - if (number_of_additional_top_toolbars >= 4) { - var observer4 = new MutationObserver(function (mutations) { - mutations.forEach(function (mutation) { - Services.prefs - .getBranch("browser.additional_top_toolbar4.") - .setBoolPref( - "enabled", - !document.querySelector("#additional_top_toolbar4").collapsed - ); + observer3.observe( + document.querySelector("#additional_top_toolbar3"), + { + attributes: true, + childList: true, + characterData: true, + } + ); + } + if (number_of_additional_top_toolbars >= 4) { + var observer4 = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + Services.prefs + .getBranch("browser.additional_top_toolbar4.") + .setBoolPref( + "enabled", + !document.querySelector("#additional_top_toolbar4").collapsed + ); + }); }); - }); - observer4.observe(document.querySelector("#additional_top_toolbar4"), { - attributes: true, - childList: true, - characterData: true, - }); - } - if (number_of_additional_top_toolbars >= 5) { - var observer5 = new MutationObserver(function (mutations) { - mutations.forEach(function (mutation) { - Services.prefs - .getBranch("browser.additional_top_toolbar5.") - .setBoolPref( - "enabled", - !document.querySelector("#additional_top_toolbar5").collapsed - ); + observer4.observe( + document.querySelector("#additional_top_toolbar4"), + { + attributes: true, + childList: true, + characterData: true, + } + ); + } + if (number_of_additional_top_toolbars >= 5) { + var observer5 = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + Services.prefs + .getBranch("browser.additional_top_toolbar5.") + .setBoolPref( + "enabled", + !document.querySelector("#additional_top_toolbar5").collapsed + ); + }); }); - }); - observer5.observe(document.querySelector("#additional_top_toolbar5"), { - attributes: true, - childList: true, - characterData: true, - }); - } - } catch (e) {} - }, -}; + observer5.observe( + document.querySelector("#additional_top_toolbar5"), + { + attributes: true, + childList: true, + characterData: true, + } + ); + } + } catch (e) {} + }, + }; -/* initialization delay workaround */ -document.addEventListener( - "DOMContentLoaded", - AdditionalTopToolbars.init(), - false -); + /* initialization delay workaround */ + document.addEventListener( + "DOMContentLoaded", + AdditionalTopToolbars.init(), + false + ); -// not needed anymore, but just in case someone prefers initialization that way -/* + // not needed anymore, but just in case someone prefers initialization that way + /* setTimeout(function(){ AdditionalTopToolbars.init(); },500); */ +})(); diff --git a/chrome/change-toolbar-icon-values.uc.js b/chrome/change-toolbar-icon-values.uc.js index 25c6439..69cedf9 100644 --- a/chrome/change-toolbar-icon-values.uc.js +++ b/chrome/change-toolbar-icon-values.uc.js @@ -1,42 +1,52 @@ -function waitForElm(selector) { - return new Promise(resolve => { +(function () { + function waitForElm(selector) { + return new Promise((resolve) => { + if (document.querySelector(selector)) { + return resolve(document.querySelector(selector)); + } + + const observer = new MutationObserver((mutations) => { if (document.querySelector(selector)) { - return resolve(document.querySelector(selector)); + resolve(document.querySelector(selector)); + observer.disconnect(); } + }); - const observer = new MutationObserver(mutations => { - if (document.querySelector(selector)) { - resolve(document.querySelector(selector)); - observer.disconnect(); - } - }); - - observer.observe(document.body, { - childList: true, - subtree: true - }); + observer.observe(document.body, { + childList: true, + subtree: true, + }); }); -} + } -waitForElm('#find-button').then((elm) => { - var find = document.querySelector("#find-button label.toolbarbutton-text"); - find.setAttribute("value", "Search"); -}); + waitForElm("#find-button").then((elm) => { + var find = document.querySelector("#find-button label.toolbarbutton-text"); + if (find) + find.setAttribute("value", "Search"); + }); -setTimeout(function () { - waitForElm('#nav-bar').then((elm) => { - var library = document.querySelector("#bookmarks-menu-button label.toolbarbutton-text"); - library.setAttribute("value", "Favorites"); - }); -}, 0); + setTimeout(function () { + waitForElm("#nav-bar").then((elm) => { + var library = document.querySelector( + "#bookmarks-menu-button label.toolbarbutton-text" + ); + if (library) + library.setAttribute("value", "Favorites"); + }); + }, 0); -waitForElm('#bookmarksMenu').then((elm) => { - var bookmarksmenu = document.querySelector("#bookmarksMenu label.menubar-text"); - bookmarksmenu.setAttribute("value", "Favorites"); - bookmarksmenu.setAttribute("accesskey", "a"); -}); + waitForElm("#bookmarksMenu").then((elm) => { + var bookmarksmenu = document.querySelector( + "#bookmarksMenu label.menubar-text" + ); + if (bookmarksmenu) + bookmarksmenu.setAttribute("value", "Favorites"); + //bookmarksmenu.setAttribute("accesskey", "a"); + }); -waitForElm('#bookmarksMenu').then((elm) => { - var bookmarksmenu = document.querySelector("#bookmarksMenu"); - bookmarksmenu.setAttribute("accesskey", "a"); -}); \ No newline at end of file + waitForElm("#bookmarksMenu").then((elm) => { + var bookmarksmenu = document.querySelector("#bookmarksMenu"); + if (bookmarksmenu) + bookmarksmenu.removeAttribute("accesskey"); + }); +})(); diff --git a/chrome/create_internet_on_status_bar.uc.js b/chrome/create_internet_on_status_bar.uc.js index c6865f3..20267f6 100644 --- a/chrome/create_internet_on_status_bar.uc.js +++ b/chrome/create_internet_on_status_bar.uc.js @@ -1,32 +1,32 @@ -Components.utils.import("resource:///modules/CustomizableUI.jsm"); -var { Services } = Components.utils.import( - "resource://gre/modules/Services.jsm", - {} -); -var sss = Components.classes[ - "@mozilla.org/content/style-sheet-service;1" -].getService(Components.interfaces.nsIStyleSheetService); +(function () { + Components.utils.import("resource:///modules/CustomizableUI.jsm"); + var Services = + globalThis.Services || + ChromeUtils.import("resource://gre/modules/Services.jsm").Services; + var sss = Components.classes[ + "@mozilla.org/content/style-sheet-service;1" + ].getService(Components.interfaces.nsIStyleSheetService); -var IE6StatusBar = { - init: function () { - try { - // create a default toolbar button - CustomizableUI.createWidget({ - id: "ie6_statusbar", // button id - defaultArea: CustomizableUI.AREA_NAVBAR, - removable: true, - label: "Internet", // button title - tooltiptext: "", // tooltip title - onCreated: function (button) { - return button; - }, - }); + var IE6StatusBar = { + init: function () { + try { + // create a default toolbar button + CustomizableUI.createWidget({ + id: "ie6_statusbar", // button id + defaultArea: CustomizableUI.AREA_NAVBAR, + removable: true, + label: "Internet", // button title + tooltiptext: "", // tooltip title + onCreated: function (button) { + return button; + }, + }); - // style button icon / embedded non-animated icon, because there is no image for then inside Fx anymore - var uri = Services.io.newURI( - "data:text/css;charset=utf-8," + - encodeURIComponent( - `#ie6_statusbar { + // style button icon / embedded non-animated icon, because there is no image for then inside Fx anymore + var uri = Services.io.newURI( + "data:text/css;charset=utf-8," + + encodeURIComponent( + `#ie6_statusbar { display: flex; width: 151px; height: 18px; @@ -51,20 +51,21 @@ var IE6StatusBar = { #ie6_statusbar > .toolbarbutton-icon { display: none; }` - ), - null, - null - ); + ), + null, + null + ); - // remove old style sheet, before registering the new one - if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) { - sss.unregisterSheet(uri, sss.AGENT_SHEET); + // remove old style sheet, before registering the new one + if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) { + sss.unregisterSheet(uri, sss.AGENT_SHEET); + } + sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); + } catch (e) { + Components.utils.reportError(e); } - sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); - } catch (e) { - Components.utils.reportError(e); - } - }, -}; + }, + }; -document.addEventListener("DOMContentLoaded", IE6StatusBar.init(), false); + document.addEventListener("DOMContentLoaded", IE6StatusBar.init(), false); +})(); diff --git a/chrome/go_button.uc.js b/chrome/go_button.uc.js index ecd6ad1..4a3e0bd 100644 --- a/chrome/go_button.uc.js +++ b/chrome/go_button.uc.js @@ -1,10 +1,9 @@ (function () { try { Components.utils.import("resource:///modules/CustomizableUI.jsm"); - var { Services } = Components.utils.import( - "resource://gre/modules/Services.jsm", - {} - ); + var Services = + globalThis.Services || + ChromeUtils.import("resource://gre/modules/Services.jsm").Services; var sss = Components.classes[ "@mozilla.org/content/style-sheet-service;1" ].getService(Components.interfaces.nsIStyleSheetService); diff --git a/chrome/move_bars.uc.js b/chrome/move_bars.uc.js index 178877f..a73bfa0 100644 --- a/chrome/move_bars.uc.js +++ b/chrome/move_bars.uc.js @@ -2,82 +2,114 @@ // option: place urlbar on a different toolbar // option: place back button on a different toolbar // option: place back button on a different toolbar +(function () { + var {CustomizableUI} = Components.utils.import( + "resource:///modules/CustomizableUI.jsm", + {} + ); -var { CustomizableUI } = Components.utils.import( - "resource:///modules/CustomizableUI.jsm", - {} -); + var navigation = CustomizableUI.AREA_NAVBAR; + var tabs = CustomizableUI.AREA_TABSTRIP; + var menu = CustomizableUI.AREA_MENUBAR; + var bookmarks = CustomizableUI.AREA_BOOKMARKS; -var navigation = CustomizableUI.AREA_NAVBAR; -var tabs = CustomizableUI.AREA_TABSTRIP; -var menu = CustomizableUI.AREA_MENUBAR; -var bookmarks = CustomizableUI.AREA_BOOKMARKS; + /* [target toolbar of item] + menu = 'menubar' + tabs = 'tabs toolbar' + bookmarks = 'bookmarks toolbar' + navigation='navigation toolbar' */ + var backbutton_on_toolbar = navigation; + var forwardbutton_on_toolbar = navigation; + var urlbar_on_toolbar = navigation; -/* [target toolbar of item] - menu = 'menubar' - tabs = 'tabs toolbar' - bookmarks = 'bookmarks toolbar' - navigation='navigation toolbar' */ -var backbutton_on_toolbar = navigation; -var forwardbutton_on_toolbar = navigation; -var urlbar_on_toolbar = navigation; + /* [target position of item] + 0 = 1st + 1 = 2nd + 2 = 3rd + ... + x = xth */ + var backbutton_on_toolbar_position = 0; + var forwardbutton_on_toolbar_position = 1; + var urlbar_on_toolbar_position = 0; -/* [target position of item] - 0 = 1st - 1 = 2nd - 2 = 3rd - ... - x = xth */ -var backbutton_on_toolbar_position = 0; -var forwardbutton_on_toolbar_position = 1; -var urlbar_on_toolbar_position = 0; + const separateAddressBar = true; + const moveNavigation = true; + const bottomTabs = true; + const menuToTop = true; -var MoveUrlbar = { - init: function () { - try { - document.getElementById("back-button").setAttribute("removable", "true"); - document - .getElementById("forward-button") - .setAttribute("removable", "true"); - document - .getElementById("urlbar-container") - .setAttribute("removable", "true"); - document - .getElementById("additional_top_toolbar1") - .setAttribute("fullscreentoolbar", "true"); - } catch (e) {} + var MoveUrlbar = { + init: function () { + try { + document + .getElementById("back-button") + .setAttribute("removable", "true"); + document + .getElementById("forward-button") + .setAttribute("removable", "true"); + document + .getElementById("urlbar-container") + .setAttribute("removable", "true"); + document + .getElementById("unified-extensions-button") + .setAttribute("removable", "true"); + } catch (e) {} - /*CustomizableUI.addWidgetToArea("back-button", backbutton_on_toolbar); - CustomizableUI.moveWidgetWithinArea( - "back-button", - backbutton_on_toolbar_position - ); - CustomizableUI.addWidgetToArea("forward-button", forwardbutton_on_toolbar); - CustomizableUI.moveWidgetWithinArea( - "forward-button", - forwardbutton_on_toolbar_position - ); - CustomizableUI.addWidgetToArea( - "urlbar-container", - "additional_top_toolbar1" - ); - CustomizableUI.moveWidgetWithinArea( - "urlbar-container", - urlbar_on_toolbar_position - );*/ + // Forces back/forward to navigation bar + if (moveNavigation) { + CustomizableUI.addWidgetToArea("back-button", backbutton_on_toolbar); + CustomizableUI.moveWidgetWithinArea( + "back-button", + backbutton_on_toolbar_position + ); + CustomizableUI.addWidgetToArea( + "forward-button", + forwardbutton_on_toolbar + ); + CustomizableUI.moveWidgetWithinArea( + "forward-button", + forwardbutton_on_toolbar_position + ); + } - document - .getElementById("navigator-toolbox") - .appendChild(document.getElementById("TabsToolbar")); + // Forces address bar to additional_top_toolbar1 (Address) + // THIS WILL SOFTBRICK YOUR FIREFOX IF ADDITIONAL TOP TOOLBARS AREN'T + // ENABLED BUT THIS IS + if (separateAddressBar) { + CustomizableUI.addWidgetToArea( + "urlbar-container", + "additional_top_toolbar1" + ); + CustomizableUI.moveWidgetWithinArea( + "urlbar-container", + urlbar_on_toolbar_position + ); + } - /* - try { - document.getElementById('back-button').setAttribute('removable','false'); - document.getElementById('forward-button').setAttribute('removable','false'); - document.getElementById('urlbar-container').setAttribute('removable','false'); - } catch(e){} - */ - }, -}; + // Moves tabs to the bottom of the toolbar stack + if (bottomTabs) { + document + .getElementById("navigator-toolbox") + .appendChild(document.getElementById("TabsToolbar")); + } -document.addEventListener("DOMContentLoaded", MoveUrlbar.init(), false); + // Moves the main menu button to the top row, before the last item + // (activity throbber). This is because the icon is hidden but not the + // button and creates bad padding if you're using the navigation bar as + // an address bar + if (menuToTop) { + setTimeout(() => { + document + .getElementById("PanelUI-button") + .setAttribute("removable", "true"); + const menubar = document.getElementById(menu); + menubar.insertBefore( + document.getElementById("PanelUI-button"), + menubar.lastChild + ); + }, 0); + } + }, + }; + + document.addEventListener("DOMContentLoaded", MoveUrlbar.init(), false); +})(); diff --git a/chrome/go.png b/chrome/msfx/go.png similarity index 100% rename from chrome/go.png rename to chrome/msfx/go.png diff --git a/chrome/msfx/msfx.css b/chrome/msfx/msfx.css new file mode 100644 index 0000000..636a3c8 --- /dev/null +++ b/chrome/msfx/msfx.css @@ -0,0 +1,2503 @@ +@import url("toolbar-label-under-icon.css"); + +menupopup, +panel { + --windows-panel-box-shadow: none !important; + --panel-shadow-margin: 0 !important; + --panel-border-radius: 0 !important; + --panel-padding-block: 0 !important; + --panel-background: Window !important; + --panel-color: -moz-DialogText !important; +} + +#urlbar-container { + --urlbar-container-height: 22px !important; +} + +#urlbar { + --urlbar-height: 22px !important; + --urlbar-toolbar-height: 22px !important; + color: WindowText !important; +} + +#urlbar-scheme { + color: WindowText !important; +} + +/* Add 3D Borders back to context menus. */ +menupopup { + appearance: none !important; + border: none !important; + padding: 2px !important; + box-shadow: inset -1px -1px 0 ThreeDDarkShadow, inset 1px 1px 0 ThreeDFace, + inset -2px -2px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight !important; + border: 0px solid transparent !important; +} + +menuseparator:not([hidden="true"])::before { + height: 1px; + background-color: ThreeDHighlight; +} + +/* Fix Menubar Selection. */ +#main-menubar > menu[_moz-menuactive="true"] { + color: inherit !important; +} + +#main-menubar > menu { + appearance: menuitem !important; + min-height: 19px !important; +} + +/* Status Bar */ + +#browser-bottombox { + margin-top: 2px; + height: 18px; + /*display: var(--show-status-bar); + gap: 2px; + box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow;*/ +} + +#main-window:not([sizemode="maximized"]) #browser-bottombox::after { + content: ""; + display: inline-block; + width: 13px; + height: 13px; + position: fixed; + right: 0; + bottom: 0; + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMuNDM5NiAzLjQzOTYiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGc+PGc+PHJlY3QgeD0iMi45MTA0IiB5PSIwLjAwMDAiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIyLjY0NTgiIHk9Ii4yNjQ1OCIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9IjIuMzgxMiIgeT0iLjUyOTE3IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMi4xMTY3IiB5PSIuNzkzNzUiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIxLjg1MjEiIHk9IjEuMDU4MyIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9IjEuNTg3NSIgeT0iMS4zMjI5IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMS4zMjI5IiB5PSIxLjU4NzUiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIxLjA1ODMiIHk9IjEuODUyMSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9Ii43OTM3NSIgeT0iMi4xMTY3IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iLjUyOTE3IiB5PSIyLjM4MTIiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIuMjY0NTgiIHk9IjIuNjQ1OCIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9IjAuMDAwMCIgeT0iMi45MTA0IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMi45MTA0IiB5PSIuMjY0NTgiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIyLjY0NTgiIHk9Ii41MjkxNyIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9IjIuMzgxMiIgeT0iLjc5Mzc1IiB3aWR0aD0iLjUyOTE3IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVEU2hhZG93Ii8+PHJlY3QgeD0iMi4xMTY3IiB5PSIxLjA1ODMiIHdpZHRoPSIuNTI5MTciIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIxLjg1MjEiIHk9IjEuMzIyOSIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9IjEuNTg3NSIgeT0iMS41ODc1IiB3aWR0aD0iLjUyOTE3IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVEU2hhZG93Ii8+PHJlY3QgeD0iMS4zMjI5IiB5PSIxLjg1MjEiIHdpZHRoPSIuNTI5MTciIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIxLjA1ODMiIHk9IjIuMTE2NyIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9Ii43OTM3NSIgeT0iMi4zODEyIiB3aWR0aD0iLjUyOTE3IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVEU2hhZG93Ii8+PHJlY3QgeD0iLjUyOTE3IiB5PSIyLjY0NTgiIHdpZHRoPSIuNTI5MTciIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIuMjY0NTgiIHk9IjIuOTEwNCIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9IjIuOTEwNCIgeT0iMS4wNTgzIiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMi42NDU4IiB5PSIxLjMyMjkiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIyLjM4MTIiIHk9IjEuNTg3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9IjIuMTE2NyIgeT0iMS44NTIxIiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMS44NTIxIiB5PSIyLjExNjciIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIxLjU4NzUiIHk9IjIuMzgxMiIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9IjEuMzIyOSIgeT0iMi42NDU4IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMS4wNTgzIiB5PSIyLjkxMDQiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIyLjkxMDQiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9IjIuNjQ1OCIgeT0iMS41ODc1IiB3aWR0aD0iLjUyOTE3IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVEU2hhZG93Ii8+PHJlY3QgeD0iMi4zODEyIiB5PSIxLjg1MjEiIHdpZHRoPSIuNTI5MTciIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIyLjExNjciIHk9IjIuMTE2NyIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9IjEuODUyMSIgeT0iMi4zODEyIiB3aWR0aD0iLjUyOTE3IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVEU2hhZG93Ii8+PHJlY3QgeD0iMS41ODc1IiB5PSIyLjY0NTgiIHdpZHRoPSIuNTI5MTciIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIxLjMyMjkiIHk9IjIuOTEwNCIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9IjIuOTEwNCIgeT0iMi4xMTY3IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMi42NDU4IiB5PSIyLjM4MTIiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiLz48cmVjdCB4PSIyLjM4MTIiIHk9IjIuNjQ1OCIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9IjIuMTE2NyIgeT0iMi45MTA0IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PHJlY3QgeD0iMi45MTA0IiB5PSIyLjM4MTIiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIyLjY0NTgiIHk9IjIuNjQ1OCIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlRFNoYWRvdyIvPjxyZWN0IHg9IjIuMzgxMiIgeT0iMi45MTA0IiB3aWR0aD0iLjUyOTE3IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVEU2hhZG93Ii8+PHJlY3QgeD0iMy4xNzUwIiB5PSIwLjAwMDAiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iMy40Mzk2IiBmaWxsPSItbW96LURpYWxvZyIvPjxyZWN0IHg9IjAuMDAwMCIgeT0iMy4xNzUwIiB3aWR0aD0iMy4xNzUwIiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iLW1vei1EaWFsb2ciLz48L2c+PC9nPjwvc3ZnPg=="); +} + +#status-text::before { + content: ""; + display: inline-block; + width: 16px; + height: 16px; + position: fixed; + left: 2px; + bottom: 1px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg=="); +} +#status-text { + height: 18px; + padding-left: 16px; + box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; +} + +#statuspanel-label { + color-scheme: light !important; + background-color: transparent !important; + color: -moz-DialogText !important; + border: 0 !important; + /*padding-top: unset !important; + padding-bottom: unset !important; + padding-left: 2px !important;*/ + padding-bottom: 4px !important; +} + +#statuspanel { + display: flex !important; + align-items: center !important; + margin-top: unset !important; + bottom: 1px !important; + left: 1px !important; + transition: none !important; + min-height: 16px !important; + position: fixed !important; + padding-top: 0 !important; + background-color: transparent; !important; +} + +#statuspanel-inner { + height: 100% !important; + display: flex; + align-items: center; +} + +/* I give up making comments. */ +#navigator-toolbox { + border-bottom: 0 !important; + appearance: groupbox !important; + box-shadow: inset 1px 1px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight, + inset -1px -1px 0 ThreeDHighlight, inset -2px -2px 0 ThreeDShadow !important; + padding: 2px; + margin-bottom: 2px !important; +} + +.browserStack, +#customization-container { + -moz-default-appearance: listbox !important; + -moz-appearance: listbox !important; +} + +.browser-toolbar:not(#TabsToolbar) { + box-shadow: inset 0px -1px 0 ThreeDHighlight, inset 0px 0px 0 ThreeDShadow !important; + padding-bottom: 2px !important; +} + +#PersonalToolbar { + padding-inline: 0 !important; +} + +.tabbrowser-tab { + appearance: tab !important; + padding: 0 5px !important; +} + +.tabbrowser-tab:not([pinned]):not([fadein]) { + max-width: 176px !important; +} + +.tab-background { + display: none !important; +} + +.tab-close-button { + display: var(--hide-tab-close-button) !important; + padding: 0 !important; + width: 10px !important; + height: 10px !important; + transform: translate(-1px, -1px); + margin-inline-end: calc(var(--inline-tab-padding) + 2px) !important; + list-style-image: none !important; + background-color: -moz-DialogText !important; + mask-repeat: no-repeat !important; + mask-position: center center !important; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA4SURBVBhXY2RgYPgPxCAAYiMDmDgYgDjIAnA+si4UHUCAbiIYoJtEvAnoOuF8kCqYBLqdQHEGBgAx7A/5GaSbcgAAAABJRU5ErkJggg==") !important; +} + +.tab-close-button[pinned] { + display: none !important; +} + +.tab-label { + line-height: unset !important; +} + +.tab-content { + display: flex !important; + align-items: center; +} + +.tab-close-button:hover { + background-color: WindowText; + opacity: 0.5 !important; +} + +#urlbar-background, +#searchbar { + border: 0 !important; + border-radius: 0 !important; + -moz-default-appearance: listbox !important; + -moz-appearance: listbox !important; + box-shadow: none !important; +} + +#urlbar[breakout][breakout-extend] #urlbar-background { + height: var(--urlbar-height) !important; +} + +#urlbar[breakout][breakout-extend] #favimginurlbar { + margin: 3px !important; + margin-right: 2px !important; +} + +#urlbar[breakout][breakout-extend] .urlbar-input-box::after { + display: none !important; +} + +#tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab[first-visible-unpinned-tab] { + margin-inline-start: 0 !important; +} + +#context-navigation { + display: flex; + flex-direction: column; + padding-bottom: 0 !important; +} + +#context-navigation::after { + content: ""; + display: block; + appearance: menuseparator; +} + +#context-sep-navigation { + display: none !important; +} + +#context-navigation > .menuitem-iconic { + list-style-image: none !important; + position: relative !important; + align-items: center !important; + justify-content: flex-start !important; +} + +#context-navigation .menuitem-iconic::before { + display: block; + content: attr(aria-label); + /*margin-left: 16px;*/ + padding-bottom: 0 !important; + height: 18px; + line-height: 18px; +} + +#context-sep-navigation { + margin-top: 0 !important; +} + +toolbarseparator { + border-left: 1px solid ThreeDShadow; + border-right: 1px solid ThreeDHighlight; + margin: 2px; +} + +toolbarpaletteitem[place="toolbar"][id^="wrapper-customizableui-special-spring"], +toolbarspring { + -moz-box-flex: 10000 !important; +} + +#activity_throbber { + background-color: #000 !important; + height: 22px !important; + list-style-image: none !important; + background-repeat: no-repeat; + background-position: center center; + min-width: 39px !important; + min-height: 22px !important; + padding: 0 !important; + position: relative !important; + left: 0px; + background-image: url("data:image/bmp;base64,Qk0uCgAAAAAAADYAAAAoAAAAJgAAABYAAAABABgAAAAAAPgJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAzAAAzMwAzMwAzAAAzMwAzAAAREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAAAADMzADMzM2YzM2YzM5lmZmZmM01NTWYzABEREQAzMxEREREREREREQAAMwAzMxEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMAMzMzZjMzM2YzVVVVKSkpAAAAQkJCMzMzOTk5MzMzADMzADMzHBwcM2ZmADMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREREzMwBmMzOZZjPMmWbMmWaZmWYcHBxmMzMREREAAAAAAAAAAAAAAAAAAAAzM2YAMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzAGYzM2ZmM5lmZpmZZsyZmZmZZikpKZlmM5lmM2YzMwBmMwCZzACZzAAAADNmZhEREQAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAKSkpmWYzmWZmmZlmzJmZmZlmAAAAmWYzzGYzZmYzADNmAMz/AJnMAAAAADMzERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBw5OTlfX19mZjNCQkJCQkJCQkIcHBxmZjOZZjNmZjMAM2YAzP8AmcwAAAAzZmYAMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHDMzM0JCQmZmmWZmmZmZzGZmmSkpKTk5ORERETMAAAAzMwBmZgAzMwAAADNmZgAzMxEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzNmM2aZZmaZZmbMmZnMZpnMERERM2bMMzPMADNmHBwcM2YzM2YzAAAAVVVVADMAADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAADMzM2ZmZsxmmcxmmcxmZswzAAAzZswAZswzM5kAZjNmmWYzmWYAAABmmWYzZjMcHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMwAzZjMzmXd3d2ZmZmZmZnd3dyIiIjNmzDMz/wAzmTMzAGbMZjOZMwAAAF9fXwBmMxwcHAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAzKSkpTU1NMzNmMzNmM2aZTU1NHBwcKSkpAAAzADMzADMzM2YzKSkpAAAAZplmMzMzADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAMzMAADMAMzMAADMzM2YAM2YzM2ZfX19CQkIcHBwAAAAREREpKSkzZmYzmTMzMzMAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAAAAMwAAAAAAAAAAMwAAMwAzZjMzZjNmZjNmZl9fXzOZZjNmMzNmMwAzAAAzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAzADMzIiIiADMzMzMAADMzADMAADMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAAAMwAAMwAREREAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="); +} + +#activity_throbber::before { + content: ""; + position: absolute !important; + width: 1px !important; + border-left: 1px solid ThreeDShadow !important; + box-shadow: inset 1px 0 0 ThreeDHighlight !important; + height: calc(100% + 1px) !important; + top: 0 !important; + left: 0 !important; + z-index: 1 !important; +} + +#activity_throbber[busy] { + background-image: url("data:image/gif;base64,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"); +} + +#activity_throbber .toolbarbutton-icon { + display: none !important; +} + +#menubar-items { + justify-content: center !important; +} + +.tab-secondary-label { + display: none !important; +} + +#tabbrowser-tabs { + padding-left: 2px !important; +} + +:root:not([uidensity="compact"]) .tab-content[pinned] { + padding: 0 !important; +} + +#tabbrowser-tabs:not([secondarytext-unsupported]) .tab-label-container { + padding: 0 !important; + height: unset !important; + margin-top: 1px !important; +} +#tabbrowser-tabs:not([secondarytext-unsupported]) + .tab-label-container:not([pinned]) { + width: 100% !important; +} + +.tabbrowser-tab { + min-height: calc(var(--tab-min-height) - 3px) !important; + padding: 0 1px !important; + margin-top: 2px !important; + margin-bottom: -1px !important; +} + +.tabbrowser-tab[pinned] { + padding: 0 4px !important; +} + +.tabbrowser-tab[visuallyselected="true"] { + position: unset !important; + font-weight: var(--selected-tab-font-weight) !important; +} + +.tabbrowser-tab:not([selected="true"]) { + min-height: calc(var(--tab-min-height) - 5px) !important; + margin-top: 4px !important; +} + +.tabbrowser-tab:not([pinned]) .tab-icon-image { + display: var(--show-tab-icons) !important; + margin-bottom: 1px !important; +} + +.tabbrowser-tab[pinned] + .tab-icon-stack[soundplaying="true"] + .tab-icon-image { + display: none !important; +} + +.tabbrowser-tab[pinned] .tab-icon-overlay { + display: inline-block !important; +} + +.tabbrowser-tab[label="New Tab"][image]:not([busy]) .tab-icon-image { + opacity: 0; +} + +.tabbrowser-tab[label="New Tab"][image]:not([busy]) + .tab-label-container:not([selected="true"])::before { + top: 1px; +} + +.tabbrowser-tab[label="New Tab"][image]:not([busy]) + .tab-label-container::before { + content: ""; + display: var(--show-tab-icons) !important; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; + background-size: 100%; + width: 16px; + height: 16px; + position: absolute; + top: 2px; + left: 0px; + pointer-events: none; + opacity: 1; +} + +.tab-throbber:not([pinned]), +.tab-icon-pending:not([pinned]), +.tab-icon-image:not([pinned]), +.tab-sharing-icon-overlay:not([pinned]), +.tab-icon-overlay:not([pinned]) { + margin-inline-end: 3px !important; +} + +:root[uidensity="compact"] + .tab-icon-stack[indicator-replaces-favicon] + > :not(.tab-icon-overlay), +#tabbrowser-tabs[secondarytext-unsupported] + .tab-icon-stack[indicator-replaces-favicon] + > :not(.tab-icon-overlay), +:root:not([uidensity="compact"]) + #tabbrowser-tabs:not([secondarytext-unsupported]) + .tabbrowser-tab:not(:hover) + .tab-icon-overlay[indicator-replaces-favicon], +:root:not([uidensity="compact"]) + #tabbrowser-tabs:not([secondarytext-unsupported]) + .tabbrowser-tab:hover + .tab-icon-stack[indicator-replaces-favicon] + > :not(.tab-icon-overlay) { + opacity: 1 !important; +} + +.tab-icon-stack { + display: flex !important; +} + +.tab-icon-stack[indicator-replaces-favicon="true"] .tab-icon-image { + margin-inline-end: 0 !important; +} + +/*#tabbrowser-tabs tab:first-of-type:last-of-type, +#tabbrowser-tabs tab:first-of-type:last-of-type ~ #tabs-newtab-button, +#tabbrowser-tabs + tab:first-of-type:last-of-type + ~ #tabbrowser-arrowscrollbox-periphery + #tabs-newtab-button, +#tabbrowser-tabs tab:first-of-type:last-of-type { + display: none !important; +}*/ + +#reload-button, +#stop-button, +#reload-button:not([displaystop]) + #stop-button, +#reload-button[displaystop] { + display: inherit !important; +} + +#stop-reload-button { + flex-direction: var(--stop-reload-order) !important; +} + +#urlbar[breakout-extend] { + top: calc( + var((--urlbar-toolbar-height) - var(--urlbar-height)) / 2 + ) !important; + left: 0 !important; + width: 100% !important; +} + +#urlbar[breakout-extend] #urlbar-input-container { + height: var(--urlbar-height) !important; + padding-block: 0px !important; + padding-inline: 0px !important; +} + +:root[inFullscreen] #browser-bottombox { + display: none !important; +} + +:root[inFullscreen] .browserStack { + -moz-default-appearance: none !important; + -moz-appearance: none !important; +} + +.bookmark-item { + border: 1px solid transparent; + border-radius: 0 !important; + margin: 0 !important; + background: transparent !important; + padding: 0 !important; + padding-inline: 4px !important; +} + +.bookmark-item[label=""], +#tabs-newtab-button, +.toolbarbutton-1:not(#activity_throbber):not(#back-button):not(#go-button):not( + #find-button + ):not(#bookmarks-menu-button):not(#history-panelmenu):not(#sidebar-button):not(#ie6_statusbar), +#PlacesChevron, +#sidebar-close, +#placesToolbar > toolbarbutton:not([disabled]) { + width: 22px; + height: 22px; +} + +#status-bar { + color: -moz-DialogText; + gap: 2px; +} + +#status-bar .toolbaritem-combined-buttons { + height: 18px !important; + min-height: 18px !important; +} + +#status-bar + .toolbarbutton-1:not(#activity_throbber):not(#back-button):not( + #ie6_statusbar + ) { + width: 22px; + height: 18px !important; + min-height: 18px !important; + box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; +} + +.bookmark-item:not(.menuitem-iconic):hover, +#tabs-newtab-button:hover, +.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( + [disabled] + ):hover, +#PlacesChevron:hover, +#sidebar-close:hover, +#placesToolbar > toolbarbutton:not([disabled]):hover, +#main-menubar > menu[_moz-menuactive], +#stop-button:hover { + border-top-color: ThreeDHighlight !important; + border-left-color: ThreeDHighlight !important; + border-right-color: ThreeDShadow !important; + border-bottom-color: ThreeDShadow !important; + background-color: transparent !important; + border-radius: 0 !important; +} + +#main-menubar > menu { + border: 1px solid transparent; +} + +.bookmark-item:active, +.bookmark-item[open="true"], +#sidebar-close:active, +#tabs-newtab-button:active, +.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( + [disabled] + ):active, +.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar)[open="true"], +#PlacesChevron[open="true"], +#PlacesChevron:active, +#placesToolbar > toolbarbutton:not([disabled]):active, +#main-menubar > menu[_moz-menuactive][open], +#stop-button:active { + border-top-color: ThreeDShadow !important; + border-left-color: ThreeDShadow !important; + border-right-color: ThreeDHighlight !important; + border-bottom-color: ThreeDHighlight !important; + background-color: transparent !important; + border-radius: 0 !important; +} + +#PlacesChevron[open="true"] .toolbarbutton-icon, +#PlacesChevron:active .toolbarbutton-icon, +#PlacesToolbar .bookmark-item:active > *, +#PlacesToolbar .bookmark-item[open="true"] > *, +.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):active > *, +.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar)[open="true"] > *, +#viewButton[open="true"] .button-box, +#viewButton:active .button-box, +#sidebar-close:active .toolbarbutton-icon, +.close-icon.findbar-closebutton:active, +.findbar-find-previous:not([disabled="true"]):active .toolbarbutton-icon, +.findbar-find-next:not([disabled="true"]):active .toolbarbutton-icon, +#tabs-newtab-button:active .toolbarbutton-icon, +#placesToolbar > toolbarbutton:not([disabled]):active, +.infobar.container .notification-close:active { + transform: translate(1px, 1px); +} + +#PlacesToolbarItems > toolbarseparator { + padding-inline: 0 !important; + margin: 2px !important; +} + +#PlacesToolbarItems > toolbarseparator::before { + display: none !important; +} + +.bookmark-item[container], +.bookmark-item[container] > .menu-iconic-left > .menu-iconic-icon { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURZmZAAAAAPHx8f//zP//mczMZv/MmQAAAHwygQUAAAAIdFJOU/////////8A3oO9WQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAFBJREFUKFNdz0kSwCAIBVEICPe/cT5DkWC74slCya8AFHHPAHpEVEeITpV7uS9fejhAJ1tgOHsD8oO43xspA3VvDT1hLuiHVQDnVXxud4H7C0+1BHuF0oyhAAAAAElFTkSuQmCC") !important; +} + +.bookmark-item[open="true"][container] { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURZmZAPj4+P//mczMZgAAAP/MmQAAAICpg0sAAAAHdFJOU////////wAaSwNGAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAWElEQVQoU13PWw7AIAwDwdA87n/k2oagiG1/PKJItXoiGNtTYIu1GPbHls5hNoCQxwAGmLngHMgvPfxC8t3Qd+BEWuARYGHjGwLk7HQLwUhQMetfuD1Q9QOj9wNL8v7HsAAAAABJRU5ErkJggg==") !important; +} + +.bookmark-item .toolbarbutton-text { + margin-right: 1px !important; +} + +/*#PlacesToolbar menupopup { + background: transparent !important; + padding: 0 !important; + box-shadow: none !important; +}*/ + +.tab-throbber { + display: none !important; +} + +#PlacesToolbarItems::before { + content: "Links"; + display: inline-block; + height: 100%; + line-height: 22px; + padding-left: 4px; + padding-right: 4px; +} + +#additional_top_toolbar1::before { + content: "Address"; + display: block; + height: 100%; + line-height: 22px; + padding-left: 4px; + padding-right: 4px; + -moz-box-ordinal-group: 1 !important; +} + +#additional_top_toolbar1::after, +.browser-toolbar::after, +#additional_top_toolbar1 #personal-bookmarks::after, +#PersonalToolbar::after { + content: ""; + display: var(--lock-toolbars); + width: 1px; + box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; + padding: 1px; + margin-top: 2px; + margin-right: 0px; + margin-left: 2px; + margin-bottom: 2px; + cursor: ew-resize; + order: -1 !important; +} + +#navigator-toolbox::after { + content: ""; + display: var(--lock-toolbars); + height: 1px; + box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; + padding: 1px; + cursor: ns-resize; + order: 1 !important; +} + +#urlbar-container { + display: flex !important; +} + +#PersonalToolbar { + padding-left: 0 !important; + -moz-box-ordinal-group: 10 !important; +} + +#TabsToolbar { + -moz-box-ordinal-group: 11 !important; +} + +.tab-icon-overlay[soundplaying] { + list-style-image: none !important; + mask-position: center center; + mask-repeat: no-repeat; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURQAAAAAAAKVnuc8AAAACdFJOU/8A5bcwSgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAADFJREFUGFdjYEQGWHkoFAOQArHAPAYQD8QEIRAAMgjzwHy4PjAXwoLw0CgoQOYxMgIAL5wAhbFaK4UAAAAASUVORK5CYII=") !important; + background: -moz-DialogText !important; +} + +.tab-icon-overlay[muted] { + list-style-image: none !important; + mask-position: center center; + mask-repeat: no-repeat; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURQAAAAAAAKVnuc8AAAACdFJOU/8A5bcwSgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAADNJREFUGFdtigEKADAIAvX/n17OhBoTSa8Cp36U3U1MQlFbXTePkL+em0u7SGk5N0WTyAMtxwCAzRsJ1wAAAABJRU5ErkJggg==") !important; + background: -moz-DialogText !important; +} + +.tab-icon-overlay[activemedia-blocked] { + list-style-image: none !important; + mask-position: center center; + mask-repeat: no-repeat; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAdSURBVChTYxhQ8B+KQQCZjReMaoKCQa6JFoCBAQARRSPdHMGSFgAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") !important; + background: -moz-DialogText !important; +} + +.tab-icon-overlay[indicator-replaces-favicon] { + padding: 0 !important; + border-radius: 0 !important; + margin-inline-end: 3px !important; +} + +.tab-icon-overlay[pinned]:not([soundplaying]):not([muted]):not( + [activemedia-blocked] + ) { + display: none !important; +} + +.tabbrowser-tab:not([fadein])::before { + content: ""; + display: block; + width: calc(100% - 1px); + height: 2px; + margin-top: -8px; + left: 0; + appearance: menuseparator; + position: absolute; + z-index: 2; + pointer-events: none !important; +} + +.tabbrowser-tab:not([selected="true"])::before { + margin-top: -10px !important; +} + +#tabs-newtab-button { + min-height: 22px !important; + min-width: 24px !important; + border: 1px solid transparent; + padding: 0 !important; + background: transparent !important; +} + +toolbar:not(#TabsToolbar) #new-tab-button { + width: 24px !important; +} + +#tabs-newtab-button .toolbarbutton-icon, +toolbar:not(#TabsToolbar) #new-tab-button .toolbarbutton-icon, +#TabsToolbar #wrapper-new-tab-button #new-tab-button, +#tabs-newtab-button, +#TabsToolbar #new-tab-button { + padding: 0 !important; + width: 16px !important; + height: 16px !important; + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAA2UExURYCAgP///+Pj40JCQsDAwDOZADPMMzNmAACAgDNm/8z//zPM/zP//wBmAAAAAACAAAAA/wAAAD6tG54AAAASdFJOU///////////////////////AOK/vxIAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABmSURBVChTXc7REoUgCEVR04NWBLf+/2cvpBbTfnKWDEMKXV5KyyiXmxxARDCAkwGoUlvhgOKw7a0xbwGOg1k0wE9YagCpH4DIeWpYukBVc37Anr0B5a2DHYvZhDFgdQgjE8a/Va4/5y0FqgTh7iIAAAAASUVORK5CYII=") !important; +} + +#TabsToolbar #new-tab-button { + padding-inline: 3px !important; +} + +toolbar #new-tab-button.toolbarbutton-1 > .toolbarbutton-icon { + padding: 0 !important; +} + +.tab-icon-pending { + display: none !important; +} + +#urlbar-container { + padding-top: 0 !important; + padding-bottom: 0 !important; + margin-inline: 0 !important; +} + +#urlbar[breakout] { + min-height: var(--urlbar-height) !important; + font: menu !important; + display: -moz-box !important; +} + +#urlbar[breakout][breakout-extend] { + display: block !important; +} + +#urlbar[breakout][breakout-extend] #identity-box { + margin-inline-end: 1px !important; +} + +#PersonalToolbar { + overflow: unset !important; +} + +#urlbar-input-container { + border: 0 !important; +} + +#tracking-protection-icon-container, +#star-button-box, +#identity-icon-box, +#identity-permission-box { + display: none !important; +} + +#favimginurlbar { + margin: 3px !important; +} + +#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background, +#searchbar:focus-within { + outline: 0 !important; + box-shadow: none !important; +} + +#identity-box { + margin-inline-end: 2px !important; +} + +#urlbar[breakout][breakout-extend] #identity-box { + margin-inline-end: 0 !important; +} + +#urlbar-go-button, +.urlbarView-row[label]::before { + display: none !important; +} + +.urlbarView-row[label] { + margin-block-start: 0 !important; +} + +.urlbarView-row:not([type="tip"], [type="dynamic"])[selected] + > .urlbarView-row-inner, +.urlbarView-row-inner[selected] { + background-color: Highlight !important; + color: HighlightText !important; +} + +.urlbarView-row { + padding-block: 0 !important; + border-radius: 0 !important; + padding: 0 !important; +} + +:root:not([uidensity="compact"]) .urlbarView-row-inner { + min-height: 100% !important; + padding-block: 0 !important; + padding-inline: 3px !important; + padding-top: 1px !important; +} + +:root:not([uidensity="compact"]) + .urlbarView-row:not([type="tip"], [type="dynamic"]) { + min-height: unset !important; +} + +.urlbarView-row-inner { + padding-block: 3px !important; + border-radius: 0 !important; + padding-inline: 2px !important; +} + +.urlbarView-row:not([type="tip"], [type="dynamic"], [has-buttons]):hover + > .urlbarView-row-inner, +.urlbarView-row[has-buttons] > .urlbarView-row-inner:not([selected]):hover { + background-color: Highlight !important; + color: HighlightText !important; +} + +#back-button, +#forward-button, +#stop-button, +#reload-button, +#home-button, +#downloads-button, +#history-panelmenu, +#bookmarks-menu-button, +#print-button, +#new-window-button, +#cut-button, +#copy-button, +#paste-button, +#fullscreen-button, +#find-button, +#email-link-button, +#sidebar-button, +#library-button, +#characterencoding-button, +#preferences-button { + list-style-image: none !important; + -moz-context-properties: unset !important; + fill: unset !important; + opacity: unset !important; +} + +#back-button > .toolbarbutton-icon, +#forward-button > .toolbarbutton-icon, +#stop-button > .toolbarbutton-icon, +#reload-button > .toolbarbutton-icon, +#home-button > .toolbarbutton-icon, +#downloads-button #downloads-indicator-anchor, +/*#downloads-button > .toolbarbutton-icon, +#downloads-button > .toolbarbutton-badge-stack,*/ +#history-panelmenu > .toolbarbutton-icon, +#bookmarks-menu-button > .toolbarbutton-icon, +#print-button > .toolbarbutton-icon, +#new-window-button > .toolbarbutton-icon, +#cut-button > .toolbarbutton-icon, +#copy-button > .toolbarbutton-icon, +#paste-button > .toolbarbutton-icon, +#fullscreen-button > .toolbarbutton-icon, +#find-button > .toolbarbutton-icon, +#email-link-button > .toolbarbutton-icon, +#sidebar-button > .toolbarbutton-icon, +#library-button > .toolbarbutton-icon, +#characterencoding-button > .toolbarbutton-icon, +#preferences-button > .toolbarbutton-icon { + padding: 0 !important; + opacity: unset !important; + width: 16px !important; + background-image: url("toolbar.png") !important; + list-style-image: none !important; + height: 16px !important; +} + +#nav-bar + toolbarbutton:not(#tabs-newtab-button):not(:hover):not( + #forward-button[disabled="true"] + ):not(#back-button[disabled="true"]) + .toolbarbutton-icon { + mix-blend-mode: var(--toolbar-tinting); +} + +#nav-bar .toolbarbutton-1 { + min-height: 12px !important; +} + +.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not(#status-text) { + border: 1px solid transparent; +} +#status-bar + .toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( + #status-text + ), +#status-bar + .toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( + #status-text + ):hover { + border: none !important; + border-radius: 0 !important; +} + +toolbarbutton:where([disabled="true"]) { + color: ThreeDShadow !important; + text-shadow: 1px 1px 0 ThreeDHighlight; +} + +#nav-bar #back-button:where([disabled="true"]), +#nav-bar #forward-button:where([disabled="true"]) { + border-color: transparent !important; +} + +toolbar:not(#nav-bar) .webextension-browser-action { + padding: 0 4px !important; +} + +#PersonalToolbar + .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active), +#tabbrowser-arrowscrollbox:not([scrolledtostart="true"])::part( + scrollbutton-up + ):hover:active, +#tabbrowser-arrowscrollbox:not([scrolledtoend="true"])::part( + scrollbutton-down + ):hover:active, +toolbarbutton.bookmark-item:hover:active:not(.subviewbutton, [disabled="true"]), +toolbarbutton.bookmark-item[open="true"], +toolbar + .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active) + > .toolbarbutton-icon, +toolbar + .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active) + > .toolbarbutton-text, +toolbar + .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active) + > .toolbarbutton-badge-stack { + background: transparent !important; +} + +#nav-bar .toolbarbutton-icon { + margin-left: 1px !important; + margin-right: 1px !important; +} + +#back-button[disabled="true"] .toolbarbutton-icon, +#forward-button[disabled="true"] .toolbarbutton-icon { + fill: currentColor; + color: ThreeDShadow; + filter: drop-shadow(1px 1px 0 ThreeDHighlight) !important; + -moz-context-properties: fill, fill-opacity; +} + +#forward-button[disabled="true"], +#forward-button:hover[disabled="true"], +#back-button[disabled="true"], +#back-button:hover[disabled="true"] { + -moz-image-region: unset !important; +} + +#nav-bar #back-button[disabled="true"] > *, +#nav-bar #forward-button[disabled="true"] { + transform: none !important; +} + +#back-button[disabled="true"] .toolbarbutton-icon, +#forward-button[disabled="true"] .toolbarbutton-icon { + background-image: none !important; + list-style-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZlcnNpb249IjEuMSIgZmlsbD0iY29udGV4dC1maWxsIiBmaWxsLW9wYWNpdHk9ImNvbnRleHQtZmlsbC1vcGFjaXR5IiB2aWV3Qm94PSIwIDAgNC4yMzMzIDQuMjMzMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBzdHJva2Utd2lkdGg9Ii4yNjQ1OCI+PHJlY3QgeD0iLjUyOTE3IiB5PSIxLjg1MjEiIHdpZHRoPSIzLjE3NSIgaGVpZ2h0PSIuNTI5MTciLz48cmVjdCB4PSIuNzkzNzUiIHk9IjEuNTg3NSIgd2lkdGg9IjIuOTEwNCIgaGVpZ2h0PSIxLjA1ODMiLz48cmVjdCB4PSIxLjMyMjkiIHk9IjEuMDU4MyIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIyLjExNjciLz48cmVjdCB4PSIxLjU4NzUiIHk9Ii43OTM3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIyLjY0NTgiLz48cmVjdCB4PSIxLjA1ODMiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIxLjU4NzUiLz48L2c+PC9zdmc+Cg==") !important; +} + +#forward-button[disabled="true"] .toolbarbutton-icon, +#forward-button[disabled="true"]:active .toolbarbutton-icon, +#forward-button[disabled="true"] .toolbarbutton-icon:active { + transform: scaleX(-1) !important; +} + +#nav-bar + .toolbarbutton-1:not(#back-button[disabled="true"]):not( + #forward-button[disabled="true"] + ):hover + .toolbarbutton-icon, +#nav-bar + .toolbarbutton-1:not(#back-button[disabled="true"]):not( + #forward-button[disabled="true"] + ):active + .toolbarbutton-icon, +#nav-bar + .toolbarbutton-1:not(#back-button[disabled="true"]):not( + #forward-button[disabled="true"] + )[open="true"] + .toolbarbutton-icon { + filter: none !important; +} + +#nav-bar-customization-target > :is(toolbarbutton, toolbaritem):first-child, +#nav-bar-customization-target + > toolbarpaletteitem:first-child + > :is(toolbarbutton, toolbaritem) { + padding-inline-start: 0 !important; +} + +#nav-bar { + height: 24px; +} + +#nav-bar .toolbarbutton-1 .toolbarbutton-text, +#toolbar-menubar .toolbarbutton-1 .toolbarbutton-text { + padding-left: 1px !important; + padding-top: 0 !important; + padding-bottom: 0 !important; + min-height: unset !important; +} + +#back-button .toolbarbutton-text { + display: var(--hide-back-button-text) !important; +} + +#find-button .toolbarbutton-text { + display: var(--hide-find-button-text) !important; +} + +#bookmarks-menu-button .toolbarbutton-text, +#library-button .toolbarbutton-text { + display: var(--hide-bookmarks-menu-button-text) !important; +} + +#history-panelmenu .toolbarbutton-text { + display: var(--hide-history-button-text) !important; +} +#sidebar-button .toolbarbutton-text { + display: var(--hide-history-button-text) !important; +} + +#back-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 0) !important; +} +#back-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#forward-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 1) !important; +} +#forward-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#reload-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 2) !important; +} +#reload-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#stop-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 3) !important; +} +#stop-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#home-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 4) !important; +} +#home-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#find-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 5) !important; +} +#find-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#bookmarks-menu-button .toolbarbutton-icon, +#library-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 6) !important; +} +#bookmarks-menu-button:hover .toolbarbutton-icon, +#library-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#history-panelmenu .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 7) !important; +} +#history-panelmenu:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#downloads-button { + width: 24px !important; +} + +#downloads-button #downloads-indicator-anchor { + background-position-x: calc(var(--toolbar-size) * 12) !important; +} + +#downloads-button:hover #downloads-indicator-anchor { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#print-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 8) !important; +} +#print-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#email-link-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 14) !important; +} +#email-link-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#cut-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 10) !important; +} +#cut-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#copy-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 9) !important; +} +#copy-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#paste-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 11) !important; +} +#paste-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#sidebar-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 13) !important; +} +#sidebar-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#fullscreen-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 15) !important; +} +#fullscreen-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#new-window-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 16) !important; +} +#new-window-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#characterencoding-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 17) !important; +} +#characterencoding-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#preferences-button .toolbarbutton-icon { + background-position-x: calc(var(--toolbar-size) * 18) !important; +} +#preferences-button:hover .toolbarbutton-icon { + background-position-y: calc(var(--toolbar-size) * -1) !important; +} + +#edit-controls { + margin: 0 !important; + display: flex; +} + +#edit-controls separator { + display: none !important; +} + +#edit-controls .toolbarbutton-1 { + width: 24px !important; + height: 100% !important; +} + +#downloads-button .toolbarbutton-animatable-box { + display: none !important; +} + +#downloads-button[indicator] + > .toolbarbutton-badge-stack + > image.toolbarbutton-icon { + display: unset !important; +} + +toolbarpaletteitem[mousedown] > toolbarbutton > .toolbarbutton-icon, +toolbarpaletteitem[mousedown] + > toolbarbutton + > .toolbarbutton-badge-stack + > .toolbarbutton-icon { + transform: none !important; +} + +.urlbarView-favicon { + margin-inline-start: 3px !important; + margin-inline-end: 5px !important; +} + +#urlbar[open] > #urlbar-background { + box-shadow: none !important; +} + +/*.urlbarView { + border-inline: 0 !important; + margin-inline: 0 !important; + width: calc(100% + 16px) !important; + padding: 0 !important; + border-inline: 1px solid red; +} + +.urlbarView-body-outer { + border: 1px solid #000; + background-color: Window !important; +}*/ + +.urlbarView-results { + padding-block: 0 !important; +} + +.webextension-browser-action .toolbarbutton-badge-stack { + padding: 0 !important; +} + +#PanelUI-menu-button { + list-style-image: none !important; +} + +#PersonalToolbar + .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover, +#tabbrowser-arrowscrollbox:not([scrolledtostart="true"])::part( + scrollbutton-up + ):hover, +#tabbrowser-arrowscrollbox:not([scrolledtoend="true"])::part( + scrollbutton-down + ):hover, +toolbarbutton.bookmark-item:not( + .subviewbutton, + [disabled="true"], + [open] + ):hover, +toolbar + .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover + > .toolbarbutton-icon, +toolbar + .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover + > .toolbarbutton-text, +toolbar + .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover + > .toolbarbutton-badge-stack { + background: transparent !important; +} + +#BMB_bookmarksPopup { + box-shadow: none !important; + padding: 0 !important; +} + +#tabbrowser-tabs, +#tabbrowser-arrowscrollbox, +#tabbrowser-tabs[positionpinnedtabs] + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab[pinned] { + min-height: 0 !important; +} + +#favimginurlbar[style='width: 16px; height: 16px; margin: 3px; list-style-image: url("chrome://branding/content/icon32.png");'] +{ + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; +} + +#PlacesChevron, +#nav-bar-overflow-button { + width: 16px !important; + height: 100% !important; + border: 1px solid transparent; + list-style-image: none !important; + padding: 0 !important; +} + +#personal-toolbar-empty-description, +#PersonalToolbar .toolbarbutton-1, +toolbarbutton.bookmark-item:not(.subviewbutton) { + margin: 0 !important; +} + +#PlacesChevron .toolbarbutton-icon, +#nav-bar-overflow-button .toolbarbutton-icon { + mask-position: center 4px; + width: 8px !important; + height: 100% !important; + padding: 6px !important; + margin: 0 !important; + background-color: WindowText !important; + mask-repeat: no-repeat; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAoSURBVBhXYwCC/1AMA+h8MMCpiBFEQAFMAUwMWQNCBxSg8PFIMjAAAMnUEfGcoUqiAAAAAElFTkSuQmCC") !important; +} + +findbar { + background-color: ThreeDFace !important; + color: WindowText !important; + transition: none !important; + border-top: 0 !important; + padding-block-start: 4px !important; + padding-block-end: 4px !important; +} + +.findbar-textbox { + border-radius: 0 !important; + border: 0 !important; + -moz-default-appearance: listbox !important; + -moz-appearance: listbox !important; + background-color: unset !important; + padding: 0px 3px !important; + height: 22px !important; +} + +.findbar-find-previous, +.findbar-find-next { + padding: 0 !important; + width: 22px !important; + min-height: 22px !important; + border-radius: 0 !important; + mask-repeat: no-repeat !important; + mask-position: center center !important; + border: 1px solid transparent; + background-color: -moz-Dialog !important; +} + +.findbar-find-previous { + margin-inline: 4px 0 !important; +} + +.findbar-find-next { + margin-inline-end: 4px !important; +} + +hbox[anonid="findbar-textbox-wrapper"]::after { + content: "" !important; + height: 20px !important; + display: inline-block !important; + border-left: 1px solid ThreeDShadow !important; + border-right: 1px solid ThreeDHighlight !important; +} + +.findbar-find-previous:not([disabled="true"]):hover, +.findbar-find-next:not([disabled="true"]):hover { + box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; +} + +.findbar-find-previous:not([disabled="true"]):active, +.findbar-find-next:not([disabled="true"]):active { + box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; +} + +.findbar-find-previous .toolbarbutton-icon, +.findbar-find-next .toolbarbutton-icon { + list-style-image: none !important; + mask-repeat: no-repeat !important; + mask-position: center center !important; + background-color: WindowText !important; + padding: 0 !important; + min-width: 20px; + min-height: 20px; +} + +.findbar-find-next .toolbarbutton-icon { + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAkSURBVBhXY2RgYPgPxFgBSBIEsClghEmCALICZHE4QFLAwAAA+twEAr6ulF8AAAAASUVORK5CYII=") !important; +} + +.findbar-find-previous .toolbarbutton-icon { + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAlSURBVBhXY0AD/6E0GDBCaRBAlgCLwyRRdEABI0gSmwQQMDAAAPqFBAIR7Pg5AAAAAElFTkSuQmCC") !important; +} + +.findbar-container { + height: 22px !important; + margin-inline-start: 0 !important; + overflow-inline: unset !important; +} + +.findbar-container::before { + content: "Find:" !important; + display: inline-block !important; + margin-inline-start: 4px !important; + margin-inline-end: 4px !important; +} + +.findbar-textbox:focus { + outline: 0 !important; +} + +.toolbarbutton.tabbable { + padding: 0 !important; +} + +.browserContainer > findbar, +.close-icon.findbar-closebutton { + order: -1; +} + +.close-icon.findbar-closebutton, +.infobar.container .notification-close { + list-style-image: none !important; + height: 22px !important; + width: 22px !important; + border-radius: 0 !important; + padding: 0 !important; + margin: 0 !important; + margin-inline-start: 4px !important; + margin-inline-end: 4px !important; + background-color: WindowText !important; + fill: WindowText !important; + mask-repeat: no-repeat !important; + mask-position: center center !important; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURQAAAAAAAKVnuc8AAAACdFJOU/8A5bcwSgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAACRJREFUGFdjYGBgBAIgBWaBSTAbSEG5yAwQDVUBEQTRjIwMDAADqAAZRZMazAAAAABJRU5ErkJggg==") !important; +} + +#sidebar-box { + margin-right: 4px; + appearance: groupbox !important; + background-color: ThreeDFace !important; +} + +#historyTree, +#bookmarks-view, +#template-container { + background-color: Window !important; +} + +treecol, +treecolpicker { + border: 0 !important; +} + +#sidebar-search-container, +#sidebar-header { + font: Menu !important; + box-shadow: inset 0 -1px ThreeDShadow !important; + border-bottom: 1px solid ThreeDHighlight !important; +} + +#sidebar-icon { + list-style-image: none !important; + width: 0 !important; + height: 0 !important; +} + +#sidebar-header { + padding: 1px !important; + padding-bottom: 2px !important; +} + +#sidebar-close { + width: 20px !important; + height: 17px !important; + border: 1px solid transparent; + background-color: transparent !important; + padding: 0 !important; + list-style-image: none !important; + border-radius: 0 !important; +} + +#sidebar-close .toolbarbutton-icon { + background-color: WindowText !important; + width: 8px !important; + height: 7px !important; + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA4SURBVBhXY2RgYPgPxCAAYiMDmDgYgDjIAnA+si4UHUCAbiIYoJtEvAnoOuF8kCqYBLqdQHEGBgAx7A/5GaSbcgAAAABJRU5ErkJggg==") !important; +} + +#sidebar-title { + padding-inline: 0 !important; +} + +#sidebar-switcher-arrow { + display: none !important; +} + +#sidebar-switcher-target { + padding: 3px 5px !important; + border: 0 !important; + border-radius: 0 !important; + background-color: transparent !important; +} + +#sidebar-switcher-target:hover { + box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; +} + +#sidebar-switcher-target:hover { + box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; +} + +#sidebar-switcher-target[open="true"] { + box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; +} + +#sidebar-switcher-target[open="true"] #sidebar-title { + transform: translate(1px, 1px); +} + +#sidebar-search-container { + padding: 2px !important; +} + +.textbox-search-sign { + display: none !important; +} + +#viewButton { + appearance: button !important; +} + +#search-box { + padding: 2px !important; +} + +.content-header { + background-color: ThreeDFace !important; +} + +.sidebar-search-container { + padding: 2px !important; +} + +.tabsFilter { + margin: 0 !important; +} + +#main-window:-moz-window-inactive .menubar-text, +#wrapper-menubar-items .menubar-text { + color: ThreeDShadow; +} + +.menu-text, +.menu-iconic-text { + margin-inline-start: 0 !important; +} + +.menu-iconic-icon { + margin-left: -2px !important; +} + +#main-menubar { + display: flex !important; +} + +treechildren::-moz-tree-row { + height: 40% !important; + min-height: 40% !important; +} + +treechildren::-moz-tree-image(title, query, dayContainer), +treechildren::-moz-tree-image(query, OrganizerQuery_history____v) { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAeUExURWOczjExnDFjzmNjAJycY////87OnAAAAJwxYwAAAAggbzMAAAAKdFJOU////////////wCyzCzPAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAATElEQVQoU23PUQpAIQhEUX2Z5v433CCPGKNDX5cmSDKFqeTHFEHZQLA5/RyLV3Bf4OW/serQ5AqPyfUohxGCxWGGMJqaNAjR4fsscwNQNAUR4NgQXAAAAABJRU5ErkJggg==") !important; +} + +.titlebar-button { + list-style-image: none !important; + height: 20px !important; + min-width: 20px !important; + padding: 0 !important; + margin-top: 2px !important; +} + +.titlebar-min { + appearance: -moz-window-button-minimize !important; +} + +.titlebar-restore { + appearance: -moz-window-button-restore !important; +} + +.titlebar-max { + appearance: -moz-window-button-maximize !important; +} + +.titlebar-close { + appearance: -moz-window-button-close !important; +} + +.notification-anchor-icon { + padding: 0 !important; + margin-inline-start: 2px !important; +} + +.bookmark-item, +.bookmark-item > label::before, +.bookmark-item .menu-iconic-icon { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; +} + +.tab-icon-image:not([src]), +.tab-icon-image:-moz-broken { + content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; +} + +.desktop-notification-icon { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAPUExURYCAgP///wAAAMDAwAAAAGFF8HEAAAAFdFJOU/////8A+7YOUwAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAFlJREFUKFNdjkESwDAIAhPk/28uYG2b7sEJO4xxUazGT2qutRsgYqIomUNsKCpDeKTyLGig3d0IIz5Y1N1wLonzW0US9eYIIqrgHNEqcYSUrzQjVPoJ3axBXuvmAgsbIC+oAAAAAElFTkSuQmCC") !important; +} + +:root[sizemode="maximized"] .browserStack { + margin-left: -2px !important; + margin-right: -2px !important; +} + +#PanelUI-menu-button .toolbarbutton-icon { + display: none !important; +} + +#PanelUI-menu-button { + padding: 0 !important; + border: 0 !important; +} + +#PanelUI-menu-button .toolbarbutton-badge-stack { + padding: 0 !important; +} + +.checkbox-check { + background-color: Window !important; + border: 0 !important; + border-radius: 0 !important; + box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow, + inset -2px -2px 0 ThreeDFace, inset 2px 2px 0 ThreeDDarkShadow; +} + +.checkbox-check:not([native]) { + width: 13px !important; + height: 13px !important; +} + +.checkbox-check[checked] { + color: WindowText !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHZlcnNpb249IjEuMSIgZmlsbD0iY29udGV4dC1maWxsIiBmaWxsLW9wYWNpdHk9ImNvbnRleHQtZmlsbC1vcGFjaXR5IiB2aWV3Qm94PSIwIDAgMy40Mzk2IDMuNDM5NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Zz48Zz48cmVjdCB4PSIuNzkzNzUiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIyLjM4MTIiIHk9Ii43OTM3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIyLjExNjciIHk9IjEuMDU4MyIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIxLjg1MjEiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIxLjA1ODMiIHk9IjEuODUyMSIgd2lkdGg9Ii43OTM3NSIgaGVpZ2h0PSIuNTI5MTciLz48cmVjdCB4PSIxLjMyMjkiIHk9IjIuMzgxMiIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48cmVjdCB4PSIxLjA1ODMiIHk9IjEuNTg3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48cmVjdCB4PSIxLjU4NzUiIHk9IjEuNTg3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48L2c+PC9nPjwvc3ZnPgo=") !important; +} + +#urlbar-zoom-button { + margin: 0 !important; + font: menu !important; + border-radius: 0 !important; + background-color: transparent !important; +} + +#configuration_toolbar { + -moz-box-ordinal-group: 12; +} + +#customization-panelWrapper > .panel-arrowbox > .panel-arrow[side="top"] { + display: none !important; +} + +.customizationmode-button { + appearance: button !important; + color: WindowText !important; + font-weight: 500 !important; +} + +:root[inFullscreen] #TabsToolbar { + -moz-box-ordinal-group: 0 !important; +} + +:root[inFullscreen] .tabbrowser-tab::before { + display: none !important; +} + +:root[inFullscreen] #tabbrowser-tabs tab:first-of-type:last-of-type, +:root[inFullscreen] + #tabbrowser-tabs + tab:first-of-type:last-of-type + ~ #tabs-newtab-button, +:root[inFullscreen] + #tabbrowser-tabs + tab:first-of-type:last-of-type + ~ #tabbrowser-arrowscrollbox-periphery + #tabs-newtab-button { + display: flex !important; +} + +#placesToolbar { + padding: 1px !important; + appearance: groupbox !important; + background-color: -moz-Dialog !important; + margin-bottom: 2px !important; +} + +#placesToolbar .toolbarbutton-text { + display: none !important; +} + +#placesToolbar .menu-iconic:hover .menubar-left, +#placesToolbar .menu-iconic[open="true"] .menubar-left, +#placesToolbar #back-button:not([disabled="true"]):hover .toolbarbutton-icon, +#placesToolbar + #forward-button:not([disabled="true"]):hover + .toolbarbutton-icon { + filter: none !important; +} + +#searchFilter { + min-height: 22px !important; +} + +#placesList, +#downloadsListBox, +tree { + background-color: Window !important; + color: -moz-DialogText !important; +} + +#detailsPane { + background-color: -moz-Dialog !important; + color: -moz-dialogText !important; +} + +#placeContent, +#placesViewsBox #downloadsListBox, +#placesList, +#searchFilter, +#editBMPanel_tagsSelector { + -moz-default-appearance: listbox !important; + -moz-appearance: listbox !important; + color: -moz-DialogText !important; +} + +#places input { + background-color: Field !important; + color: -moz-DialogText !important; + border: 0 !important; + border-radius: 0 !important; +} + +#searchFilter[focused], +#places input:focus { + outline: 0 !important; +} + +#searchFilter[focused] { + box-shadow: none !important; +} + +#editBookmarkPanelRows .expander-up, +#editBookmarkPanelRows .expander-down { + appearance: spinner-downbutton !important; + list-style-image: none !important; + padding: 2px !important; + height: 22px !important; +} + +#editBookmarkPanelRows .expander-up { + appearance: spinner-upbutton !important; +} + +#placesList { + border-right: unset !important; + margin-right: 4px !important; +} + +treecol { + color: -moz-fieldtext !important; + padding: 0 7px !important; + box-shadow: inset -1px -1px 0 ThreeDDarkShadow, + inset 1px 1px 0 ThreeDHighlight, inset -2px -2px 0 ThreeDShadow !important; +} + +treechildren::-moz-tree-row, +treecol:not([hideheader="true"]), +treecolpicker { + min-height: 17px !important; +} + +.caption-label { + margin-inline-start: 6px !important; + color: GrayText !important; + font: -moz-window !important; +} + +#editBMPanel_tagsSelectorRow > richlistbox > richlistitem[selected] { + color: HighlightText !important; + background-color: Highlight !important; +} + +richlistbox[seltype="multiple"]:focus > richlistitem[current="true"], +richlistbox.theme-listbox:focus > richlistitem[current="true"] { + outline: 0 !important; +} + +#placesMenu > menu { + appearance: button !important; + color: -moz-DialogText !important; +} + +#organizeButton { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAzUExURZmZmf/78Ofn1k1NTcDAwBwcHOrq6mZmAK2pkDMzAP//mZmZAMzMZgAAADMAAGZmZgAAAIQzlaMAAAARdFJOU/////////////////////8AJa2ZYgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAHxJREFUKFNVzgEOAyEIBECw1T0Blf+/tnD2GktCjJN1Ix3jOURcvvN64F1rpdJOYKb/RAJwQBSCGT+4er8gCle9oRQ0TdAMbVAkxLGhiwgsQhKRBHSIAZahDWAVFlMeN7S4Y7LNaB1Oay3EG2DMaI3S/Ax67Ih9ICfR3f0DrmQINMNg/hUAAAAASUVORK5CYII=") !important; +} + +#viewMenu { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB4SURBVDhP7ZLNCcAgDIVfulIzg6t0DU/uUGfSmWziT+lJUKH00A8CiZGXPBGrEJBSzSegIrCfksdyNEL0WcAubGAB51yaIYSgg9NWlAA+xBH7nBPJahKNXu8WiLFcUGRAjkav91v4ggVSC8aYWo7BzPqV8XiR1wEuUzD3/j0F1pEAAAAASUVORK5CYII=") !important; +} + +#maintenanceButton { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURQAAADPM/zNm/5n//8z//zOZ/wAAAACTM88AAAAHdFJOU////////wAaSwNGAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAT0lEQVQoU62PiQ3AIAwDnXf/kWsXChmgJ2GFk4gFmuDNhUaYX8MJFsOA98yqY+AkCwsJHglmKaeIf4W7Oil2tfCIKBV/Qsb05oi5Y6PvdD8/ggRHRlWf0AAAAABJRU5ErkJggg==") !important; +} + +#placesToolbar > toolbarbutton[disabled] { + opacity: 1 !important; +} + +#placesToolbar > toolbarbutton { + border-radius: 0 !important; + appearance: button !important; + background-color: -moz-Dialog !important; + border: 1px solid transparent; + padding: 4px !important; +} + +.tabbrowser-tab[pinned] .tab-label-container { + display: none !important; +} + +.tabbrowser-tab[pinned]:not([selected="true"]) .tab-icon-overlay { + pointer-events: none !important; +} + +.tab-icon-overlay:not([crashed]):is([pinned], [sharing]) { + top: unset !important; + inset-inline-end: unset !important; + padding: 0 !important; + background-color: transparent !important; +} + +#context-navigation .menu-iconic-left { + padding-top: 0 !important; +} + +.urlbarView-results[wrap] + > .urlbarView-row[has-url] + > .urlbarView-row-inner + > .urlbarView-url:-moz-locale-dir(ltr) { + padding-left: 19px !important; +} + +#TabsToolbar .toolbarbutton-1 { + margin: 2px 0 0 !important; +} + +#alltabs-button { + list-style-image: none !important; + padding: 0 5px !important; + min-height: 0 !important; + display: var(--show-alltabs-button) !important; +} + +#alltabs-button .toolbarbutton-icon { + mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAdSURBVDhPYxiB4D8UwwA6Hy+gv2b6aRoFKICBAQA7tRPtf9lgfQAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") !important; + background-color: -moz-DialogText !important; + min-height: 0 !important; + width: 14px !important; + height: 14px !important; +} + +#alltabs-button .toolbarbutton-badge-stack { + padding: 0 !important; +} + +toolbar .toolbarbutton-1 > .toolbarbutton-icon { + height: 16px !important; + width: 16px !important; +} + +#wrapper-new-tab-button .toolbarbutton-icon { + padding: 0 !important; +} + +#wrapper-new-tab-button #new-tab-button { + min-width: 26px !important; +} + +#urlbar-background::after { + content: ""; + display: inline-block; + z-index: 99999; + width: 16px !important; + height: 18px !important; + top: 0px; + position: absolute !important; + right: 0 !important; + background-color: -moz-Dialog !important; + box-shadow: inset -1px -1px 0 ThreeDDarkShadow, inset 1px 1px 0 ThreeDLightShadow, inset -2px -2px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight !important; + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4KICA8cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSI3IiB4PSIzIiB5PSI1IiBmaWxsPSJDYW52YXNUZXh0Ii8+PHJlY3QgaGVpZ2h0PSIxIiB3aWR0aD0iNSIgeT0iNiIgeD0iNCIgZmlsbD0iQ2FudmFzVGV4dCIvPjxyZWN0IGhlaWdodD0iMSIgd2lkdGg9IjMiIHg9IjUiIHk9IjciIGZpbGw9IkNhbnZhc1RleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4PSI2IiB5PSI4IiBmaWxsPSJDYW52YXNUZXh0Ii8+CiAgCiAgCjwvc3ZnPg==") !important; + background-position: center center !important; + pointer-events: none; +} + +#wrapper-menubar-items { + opacity: 1 !important; +} + +#history-menu { + display: var(--show-history-menu-item) !important; +} + +#go-button { + padding: 0 5px !important; + margin-inline-end: 3px !important; + margin-inline-start: 2px !important; +} + +#go-button .toolbarbutton-text { + display: block; + min-height: 0 !important; + padding: 0 0 0 1px !important; +} + +#go-button .toolbarbutton-icon { + padding: 0 !important; + filter: grayscale(1); + list-style-image: url("go.png") !important; +} + +#go-button:hover .toolbarbutton-icon, +#go-button:active .toolbarbutton-icon { + filter: none; +} + +:root[uidensity="touch"] #back-button > .toolbarbutton-icon, +:root[uidensity="touch"] #forward-button > .toolbarbutton-icon, +:root[uidensity="touch"] #stop-button > .toolbarbutton-icon, +:root[uidensity="touch"] #reload-button > .toolbarbutton-icon, +:root[uidensity="touch"] #home-button > .toolbarbutton-icon, +:root[uidensity="touch"] #history-panelmenu > .toolbarbutton-icon, +:root[uidensity="touch"] #bookmarks-menu-button > .toolbarbutton-icon, +:root[uidensity="touch"] #print-button > .toolbarbutton-icon, +:root[uidensity="touch"] #new-window-button > .toolbarbutton-icon, +:root[uidensity="touch"] #cut-button > .toolbarbutton-icon, +:root[uidensity="touch"] #copy-button > .toolbarbutton-icon, +:root[uidensity="touch"] #paste-button > .toolbarbutton-icon, +:root[uidensity="touch"] #fullscreen-button > .toolbarbutton-icon, +:root[uidensity="touch"] #find-button > .toolbarbutton-icon, +:root[uidensity="touch"] #email-link-button > .toolbarbutton-icon, +:root[uidensity="touch"] #sidebar-button > .toolbarbutton-icon, +:root[uidensity="touch"] #library-button > .toolbarbutton-icon, +:root[uidensity="touch"] #downloads-button #downloads-indicator-anchor, +:root[uidensity="touch"] #characterencoding-button > .toolbarbutton-icon, +:root[uidensity="touch"] #preferences-button > .toolbarbutton-icon { + width: 20px !important; + height: 20px !important; + background-image: url("toolbar_large.png") !important; +} + +:root[uidensity="touch"] #nav-bar { + height: 28px; +} + +:root[uidensity="touch"] { + --toolbar-size: -20px !important; +} + +:root[uidensity="touch"] #downloads-button { + width: 28px !important; +} + +:root[uidensity="touch"] #edit-controls .toolbarbutton-1 { + width: 28px !important; +} + +:root[uidensity="touch"] #back-button[disabled="true"] .toolbarbutton-icon, +:root[uidensity="touch"] #forward-button[disabled="true"] .toolbarbutton-icon { + list-style-image: none !important; + background-color: ThreeDShadow !important; + background-image: none !important; + mask-image: url("toolbar_large.png") !important; + filter: drop-shadow(1px 1px 0 ThreeDHighlight) !important; +} + +:root[uidensity="touch"] #back-button[disabled="true"], +:root[uidensity="touch"] #forward-button[disabled="true"] { + filter: drop-shadow(1px 1px 0 ThreeDHighlight) !important; +} + +:root[uidensity="touch"] #back-button[disabled="true"] .toolbarbutton-text, +:root[uidensity="touch"] #forward-button[disabled="true"] .toolbarbutton-text { + text-shadow: none !important; +} + +:root[uidensity="touch"] #search-box, +:root[uidensity="touch"] .sidebar-placesTreechildren::-moz-tree-row { + min-height: 20px !important; +} + +toolbar .toolbaritem-combined-buttons { + margin-inline: 0 !important; +} + +.unified-extensions-item-action.subviewbutton { + border-radius: 0 !important; + height: 100% !important; + width: 24px !important; + background-color: -moz-Dialog !important; +} + +toolbarbutton:where([disabled="true"]) { + text-shadow: none !important; + color: -moz-DialogText !important; +} + +#back-button:where([disabled="true"]), +#forward-button:where([disabled="true"]) { + color: ThreeDShadow !important; + text-shadow: 1px 1px 0 ThreeDHighlight !important; +} + +:root[uidensity="touch"] .unified-extensions-item-action.subviewbutton { + width: 28px !important; +} + +#unified-extensions-button { + padding: 0 !important; + border: 0 !important; +} + +#unified-extensions-button .toolbarbutton-icon, +#unified-extensions-button .toolbarbutton-text { + display: none !important; +} + +.urlbarView-dynamic-quickactions-buttons, +.urlbarView-button-help { + display: none !important; +} + +/*.urlbarView:not([noresults]) > .search-one-offs:not([hidden]) { + border: 1px solid #000000 !important; + margin-top: -1px !important; + background-color: Window !important; +}*/ + +#urlbar .search-one-offs:not([hidden]) { + padding-block: 0 !important; +} + +#urlbar .searchbar-engine-one-off-item { + border-radius: 0 !important; + margin-inline: 0 !important; +} + +.searchbar-engine-one-off-item:not([selected]):hover { + background-color: Highlight !important; + color: HighlightText !important; +} + +#urlbar .search-panel-one-offs-header-label { + padding-inline: 10px !important; +} + +#personal-toolbar-empty-description { + min-height: unset !important; + display: none !important; +} + +.urlbarView { + width: 100% !important; + background-color: Window !important; + border: 1px solid ThreeDShadow !important; + margin-inline: 0 !important; + position: relative !important; + max-width: 100% !important; + position: absolute !important; +} + +.urlbarView::after { + content: ""; + display: inline-block; + width: 16px; + height: 16px; + background-image: url("resizer.png") !important; + position: absolute; + right: 0; + bottom: 0; + z-index: 999999; +} + +#urlbar[breakout][breakout-extend] > #urlbar-input-container { + height: 22px !important; +} + +#urlbar[open] > .urlbarView > .urlbarView-body-outer > .urlbarView-body-inner { + border: 0 !important; +} + +#urlbar .search-one-offs:not([hidden]) { + display: none !important; +} + +#urlbar-input-container { + padding: 0 !important; + border: 0 !important; +} + +#urlbar[breakout] { + top: 0 !important; +} + +.urlbarView-row[label][dynamicType="quickactions"] { + display: none !important; +} + +.urlbarView-results, +.urlbarView-row { + padding-block: 0 !important; + min-height: 14px !important; + border-radius: 0 !important; + border: 0 !important; +} + +.urlbarView-row[type="search"] .urlbarView-action { + display: none !important; +} + +.urlbarView-row[type="search"] .urlbarView-title::before { + content: 'Search for "'; +} + +.urlbarView-row[type="search"] .urlbarView-title::after { + content: '"'; +} + +.urlbarView-title strong, +.urlbarView-url strong { + font-weight: 500 !important; +} + +.urlbarView-row-inner { + border-radius: 0 !important; + padding-block: 0 !important; + min-height: 14px !important; + padding-inline: 0 !important; + margin: 0 !important; + padding: 0 !important; + padding-left: 3px !important; +} + +.urlbarView-row[row-selectable]:not([selected]):hover { + background-color: Highlight !important; + color: HighlightText !important; +} + +.urlbarView-row[label] { + margin-block-start: 0 !important; +} + +.urlbarView-row[label]::before { + display: none !important; +} + +.urlbarView-row[selectable]:hover > .urlbarView-row-inner { + background-color: var(--autocomplete-popup-highlight-background) !important; + color: var(--autocomplete-popup-highlight-color) !important; +} + +.urlbarView-tags, +.urlbarView-url, +.urlbarView-title:not(:empty) ~ .urlbarView-action { + font-size: unset !important; +} + +.urlbarView-title-separator::before, +.urlbarView-type-icon { + display: none !important; +} + +.urlbarView-title-separator { + margin-inline: 2px !important; +} + +.urlbarView-row[selectable]:hover > .urlbarView-row-inner .urlbarView-url, +.urlbarView-row-inner[selectable]:hover .urlbarView-url { + color: HighlightText !important; +} + +.urlbarView-row:not([selected]) .urlbarView-url { + color: LinkText !important; +} + +.urlbarView-row[selected] { + background-color: Highlight !important; + color: HighlightText !important; +} + +.urlbarView-overflowable { + mask-image: none !important; +} + +#page-action-buttons { + display: none !important; +} + +#tab-notification-deck { + -moz-box-ordinal-group: 100 !important; +} + +notification-message { + margin: 0 !important; + border-radius: 0 !important; + border-top: 1px solid ThreeDShadow !important; + box-shadow: inset 0 1px 0 ThreeDHighlight !important; +} + +.container.infobar { + align-items: center !important; + box-shadow: none !important; + border-radius: 0 !important; + background: #fffedf !important; +} + +.container.infobar::before { + display: none !important; +} + +.infobar > .icon { + margin: 0 !important; + display: none !important; +} + +.notification-message { + padding-block: 0 !important; + min-height: unset !important; + position: absolute !important; +} + +.notification-button { + position: absolute !important; + left: 0 !important; + top: 0 !important; + width: calc(100% - 30px) !important; + margin: 0 !important; + border-radius: 0 !important; + border: 0 !important; + font-size: 0 !important; + height: 100% !important; + background: none !important; +} + +toolbarspring { + max-width: 100% !important; + width: 100% !important; +} + +toolbarpaletteitem[place="toolbar"][id^="wrapper-customizableui-special-spring"], +toolbarspring { + max-width: 100% !important; +} + +toolbarpaletteitem[place="toolbar"] > toolbarspring { + outline: 1px dotted !important; +} + +#additional_top_toolbar1 #PlacesToolbarItems { + width: 0 !important; + max-width: 0 !important; +} + +#additional_top_toolbar1 #PlacesChevron { + visibility: visible !important; + width: 12px !important; +} + +#additional_top_toolbar1 #PlacesToolbar::before { + content: "Links" !important; + line-height: 21px !important; + margin-inline: 4px !important; +} + +#additional_top_toolbar1 #personal-bookmarks { + padding-left: 1px !important; + border-left: 1px solid ThreeDShadow !important; + box-shadow: inset 1px 0 0 ThreeDHighlight !important; + margin-right: -1px !important; +} + +#customization-content-container .toolbarbutton-text { + display: none !important; +} + +.statusBarInner { + display: flex; + align-items: center; +} + +.statusBarIcon { + width: 16px; + height: 16px; + background-image: url("page.png"); + margin-left: 2px; +} + +.statusBarDone { + margin-left: 5px; +} + +.urlbarView-button-menu { + display: none !important; +} + +/* ff 113 */ +#personal-bookmarks { + flex-grow: 0 !important; +} +#titlebar > #toolbar-menubar > spacer[style="order: 1000;"] { + display: none; +} + +#context-navigation > .menuitem-iconic { + justify-content: left !important; +} + +/* ff 117 */ +toolbar[brighttext], +&[lwt-popup="dark"] panel { + color-scheme: light !important; +} + +#navigator-toolbox { + &:-moz-lwtheme { + background-image: unset !important; + background-color: unset !important; + + &:-moz-window-inactive { + background-color: unset !important; + } + } +} + +menubar > menu:-moz-window-inactive { + color: ThreeDShadow !important; +} + +#TabsToolbar #firefox-view-button[open] > .toolbarbutton-icon, +.tabbrowser-tab:is([visuallyselected], [multiselected]) { + color: -moz-DialogText !important; + color-scheme: light !important; + font-weight: var(--selected-tab-font-weight); +} + +toolbar .toolbarbutton-1 { + & > .toolbarbutton-icon, + & > .toolbarbutton-text, + & > .toolbarbutton-badge-stack { + padding: 0 !important; + } +} + +:is(label, description)[value][crop] { + min-width: auto !important; +} + +toolbar .toolbarbutton-1 { + & > .toolbarbutton-text { + min-height: 16px !important; + } +} + +menupopup > menu, +menupopup > menuitem, +#context-navigation > menuitem, +.toolbar-menupopup :is(menu, menuitem), +#uc-menugroup > menuitem { + height: 18px !important; + min-height: 18px !important; + border: none !important; + border-radius: 0 !important; + margin: 0 !important; + padding: 0 !important; + padding-block: 0 !important; + padding-inline-start: 20px !important; + + &:has(> .menu-iconic-left[checked="true"]), + &.menuitem-with-favicon, + &.privatetab-icon, + &.context-menu-add-engine, + &[id="userChromejs_openChromeFolder"], + &[id="userChromejs_restartApp"], + &[data-usercontextid]:not([data-usercontextid="0"]), + &[image^="moz-extension://"], + &[image^="jar:file://"], + &[image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg=="] { + padding-inline-start: 0px !important; + } + & > .menu-iconic-left { + margin-inline-end: 0 !important; + &[checked="true"] { + margin-inline-start: 2px !important; + margin-inline-end: 2px !important; + list-style-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZlcnNpb249IjEuMSIgZmlsbD0iY29udGV4dC1maWxsIiBmaWxsLW9wYWNpdHk9ImNvbnRleHQtZmlsbC1vcGFjaXR5IiB2aWV3Qm94PSIwIDAgNC4yMzMzNTM1IDQuMjMzMzUzNSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Zz48Zz48cmVjdCB4PSIxLjMyMjkiIHk9IjEuODUyMSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIyLjkxMDQiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIyLjY0NTkiIHk9IjEuNTg3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIyLjM4MTIiIHk9IjEuODUyMSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIxLjU4NzUiIHk9IjIuMzgxMiIgd2lkdGg9Ii43OTM3NSIgaGVpZ2h0PSIuNTI5MTciLz48cmVjdCB4PSIxLjg1MjEiIHk9IjIuOTEwNCIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48cmVjdCB4PSIxLjU4NzUiIHk9IjIuMTE2NyIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48cmVjdCB4PSIyLjExNjciIHk9IjIuMTE2NyIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48L2c+PC9nPjwvc3ZnPgo=") !important; + fill-opacity: 1 !important; + } + } + &.menuitem-with-favicon, + &.privatetab-icon, + &.context-menu-add-engine, + &[id="userChromejs_openChromeFolder"], + &[id="userChromejs_restartApp"], + &[data-usercontextid]:not([data-usercontextid="0"]), + &[image^="moz-extension://"], + &[image^="jar:file://"], + &[image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg=="] { + & > .menu-iconic-left { + width: 16px !important; + margin-inline-start: 2px !important; + margin-inline-end: 2px !important; + } + } + &[_moz-menuactive] { + background-color: Highlight !important; + color: HighlightText !important; + } + & > .menu-right { + margin-inline-end: 0 !important; + list-style-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI3IiB5PSIzIiB4PSI2IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI1IiB5PSI0IiB4PSI3IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIzIiB5PSI1IiB4PSI4IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI2IiB4PSI5IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4=") !important; + fill-opacity: 1 !important; + } + &[disabled="true"], + &.disabled, + &.noOptions { + color: ThreeDShadow !important; + text-shadow: 1px 1px 0 ThreeDHighlight !important; + + &[_moz-menuactive="true"] { + text-shadow: none !important; + } + } + + &[restartless="true"] { + color: LinkText !important; + } + + &:not([disabled]) > .menu-accel-container > :is(.menu-accel, .menu-iconic-accel) { + color: -moz-DialogText !important; + } +} + +menuseparator { + padding-inline: 1px !important; + + &[hidden="true"] { + padding: 0 !important; + padding-block: 0 !important; + padding-inline: 0 !important; + + &::before { + display: none; + } + } +} + +tooltip { + background-color: Window !important; + color: -moz-DialogText !important; + border-color: -moz-DialogText !important; + border-radius: 0 !important; +} + +#userChromejs_openChromeFolder { + list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURZmZAAAAAPHx8f//zP//mczMZv/MmQAAAHwygQUAAAAIdFJOU/////////8A3oO9WQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAFBJREFUKFNdz0kSwCAIBVEICPe/cT5DkWC74slCya8AFHHPAHpEVEeITpV7uS9fejhAJ1tgOHsD8oO43xspA3VvDT1hLuiHVQDnVXxud4H7C0+1BHuF0oyhAAAAAElFTkSuQmCC") !important; +} + +#userChromejs_restartApp { + list-style-image: url("go.png") !important; + width: 18px !important; +} diff --git a/chrome/toolbar-label-under-icon.css b/chrome/msfx/toolbar-label-under-icon.css similarity index 100% rename from chrome/toolbar-label-under-icon.css rename to chrome/msfx/toolbar-label-under-icon.css diff --git a/chrome/msfx/toolbar.png b/chrome/msfx/toolbar.png new file mode 100644 index 0000000..9e1fc01 Binary files /dev/null and b/chrome/msfx/toolbar.png differ diff --git a/chrome/msfx/toolbar_large.png b/chrome/msfx/toolbar_large.png new file mode 100644 index 0000000..5e421a5 Binary files /dev/null and b/chrome/msfx/toolbar_large.png differ diff --git a/chrome/scrollbar.uc.js b/chrome/scrollbar.uc.js index 783df67..f8a9c70 100644 --- a/chrome/scrollbar.uc.js +++ b/chrome/scrollbar.uc.js @@ -1,146 +1,149 @@ (function () { var css = `@media all and (-moz-overlay-scrollbars) { - scrollbar[root="true"] { - position: relative; - z-index: 2147483647; - } - - scrollbar:not([active="true"]), - scrollbar[disabled="true"] { - visibility: hidden; - } -} - -scrollbar -{ - color-scheme: light !important; - -moz-default-appearance: none; - -moz-binding: url("chrome://global/content/bindings/scrollbar.xml#scrollbar"); - cursor: default; - min-width: 16px !important; - background-repeat: repeat !important; - background-color: ThreeDHighlight !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdib3g9IjAgMCAyIDIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9Ii1tb3otZGlhbG9nIi8+PHJlY3QgZmlsbD0iVGhyZWVESGlnaGxpZ2h0IiB4PSIxIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0iLW1vei1kaWFsb2ciLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIHg9IjAiIHk9IjEiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48L3N2Zz4=") !important; - opacity: 1 !important; -} - -thumb -{ - color-scheme: light !important; - -moz-default-appearance: none !important; - position: relative !important; - background-color: -moz-Dialog !important; - min-height: 8px !important; - pointer-events: auto !important; - border: 0 !important; - box-shadow: inset -1px -1px 0 WindowFrame, inset 1px 1px 0 -moz-Dialog, inset -2px -2px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight !important; -} - -thumb[orient="horizontal"] { - -moz-default-appearance: none; - min-height: 16px !important; - min-width: 8px !important; - max-width: 100% !important; - background-repeat: no-repeat !important; -} - -scrollbarbutton -{ - color-scheme: light !important; - min-width: 16px !important; - min-height: 16px !important; - -moz-default-appearance: none !important; - background-color: -moz-Dialog !important; - box-shadow: inset -1px -1px 0 WindowFrame, inset 1px 1px 0 -moz-Dialog, inset -2px -2px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight !important; -} - -scrollbarbutton:not(.disabled):hover:active -{ - background-color: -moz-dialog !important; - border: 1px solid ThreeDShadow !important; - box-shadow: none !important; -} - -slider, -slider[orient="vertical"] -{ - color-scheme: light !important; - -moz-default-appearance: none; -} - -scrollcorner -{ - color-scheme: light !important; - -moz-default-appearance: none !important; - -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar-base); - width: 16px; - cursor: default; - background-color: -moz-dialog; !important; -} - -scrollbarbutton[type="increment"] -{ - -moz-default-appearance: none; - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI3IiB5PSI0IiB4PSI1IiBmaWxsPSJtZW51dGV4dCIvPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjUiIHk9IjUiIHg9IjYiIGZpbGw9Im1lbnV0ZXh0Ii8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMyIgeT0iNiIgeD0iNyIgZmlsbD0ibWVudXRleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI3IiB4PSI4IiBmaWxsPSJtZW51dGV4dCIvPg0KCQ0KCQ0KPC9zdmc+") !important; - background-position: center center !important; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="increment"] -{ - -moz-default-appearance: none; - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSI3IiB4PSIzIiB5PSI1IiBmaWxsPSJtZW51dGV4dCIvPjxyZWN0IGhlaWdodD0iMSIgd2lkdGg9IjUiIHk9IjYiIHg9IjQiIGZpbGw9Im1lbnV0ZXh0Ii8+PHJlY3QgaGVpZ2h0PSIxIiB3aWR0aD0iMyIgeD0iNSIgeT0iNyIgZmlsbD0ibWVudXRleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4PSI2IiB5PSI4IiBmaWxsPSJtZW51dGV4dCIvPg0KCQ0KCQ0KPC9zdmc+") !important; - background-position: center center !important; -} - -scrollbarbutton[type="decrement"] -{ - -moz-default-appearance: none; - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI3IiB5PSI0IiB4PSI4IiBmaWxsPSJtZW51dGV4dCIvPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjUiIHk9IjUiIHg9IjciIGZpbGw9Im1lbnV0ZXh0Ii8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMyIgeT0iNiIgeD0iNiIgZmlsbD0ibWVudXRleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI3IiB4PSI1IiBmaWxsPSJtZW51dGV4dCIvPg0KCQ0KCQ0KPC9zdmc+") !important; - background-position: center center !important; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"] -{ - -moz-default-appearance: none; - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSI3IiB5PSI4IiB4PSIzIiBmaWxsPSJtZW51dGV4dCIvPjxyZWN0IGhlaWdodD0iMSIgd2lkdGg9IjUiIHg9IjQiIHk9IjciIGZpbGw9Im1lbnV0ZXh0Ii8+PHJlY3QgaGVpZ2h0PSIxIiB3aWR0aD0iMyIgeT0iNiIgeD0iNSIgZmlsbD0ibWVudXRleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI1IiB4PSI2IiBmaWxsPSJtZW51dGV4dCIvPg0KCQ0KCQ0KPC9zdmc+") !important; - background-position: center center !important; -} - -scrollbarbutton[type="increment"][disabled="true"] -{ - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjciIHk9IjQiIHg9IjUiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIyIiBmaWxsPSJUaHJlZURIaWdobGlnaHQiIHg9IjYiIHk9IjEwIi8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMiIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0IiB4PSI3IiB5PSI5Ii8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMiIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0IiB4PSI4IiB5PSI4Ii8+PHJlY3Qgd2lkdGg9IjEiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIgaGVpZ2h0PSIxIiB5PSI4IiB4PSI5Ii8+PHJlY3QgZmlsbD0iVGhyZWVEU2hhZG93IiB3aWR0aD0iMSIgaGVpZ2h0PSI1IiB5PSI1IiB4PSI2Ii8+PHJlY3QgZmlsbD0iVGhyZWVEU2hhZG93IiB3aWR0aD0iMSIgaGVpZ2h0PSIzIiB5PSI2IiB4PSI3Ii8+PHJlY3QgZmlsbD0iVGhyZWVEU2hhZG93IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI3IiB4PSI4Ii8+DQoJDQoJDQo8L3N2Zz4="); - background-position: center center !important; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="increment"][disabled="true"] -{ - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjciIHg9IjMiIHk9IjUiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjIiIHk9IjYiIHg9IjkiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjIiIHk9IjciIHg9IjgiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjIiIHg9IjciIHk9IjgiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjEiIHg9IjciIHk9IjkiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjUiIHk9IjYiIHg9IjQiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjMiIHg9IjUiIHk9IjciLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHg9IjYiIHk9IjgiLz4NCgkNCgkNCjwvc3ZnPg=="); - background-position: center center !important; -} - -scrollbarbutton[type="decrement"][disabled="true"] -{ - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjciIHk9IjQiIHg9IjgiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI3IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiIHk9IjUiIHg9IjkiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjUiIHk9IjUiIHg9IjciLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjMiIHk9IjYiIHg9IjYiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHk9IjciIHg9IjUiLz4NCgkNCgkNCjwvc3ZnPg=="); - background-position: center center !important; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"][disabled="true"] -{ - background-repeat: no-repeat !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjciIHk9IjgiIHg9IjMiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIHdpZHRoPSI3IiBoZWlnaHQ9IjEiIHk9IjkiIHg9IjQiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjUiIHg9IjQiIHk9IjciLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjMiIHk9IjYiIHg9IjUiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHk9IjUiIHg9IjYiLz4NCgkNCgkNCjwvc3ZnPg==") !important; - background-position: center !important; -}`; + scrollbar[root="true"] { + position: relative; + z-index: 2147483647; + } + + scrollbar:not([active="true"]), + scrollbar[disabled="true"] { + visibility: hidden; + } + } + + scrollbar + { + color-scheme: light !important; + -moz-default-appearance: none; + -moz-binding: url("chrome://global/content/bindings/scrollbar.xml#scrollbar"); + cursor: default; + min-width: 16px !important; + background-color: ThreeDHighlight !important; + opacity: 1 !important; + } + + thumb + { + color-scheme: light !important; + -moz-default-appearance: none !important; + position: relative !important; + background-color: -moz-Dialog !important; + min-height: 8px !important; + pointer-events: auto !important; + border: 0 !important; + box-shadow: inset -1px -1px 0 WindowFrame, inset 1px 1px 0 -moz-Dialog, inset -2px -2px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight !important; + } + + thumb[orient="horizontal"] { + -moz-default-appearance: none; + min-height: 16px !important; + min-width: 8px !important; + max-width: 100% !important; + background-repeat: no-repeat !important; + } + + scrollbarbutton + { + color-scheme: light !important; + min-width: 16px !important; + min-height: 16px !important; + -moz-default-appearance: none !important; + background-color: -moz-Dialog !important; + box-shadow: inset -1px -1px 0 WindowFrame, inset 1px 1px 0 -moz-Dialog, inset -2px -2px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight !important; + } + + scrollbarbutton:not(.disabled):hover:active + { + background-color: -moz-dialog !important; + border: 1px solid ThreeDShadow !important; + box-shadow: none !important; + } + + slider, + slider[orient="vertical"] + { + color-scheme: light !important; + -moz-default-appearance: none; + background-color: ThreeDHighlight !important; + background-repeat: repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAuNTI5MTcgLjUyOTE3IiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnPjxnPjxyZWN0IHg9Ii4yNjQ1OCIgeT0iMC4wMDAwIiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVEU2hhZG93Ii8+PHJlY3QgeD0iMC4wMDAwIiB5PSIuMjY0NTgiIHdpZHRoPSIuMjY0NTgiIGhlaWdodD0iLjI2NDU4IiBmaWxsPSJUaHJlZURTaGFkb3ciLz48cmVjdCB4PSIwLjAwMDAiIHk9IjAuMDAwMCIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIvPjxyZWN0IHg9Ii4yNjQ1OCIgeT0iLjI2NDU4IiB3aWR0aD0iLjI2NDU4IiBoZWlnaHQ9Ii4yNjQ1OCIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0Ii8+PC9nPjwvZz48L3N2Zz4=") !important; + } + + scrollcorner + { + color-scheme: light !important; + -moz-default-appearance: none !important; + -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar-base); + width: 16px; + cursor: default; + background-color: -moz-dialog; !important; + } + + scrollbarbutton[type="increment"] + { + -moz-default-appearance: none; + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4KICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI3IiB5PSI0IiB4PSI1IiBmaWxsPSJDYW52YXNUZXh0Ii8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iNSIgeT0iNSIgeD0iNiIgZmlsbD0iQ2FudmFzVGV4dCIvPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjMiIHk9IjYiIHg9IjciIGZpbGw9IkNhbnZhc1RleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI3IiB4PSI4IiBmaWxsPSJDYW52YXNUZXh0Ii8+CiAgCiAgCjwvc3ZnPg==") !important; + background-position: center center !important; + } + + scrollbar[orient="vertical"] > scrollbarbutton[type="increment"] + { + -moz-default-appearance: none; + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4KICA8cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSI3IiB4PSIzIiB5PSI1IiBmaWxsPSJDYW52YXNUZXh0Ii8+PHJlY3QgaGVpZ2h0PSIxIiB3aWR0aD0iNSIgeT0iNiIgeD0iNCIgZmlsbD0iQ2FudmFzVGV4dCIvPjxyZWN0IGhlaWdodD0iMSIgd2lkdGg9IjMiIHg9IjUiIHk9IjciIGZpbGw9IkNhbnZhc1RleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4PSI2IiB5PSI4IiBmaWxsPSJDYW52YXNUZXh0Ii8+CiAgCiAgCjwvc3ZnPg==") !important; + background-position: center center !important; + } + + scrollbarbutton[type="decrement"] + { + -moz-default-appearance: none; + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4KICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI3IiB5PSI0IiB4PSI4IiBmaWxsPSJDYW52YXNUZXh0Ii8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iNSIgeT0iNSIgeD0iNyIgZmlsbD0iQ2FudmFzVGV4dCIvPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjMiIHk9IjYiIHg9IjYiIGZpbGw9IkNhbnZhc1RleHQiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI3IiB4PSI1IiBmaWxsPSJDYW52YXNUZXh0Ii8+CiAgCiAgCjwvc3ZnPg==") !important; + background-position: center center !important; + } + + scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"] + { + -moz-default-appearance: none; + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4KCTxyZWN0IGhlaWdodD0iMSIgd2lkdGg9IjciIHk9IjgiIHg9IjMiIGZpbGw9IkNhbnZhc1RleHQiLz48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSI1IiB4PSI0IiB5PSI3IiBmaWxsPSJDYW52YXNUZXh0Ii8+PHJlY3QgaGVpZ2h0PSIxIiB3aWR0aD0iMyIgeT0iNiIgeD0iNSIgZmlsbD0iQ2FudmFzVGV4dCIvPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHk9IjUiIHg9IjYiIGZpbGw9IkNhbnZhc1RleHQiLz4KCQoJCjwvc3ZnPg==") !important; + background-position: center center !important; + } + + scrollbarbutton[type="increment"][disabled="true"] + { + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjciIHk9IjQiIHg9IjUiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIyIiBmaWxsPSJUaHJlZURIaWdobGlnaHQiIHg9IjYiIHk9IjEwIi8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMiIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0IiB4PSI3IiB5PSI5Ii8+PHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMiIgZmlsbD0iVGhyZWVESGlnaGxpZ2h0IiB4PSI4IiB5PSI4Ii8+PHJlY3Qgd2lkdGg9IjEiIGZpbGw9IlRocmVlREhpZ2hsaWdodCIgaGVpZ2h0PSIxIiB5PSI4IiB4PSI5Ii8+PHJlY3QgZmlsbD0iVGhyZWVEU2hhZG93IiB3aWR0aD0iMSIgaGVpZ2h0PSI1IiB5PSI1IiB4PSI2Ii8+PHJlY3QgZmlsbD0iVGhyZWVEU2hhZG93IiB3aWR0aD0iMSIgaGVpZ2h0PSIzIiB5PSI2IiB4PSI3Ii8+PHJlY3QgZmlsbD0iVGhyZWVEU2hhZG93IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB5PSI3IiB4PSI4Ii8+DQoJDQoJDQo8L3N2Zz4="); + background-position: center center !important; + } + + scrollbar[orient="vertical"] > scrollbarbutton[type="increment"][disabled="true"] + { + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjciIHg9IjMiIHk9IjUiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjIiIHk9IjYiIHg9IjkiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjIiIHk9IjciIHg9IjgiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjIiIHg9IjciIHk9IjgiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIGhlaWdodD0iMSIgd2lkdGg9IjEiIHg9IjciIHk9IjkiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjUiIHk9IjYiIHg9IjQiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjMiIHg9IjUiIHk9IjciLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHg9IjYiIHk9IjgiLz4NCgkNCgkNCjwvc3ZnPg=="); + background-position: center center !important; + } + + scrollbarbutton[type="decrement"][disabled="true"] + { + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHdpZHRoPSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjciIHk9IjQiIHg9IjgiLz48cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSI3IiBmaWxsPSJUaHJlZURIaWdobGlnaHQiIHk9IjUiIHg9IjkiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjUiIHk9IjUiIHg9IjciLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjMiIHk9IjYiIHg9IjYiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHk9IjciIHg9IjUiLz4NCgkNCgkNCjwvc3ZnPg=="); + background-position: center center !important; + } + + scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"][disabled="true"] + { + background-repeat: no-repeat !important; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE1IDE1Ij4NCgk8cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjciIHk9IjgiIHg9IjMiLz48cmVjdCBmaWxsPSJUaHJlZURIaWdobGlnaHQiIHdpZHRoPSI3IiBoZWlnaHQ9IjEiIHk9IjkiIHg9IjQiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjUiIHg9IjQiIHk9IjciLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIGhlaWdodD0iMSIgd2lkdGg9IjMiIHk9IjYiIHg9IjUiLz48cmVjdCBmaWxsPSJUaHJlZURTaGFkb3ciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHk9IjUiIHg9IjYiLz4NCgkNCgkNCjwvc3ZnPg==") !important; + background-position: center !important; + }`; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService( Ci.nsIStyleSheetService ); - var uri = makeURI("data:text/css;charset=UTF=8," + encodeURIComponent(css)); + var uri = Services.io.newURI( + "data:text/css;charset=UTF=8," + encodeURIComponent(css) + ); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); })(); diff --git a/chrome/space_and_separator_restorer.uc.js b/chrome/space_and_separator_restorer.uc.js index 058bf41..0d94ae9 100644 --- a/chrome/space_and_separator_restorer.uc.js +++ b/chrome/space_and_separator_restorer.uc.js @@ -12,95 +12,118 @@ // [!] BUG: do not move main 'space'-item to palette or it will be hidden until customizing mode gets reopened // [!] Fix for WebExtensions with own windows by 黒仪大螃蟹 (for 1-N scripts) +(function () { + Components.utils.import("resource:///modules/CustomizableUI.jsm"); + var appversion = parseInt(Services.appinfo.version); + var AddSeparator = { + init: function () { + if ( + appversion >= 76 && + location != "chrome://browser/content/browser.xhtml" + ) + return; -Components.utils.import("resource:///modules/CustomizableUI.jsm"); -var {Services} = Components.utils.import("resource://gre/modules/Services.jsm", {}); -var appversion = parseInt(Services.appinfo.version); + try { + document + .getElementById("back-button") + .setAttribute("removable", "true"); + document + .getElementById("forward-button") + .setAttribute("removable", "true"); + } catch (e) {} -var AddSeparator = { - init: function() { + /* blank tab workaround */ + try { + if (gBrowser.selectedBrowser.getAttribute("blank")) + gBrowser.selectedBrowser.removeAttribute("blank"); + } catch (e) {} - if (appversion >= 76 && location != 'chrome://browser/content/browser.xhtml') - return; + var tb_config_label = "Configuration Toolbar"; + var tb_spacer_label = "Space"; + var tb_sep_label = "Separator"; + var tb_spring_label = "Flexible Space"; - /* blank tab workaround */ - try { - if(gBrowser.selectedBrowser.getAttribute('blank')) gBrowser.selectedBrowser.removeAttribute('blank'); - } catch(e) {} - - var tb_config_label = "Configuration Toolbar"; - var tb_spacer_label = "Space"; - var tb_sep_label = "Separator"; - var tb_spring_label = "Flexible Space"; - - try { - if(document.getElementById('configuration_toolbar') == null) { - - if(appversion <= 62) var tb_config = document.createElement("toolbar"); - else var tb_config = document.createXULElement("toolbar"); - tb_config.setAttribute("id","configuration_toolbar"); - tb_config.setAttribute("customizable","true"); - tb_config.setAttribute("class","toolbar-primary chromeclass-toolbar browser-toolbar customization-target"); - tb_config.setAttribute("mode","icons"); - tb_config.setAttribute("iconsize","small"); - tb_config.setAttribute("toolboxid","navigator-toolbox"); - tb_config.setAttribute("lockiconsize","true"); - tb_config.setAttribute("ordinal","1005"); - tb_config.setAttribute("defaultset","toolbarspacer,toolbarseparator"); - - document.querySelector('#navigator-toolbox').appendChild(tb_config); - - CustomizableUI.registerArea("configuration_toolbar", {legacy: true}); - if(appversion >= 65) CustomizableUI.registerToolbarNode(tb_config); - - if(appversion <= 62) var tb_label = document.createElement("label"); - else var tb_label = document.createXULElement("label"); - tb_label.setAttribute("label", tb_config_label+": "); - tb_label.setAttribute("value", tb_config_label+": "); - tb_label.setAttribute("id","tb_config_tb_label"); - tb_label.setAttribute("removable","false"); - - tb_config.appendChild(tb_label); - - - if(appversion <= 62) var tb_spacer = document.createElement("toolbarspacer"); - else var tb_spacer = document.createXULElement("toolbarspacer"); - tb_spacer.setAttribute("id","spacer"); - tb_spacer.setAttribute("class","chromeclass-toolbar-additional"); - tb_spacer.setAttribute("customizableui-areatype","toolbar"); - tb_spacer.setAttribute("removable","false"); - tb_spacer.setAttribute("label", tb_spacer_label); - - tb_config.appendChild(tb_spacer); - - - if(appversion <= 62) var tb_sep = document.createElement("toolbarseparator"); - else var tb_sep = document.createXULElement("toolbarseparator"); - tb_sep.setAttribute("id","separator"); - tb_sep.setAttribute("class","chromeclass-toolbar-additional"); - tb_sep.setAttribute("customizableui-areatype","toolbar"); - tb_sep.setAttribute("removable","false"); - tb_sep.setAttribute("label", tb_sep_label); - - tb_config.appendChild(tb_sep); - - - if(appversion <= 62) var tb_spring = document.createElement("toolbarspring"); - else var tb_spring = document.createXULElement("toolbarspring"); - tb_spring.setAttribute("id","spring"); - tb_spring.setAttribute("class","chromeclass-toolbar-additional"); - tb_spring.setAttribute("customizableui-areatype","toolbar"); - tb_spring.setAttribute("removable","false"); - tb_spring.setAttribute("flex","1"); - tb_spring.setAttribute("label", tb_spring_label); - - tb_config.appendChild(tb_spring); - - // CSS - var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); + try { + if (document.getElementById("configuration_toolbar") == null) { + if (appversion <= 62) + var tb_config = document.createElement("toolbar"); + else var tb_config = document.createXULElement("toolbar"); + tb_config.setAttribute("id", "configuration_toolbar"); + tb_config.setAttribute("customizable", "true"); + tb_config.setAttribute( + "class", + "toolbar-primary chromeclass-toolbar browser-toolbar customization-target" + ); + tb_config.setAttribute("mode", "icons"); + tb_config.setAttribute("iconsize", "small"); + tb_config.setAttribute("toolboxid", "navigator-toolbox"); + tb_config.setAttribute("lockiconsize", "true"); + tb_config.setAttribute("ordinal", "1005"); + tb_config.setAttribute( + "defaultset", + "toolbarspacer,toolbarseparator" + ); - var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\ + document.querySelector("#navigator-toolbox").appendChild(tb_config); + + CustomizableUI.registerArea("configuration_toolbar", { + legacy: true, + }); + if (appversion >= 65) CustomizableUI.registerToolbarNode(tb_config); + + if (appversion <= 62) var tb_label = document.createElement("label"); + else var tb_label = document.createXULElement("label"); + tb_label.setAttribute("label", tb_config_label + ": "); + tb_label.setAttribute("value", tb_config_label + ": "); + tb_label.setAttribute("id", "tb_config_tb_label"); + tb_label.setAttribute("removable", "false"); + + tb_config.appendChild(tb_label); + + if (appversion <= 62) + var tb_spacer = document.createElement("toolbarspacer"); + else var tb_spacer = document.createXULElement("toolbarspacer"); + tb_spacer.setAttribute("id", "spacer"); + tb_spacer.setAttribute("class", "chromeclass-toolbar-additional"); + tb_spacer.setAttribute("customizableui-areatype", "toolbar"); + tb_spacer.setAttribute("removable", "false"); + tb_spacer.setAttribute("label", tb_spacer_label); + + tb_config.appendChild(tb_spacer); + + if (appversion <= 62) + var tb_sep = document.createElement("toolbarseparator"); + else var tb_sep = document.createXULElement("toolbarseparator"); + tb_sep.setAttribute("id", "separator"); + tb_sep.setAttribute("class", "chromeclass-toolbar-additional"); + tb_sep.setAttribute("customizableui-areatype", "toolbar"); + tb_sep.setAttribute("removable", "false"); + tb_sep.setAttribute("label", tb_sep_label); + + tb_config.appendChild(tb_sep); + + if (appversion <= 62) + var tb_spring = document.createElement("toolbarspring"); + else var tb_spring = document.createXULElement("toolbarspring"); + tb_spring.setAttribute("id", "spring"); + tb_spring.setAttribute("class", "chromeclass-toolbar-additional"); + tb_spring.setAttribute("customizableui-areatype", "toolbar"); + tb_spring.setAttribute("removable", "false"); + tb_spring.setAttribute("flex", "1"); + tb_spring.setAttribute("label", tb_spring_label); + + tb_config.appendChild(tb_spring); + + // CSS + var sss = Components.classes[ + "@mozilla.org/content/style-sheet-service;1" + ].getService(Components.interfaces.nsIStyleSheetService); + + var uri = Services.io.newURI( + "data:text/css;charset=utf-8," + + encodeURIComponent( + '\ \ #configuration_toolbar { \ -moz-appearance: none !important; \ @@ -161,21 +184,24 @@ var AddSeparator = { max-width: 100% !important; \ }\ \ - '), null, null); + ' + ), + null, + null + ); - sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); - } - } catch(e){} + sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); + } + } catch (e) {} + }, + }; - } - -} - -/* initialization delay workaround */ -document.addEventListener("DOMContentLoaded", AddSeparator.init(), false); -/* Use the below code instead of the one above this line, if issues occur */ -/* + /* initialization delay workaround */ + document.addEventListener("DOMContentLoaded", AddSeparator.init(), false); + /* Use the below code instead of the one above this line, if issues occur */ + /* setTimeout(function(){ AddSeparator.init(); },2000); */ +})(); diff --git a/chrome/status-bar.uc.js b/chrome/status-bar.uc.js new file mode 100644 index 0000000..9bb355a --- /dev/null +++ b/chrome/status-bar.uc.js @@ -0,0 +1,207 @@ +// ==UserScript== +// @name Status Bar +// @author xiaoxiaoflood +// @include main +// @startup UC.statusBar.exec(win); +// @shutdown UC.statusBar.destroy(); +// @onlyonce +// ==/UserScript== + +const { CustomizableUI, StatusPanel } = window; + +UC.statusBar = { + PREF_ENABLED: "userChromeJS.statusbar.enabled", + PREF_STATUSTEXT: "userChromeJS.statusbar.appendStatusText", + + get enabled() { + return xPref.get(this.PREF_ENABLED); + }, + + get textInBar() { + return this.enabled && xPref.get(this.PREF_STATUSTEXT); + }, + + init: function () { + xPref.set(this.PREF_ENABLED, true, true); + xPref.set(this.PREF_STATUSTEXT, true, true); + this.enabledListener = xPref.addListener(this.PREF_ENABLED, (isEnabled) => { + CustomizableUI.getWidget("status-dummybar").instances.forEach( + (dummyBar) => { + dummyBar.node.setAttribute("collapsed", !isEnabled); + } + ); + }); + this.textListener = xPref.addListener(this.PREF_STATUSTEXT, (isEnabled) => { + if (!UC.statusBar.enabled) return; + + _uc.windows((doc, win) => { + let StatusPanel = win.StatusPanel; + if (isEnabled) + win.statusbar.textNode.appendChild(StatusPanel._labelElement); + else StatusPanel.panel.appendChild(StatusPanel._labelElement); + }); + }); + + this.setStyle(); + _uc.sss.loadAndRegisterSheet(this.STYLE.url, this.STYLE.type); + + CustomizableUI.registerArea("status-bar", {}); + + Services.obs.addObserver(this, "browser-delayed-startup-finished"); + }, + + exec: function (win) { + let document = win.document; + let StatusPanel = win.StatusPanel; + + let dummystatusbar = _uc.createElement(document, "toolbar", { + id: "status-dummybar", + toolbarname: "Status Bar", + hidden: "true", + }); + dummystatusbar.collapsed = !this.enabled; + dummystatusbar.setAttribute = function (att, value) { + let result = Element.prototype.setAttribute.apply(this, arguments); + + if (att == "collapsed") { + let StatusPanel = win.StatusPanel; + if (value === true) { + xPref.set(UC.statusBar.PREF_ENABLED, false); + win.statusbar.node.setAttribute("collapsed", true); + StatusPanel.panel.appendChild(StatusPanel._labelElement); + win.statusbar.node.parentNode.collapsed = true; + } else { + xPref.set(UC.statusBar.PREF_ENABLED, true); + win.statusbar.node.setAttribute("collapsed", false); + if (UC.statusBar.textInBar) + win.statusbar.textNode.appendChild(StatusPanel._labelElement); + win.statusbar.node.parentNode.collapsed = false; + } + } + + return result; + }; + win.gNavToolbox.appendChild(dummystatusbar); + + win.statusbar.node = _uc.createElement(document, "toolbar", { + id: "status-bar", + customizable: "true", + context: "toolbar-context-menu", + mode: "icons", + }); + + win.statusbar.textNode = _uc.createElement(document, "toolbaritem", { + id: "status-text", + flex: "1", + width: "100", + }); + if (this.textInBar) + win.statusbar.textNode.appendChild(StatusPanel._labelElement); + win.statusbar.node.appendChild(win.statusbar.textNode); + + win.eval( + 'Object.defineProperty(StatusPanel, "_label", {' + + Object.getOwnPropertyDescriptor(StatusPanel, "_label") + .set.toString() + .replace(/^set _label/, "set") + .replace( + /((\s+)this\.panel\.setAttribute\("inactive", "true"\);)/, + "$2this._labelElement.value = val;$1" + ) + + ", enumerable: true, configurable: true});" + ); + + let bottomBox = document.createElement("vbox"); + bottomBox.id = "browser-bottombox"; + bottomBox.append(win.statusbar.node); + + if (!this.enabled) bottomBox.collapsed = true; + + document + .getElementById("fullscreen-and-pointerlock-wrapper") + .insertAdjacentElement("afterend", bottomBox); + + win.addEventListener("fullscreen", this.fsEvent); + + if (document.readyState === "complete") this.observe(win); + }, + + fsEvent: function (ev) { + const { StatusPanel, fullScreen, statusbar } = ev.target; + if (fullScreen) StatusPanel.panel.appendChild(StatusPanel._labelElement); + else statusbar.textNode.appendChild(StatusPanel._labelElement); + }, + + observe: function (win) { + CustomizableUI.registerToolbarNode(win.statusbar.node); + }, + + orig: Object.getOwnPropertyDescriptor(StatusPanel, "_label").set.toString(), + + setStyle: function () { + this.STYLE = { + url: Services.io.newURI( + "data:text/css;charset=UTF-8," + + encodeURIComponent(` + @-moz-document url('${_uc.BROWSERCHROME}') { + #status-bar { + color: initial !important; + /*background-color: var(--toolbar-non-lwt-bgcolor);*/ + } + #status-text > #statuspanel-label { + border-top: 0 !important; + /*background-color: unset !important; + color: #444;*/ + } + #status-bar > #status-text { + display: flex !important; + justify-content: center !important; + align-content: center !important; + flex-direction: column !important; + -moz-window-dragging: drag; + } + toolbarpaletteitem #status-text:before { + content: "Status text"; + color: red; + border: 1px #aaa solid; + border-radius: 3px; + font-weight: bold; + } + /*#browser-bottombox:not([collapsed]) { + border-top: 1px solid #BCBEBF !important; + }*/ + :root[inFullscreen]:not([macOSNativeFullscreen]) #browser-bottombox { + visibility: collapse !important; + } + } + `) + ), + type: _uc.sss.USER_SHEET, + }; + }, + + destroy: function () { + const { CustomizableUI } = Services.wm.getMostRecentBrowserWindow(); + + xPref.removeListener(this.enabledListener); + xPref.removeListener(this.textListener); + CustomizableUI.unregisterArea("status-bar"); + _uc.sss.unregisterSheet(this.STYLE.url, this.STYLE.type); + _uc.windows((doc, win) => { + const { eval, statusbar, StatusPanel } = win; + eval( + 'Object.defineProperty(StatusPanel, "_label", {' + + this.orig.replace(/^set _label/, "set") + + ", enumerable: true, configurable: true});" + ); + StatusPanel.panel.appendChild(StatusPanel._labelElement); + doc.getElementById("status-dummybar").remove(); + statusbar.node.remove(); + win.removeEventListener("fullscreen", this.fsEvent); + }); + Services.obs.removeObserver(this, "browser-delayed-startup-finished"); + delete UC.statusBar; + }, +}; + +UC.statusBar.init(); diff --git a/chrome/toolbar.png b/chrome/toolbar.png deleted file mode 100644 index df62a97..0000000 Binary files a/chrome/toolbar.png and /dev/null differ diff --git a/chrome/toolbar/back.png b/chrome/toolbar/back.png deleted file mode 100644 index 549fe89..0000000 Binary files a/chrome/toolbar/back.png and /dev/null differ diff --git a/chrome/toolbar/bookmarks.png b/chrome/toolbar/bookmarks.png deleted file mode 100644 index 7d715b8..0000000 Binary files a/chrome/toolbar/bookmarks.png and /dev/null differ diff --git a/chrome/toolbar/copy.png b/chrome/toolbar/copy.png deleted file mode 100644 index f0f9340..0000000 Binary files a/chrome/toolbar/copy.png and /dev/null differ diff --git a/chrome/toolbar/cut.png b/chrome/toolbar/cut.png deleted file mode 100644 index 9f4b388..0000000 Binary files a/chrome/toolbar/cut.png and /dev/null differ diff --git a/chrome/toolbar/downloads.png b/chrome/toolbar/downloads.png deleted file mode 100644 index a830ddd..0000000 Binary files a/chrome/toolbar/downloads.png and /dev/null differ diff --git a/chrome/toolbar/email.png b/chrome/toolbar/email.png deleted file mode 100644 index 78a7f87..0000000 Binary files a/chrome/toolbar/email.png and /dev/null differ diff --git a/chrome/toolbar/find.png b/chrome/toolbar/find.png deleted file mode 100644 index b61ebb8..0000000 Binary files a/chrome/toolbar/find.png and /dev/null differ diff --git a/chrome/toolbar/forward.png b/chrome/toolbar/forward.png deleted file mode 100644 index ff6f18f..0000000 Binary files a/chrome/toolbar/forward.png and /dev/null differ diff --git a/chrome/toolbar/fullscreen.png b/chrome/toolbar/fullscreen.png deleted file mode 100644 index 46dd9c0..0000000 Binary files a/chrome/toolbar/fullscreen.png and /dev/null differ diff --git a/chrome/toolbar/history.png b/chrome/toolbar/history.png deleted file mode 100644 index f0bcae8..0000000 Binary files a/chrome/toolbar/history.png and /dev/null differ diff --git a/chrome/toolbar/home.png b/chrome/toolbar/home.png deleted file mode 100644 index ad99d31..0000000 Binary files a/chrome/toolbar/home.png and /dev/null differ diff --git a/chrome/toolbar/hover/back.png b/chrome/toolbar/hover/back.png deleted file mode 100644 index 6af7669..0000000 Binary files a/chrome/toolbar/hover/back.png and /dev/null differ diff --git a/chrome/toolbar/hover/bookmarks.png b/chrome/toolbar/hover/bookmarks.png deleted file mode 100644 index 77339ac..0000000 Binary files a/chrome/toolbar/hover/bookmarks.png and /dev/null differ diff --git a/chrome/toolbar/hover/copy.png b/chrome/toolbar/hover/copy.png deleted file mode 100644 index d404435..0000000 Binary files a/chrome/toolbar/hover/copy.png and /dev/null differ diff --git a/chrome/toolbar/hover/cut.png b/chrome/toolbar/hover/cut.png deleted file mode 100644 index 64477b5..0000000 Binary files a/chrome/toolbar/hover/cut.png and /dev/null differ diff --git a/chrome/toolbar/hover/downloads.png b/chrome/toolbar/hover/downloads.png deleted file mode 100644 index 894e3ac..0000000 Binary files a/chrome/toolbar/hover/downloads.png and /dev/null differ diff --git a/chrome/toolbar/hover/emaill.png b/chrome/toolbar/hover/emaill.png deleted file mode 100644 index 3c51946..0000000 Binary files a/chrome/toolbar/hover/emaill.png and /dev/null differ diff --git a/chrome/toolbar/hover/find.png b/chrome/toolbar/hover/find.png deleted file mode 100644 index 21b0026..0000000 Binary files a/chrome/toolbar/hover/find.png and /dev/null differ diff --git a/chrome/toolbar/hover/forward.png b/chrome/toolbar/hover/forward.png deleted file mode 100644 index cbda16f..0000000 Binary files a/chrome/toolbar/hover/forward.png and /dev/null differ diff --git a/chrome/toolbar/hover/fullscreen.png b/chrome/toolbar/hover/fullscreen.png deleted file mode 100644 index 06b4f04..0000000 Binary files a/chrome/toolbar/hover/fullscreen.png and /dev/null differ diff --git a/chrome/toolbar/hover/history.png b/chrome/toolbar/hover/history.png deleted file mode 100644 index 08084d4..0000000 Binary files a/chrome/toolbar/hover/history.png and /dev/null differ diff --git a/chrome/toolbar/hover/home.png b/chrome/toolbar/hover/home.png deleted file mode 100644 index 62f1542..0000000 Binary files a/chrome/toolbar/hover/home.png and /dev/null differ diff --git a/chrome/toolbar/hover/new.png b/chrome/toolbar/hover/new.png deleted file mode 100644 index f5cb69e..0000000 Binary files a/chrome/toolbar/hover/new.png and /dev/null differ diff --git a/chrome/toolbar/hover/paste.png b/chrome/toolbar/hover/paste.png deleted file mode 100644 index 88c5881..0000000 Binary files a/chrome/toolbar/hover/paste.png and /dev/null differ diff --git a/chrome/toolbar/hover/print.png b/chrome/toolbar/hover/print.png deleted file mode 100644 index 027347e..0000000 Binary files a/chrome/toolbar/hover/print.png and /dev/null differ diff --git a/chrome/toolbar/hover/refresh.png b/chrome/toolbar/hover/refresh.png deleted file mode 100644 index b03802f..0000000 Binary files a/chrome/toolbar/hover/refresh.png and /dev/null differ diff --git a/chrome/toolbar/hover/sidebar.png b/chrome/toolbar/hover/sidebar.png deleted file mode 100644 index 1fb4a6b..0000000 Binary files a/chrome/toolbar/hover/sidebar.png and /dev/null differ diff --git a/chrome/toolbar/hover/stop.png b/chrome/toolbar/hover/stop.png deleted file mode 100644 index 34f02b2..0000000 Binary files a/chrome/toolbar/hover/stop.png and /dev/null differ diff --git a/chrome/toolbar/large/back.png b/chrome/toolbar/large/back.png deleted file mode 100644 index 5d691bb..0000000 Binary files a/chrome/toolbar/large/back.png and /dev/null differ diff --git a/chrome/toolbar/large/bookmarks.png b/chrome/toolbar/large/bookmarks.png deleted file mode 100644 index c11c2b6..0000000 Binary files a/chrome/toolbar/large/bookmarks.png and /dev/null differ diff --git a/chrome/toolbar/large/copy.png b/chrome/toolbar/large/copy.png deleted file mode 100644 index 2b76841..0000000 Binary files a/chrome/toolbar/large/copy.png and /dev/null differ diff --git a/chrome/toolbar/large/cut.png b/chrome/toolbar/large/cut.png deleted file mode 100644 index 7d1a9d0..0000000 Binary files a/chrome/toolbar/large/cut.png and /dev/null differ diff --git a/chrome/toolbar/large/downloads.png b/chrome/toolbar/large/downloads.png deleted file mode 100644 index a7072d0..0000000 Binary files a/chrome/toolbar/large/downloads.png and /dev/null differ diff --git a/chrome/toolbar/large/email.png b/chrome/toolbar/large/email.png deleted file mode 100644 index bcf72ad..0000000 Binary files a/chrome/toolbar/large/email.png and /dev/null differ diff --git a/chrome/toolbar/large/find.png b/chrome/toolbar/large/find.png deleted file mode 100644 index 0ee2984..0000000 Binary files a/chrome/toolbar/large/find.png and /dev/null differ diff --git a/chrome/toolbar/large/forward.png b/chrome/toolbar/large/forward.png deleted file mode 100644 index 69e5ee9..0000000 Binary files a/chrome/toolbar/large/forward.png and /dev/null differ diff --git a/chrome/toolbar/large/fullscreen.png b/chrome/toolbar/large/fullscreen.png deleted file mode 100644 index 9638e57..0000000 Binary files a/chrome/toolbar/large/fullscreen.png and /dev/null differ diff --git a/chrome/toolbar/large/history.png b/chrome/toolbar/large/history.png deleted file mode 100644 index bdad395..0000000 Binary files a/chrome/toolbar/large/history.png and /dev/null differ diff --git a/chrome/toolbar/large/home.png b/chrome/toolbar/large/home.png deleted file mode 100644 index 18bc2c9..0000000 Binary files a/chrome/toolbar/large/home.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/back.png b/chrome/toolbar/large/hover/back.png deleted file mode 100644 index b370ed4..0000000 Binary files a/chrome/toolbar/large/hover/back.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/bookmarks.png b/chrome/toolbar/large/hover/bookmarks.png deleted file mode 100644 index 01b2b1e..0000000 Binary files a/chrome/toolbar/large/hover/bookmarks.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/copy.png b/chrome/toolbar/large/hover/copy.png deleted file mode 100644 index f46fe8c..0000000 Binary files a/chrome/toolbar/large/hover/copy.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/cut.png b/chrome/toolbar/large/hover/cut.png deleted file mode 100644 index 9de73c6..0000000 Binary files a/chrome/toolbar/large/hover/cut.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/downloads.png b/chrome/toolbar/large/hover/downloads.png deleted file mode 100644 index 153dd84..0000000 Binary files a/chrome/toolbar/large/hover/downloads.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/email.png b/chrome/toolbar/large/hover/email.png deleted file mode 100644 index 5440214..0000000 Binary files a/chrome/toolbar/large/hover/email.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/find.png b/chrome/toolbar/large/hover/find.png deleted file mode 100644 index def6fb1..0000000 Binary files a/chrome/toolbar/large/hover/find.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/forward.png b/chrome/toolbar/large/hover/forward.png deleted file mode 100644 index d2a833c..0000000 Binary files a/chrome/toolbar/large/hover/forward.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/fullscreen.png b/chrome/toolbar/large/hover/fullscreen.png deleted file mode 100644 index 76ea064..0000000 Binary files a/chrome/toolbar/large/hover/fullscreen.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/history.png b/chrome/toolbar/large/hover/history.png deleted file mode 100644 index 9e8ba11..0000000 Binary files a/chrome/toolbar/large/hover/history.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/home.png b/chrome/toolbar/large/hover/home.png deleted file mode 100644 index c23095f..0000000 Binary files a/chrome/toolbar/large/hover/home.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/new.png b/chrome/toolbar/large/hover/new.png deleted file mode 100644 index 0b6cb9b..0000000 Binary files a/chrome/toolbar/large/hover/new.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/paste.png b/chrome/toolbar/large/hover/paste.png deleted file mode 100644 index ae59cfa..0000000 Binary files a/chrome/toolbar/large/hover/paste.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/print.png b/chrome/toolbar/large/hover/print.png deleted file mode 100644 index c4d30de..0000000 Binary files a/chrome/toolbar/large/hover/print.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/refresh.png b/chrome/toolbar/large/hover/refresh.png deleted file mode 100644 index ab4114f..0000000 Binary files a/chrome/toolbar/large/hover/refresh.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/sidebar.png b/chrome/toolbar/large/hover/sidebar.png deleted file mode 100644 index 69a1ed7..0000000 Binary files a/chrome/toolbar/large/hover/sidebar.png and /dev/null differ diff --git a/chrome/toolbar/large/hover/stop.png b/chrome/toolbar/large/hover/stop.png deleted file mode 100644 index a0fd6ca..0000000 Binary files a/chrome/toolbar/large/hover/stop.png and /dev/null differ diff --git a/chrome/toolbar/large/new.png b/chrome/toolbar/large/new.png deleted file mode 100644 index 6ad8382..0000000 Binary files a/chrome/toolbar/large/new.png and /dev/null differ diff --git a/chrome/toolbar/large/paste.png b/chrome/toolbar/large/paste.png deleted file mode 100644 index 5ffefb7..0000000 Binary files a/chrome/toolbar/large/paste.png and /dev/null differ diff --git a/chrome/toolbar/large/print.png b/chrome/toolbar/large/print.png deleted file mode 100644 index 16f6fa3..0000000 Binary files a/chrome/toolbar/large/print.png and /dev/null differ diff --git a/chrome/toolbar/large/refresh.png b/chrome/toolbar/large/refresh.png deleted file mode 100644 index 4af2539..0000000 Binary files a/chrome/toolbar/large/refresh.png and /dev/null differ diff --git a/chrome/toolbar/large/sidebar.png b/chrome/toolbar/large/sidebar.png deleted file mode 100644 index aba01c6..0000000 Binary files a/chrome/toolbar/large/sidebar.png and /dev/null differ diff --git a/chrome/toolbar/large/stop.png b/chrome/toolbar/large/stop.png deleted file mode 100644 index 7465d6e..0000000 Binary files a/chrome/toolbar/large/stop.png and /dev/null differ diff --git a/chrome/toolbar/new.png b/chrome/toolbar/new.png deleted file mode 100644 index 050658d..0000000 Binary files a/chrome/toolbar/new.png and /dev/null differ diff --git a/chrome/toolbar/paste.png b/chrome/toolbar/paste.png deleted file mode 100644 index 1e88a1f..0000000 Binary files a/chrome/toolbar/paste.png and /dev/null differ diff --git a/chrome/toolbar/print.png b/chrome/toolbar/print.png deleted file mode 100644 index b4be5b3..0000000 Binary files a/chrome/toolbar/print.png and /dev/null differ diff --git a/chrome/toolbar/refresh.png b/chrome/toolbar/refresh.png deleted file mode 100644 index ad471c9..0000000 Binary files a/chrome/toolbar/refresh.png and /dev/null differ diff --git a/chrome/toolbar/sidebar.png b/chrome/toolbar/sidebar.png deleted file mode 100644 index bb709bc..0000000 Binary files a/chrome/toolbar/sidebar.png and /dev/null differ diff --git a/chrome/toolbar/stop.png b/chrome/toolbar/stop.png deleted file mode 100644 index dfb93e5..0000000 Binary files a/chrome/toolbar/stop.png and /dev/null differ diff --git a/chrome/toolbar_large.png b/chrome/toolbar_large.png deleted file mode 100644 index 38c4694..0000000 Binary files a/chrome/toolbar_large.png and /dev/null differ diff --git a/chrome/userChrome.css b/chrome/userChrome.css index 9587fb8..bbf4008 100644 --- a/chrome/userChrome.css +++ b/chrome/userChrome.css @@ -1,4 +1,4 @@ -@import url("toolbar-label-under-icon.css"); +@import url("msfx/msfx.css"); :root { --toolbar-bgcolor: -moz-Dialog !important; @@ -17,14 +17,14 @@ ) !important; --toolbarbutton-border-radius: 2px !important; --toolbarbutton-icon-fill-opacity: 1 !important; - --panel-separator-color: ThreeDLightShadow !important; + --panel-separator-color: ThreeDShadow !important; --arrowpanel-background: -moz-field !important; --arrowpanel-color: -moz-FieldText !important; --arrowpanel-border-color: ThreeDShadow !important; --arrowpanel-dimmed: hsla(0, 0%, 80%, 0.35) !important; --arrowpanel-dimmed-further: hsla(0, 0%, 80%, 0.5) !important; --arrowpanel-dimmed-even-further: hsla(0, 0%, 80%, 0.8) !important; - --urlbar-separator-color: ThreeDLightShadow !important; + --urlbar-separator-color: ThreeDShadow !important; --chrome-content-separator-color: ThreeDShadow !important; --toolbarbutton-hover-transition-duration: 0 !important; --toolbarbutton-outer-padding: 2px !important; @@ -38,6 +38,7 @@ --tab-block-margin: 0px !important; --tab-min-height: 18px !important; --arrowpanel-border-radius: 0px !important; + --toolbar-size: -16px !important; /** MSFX CONFIGURATION **/ --hide-tab-close-button: none; /* none = hide | unset = show */ @@ -49,578 +50,14 @@ --show-alltabs-button: unset; /* none = hide | unset = show */ /* THIS BREAKS HIDING TABS WHEN THERES ONLY ONE!!! */ --show-status-bar: flex; /* none = hide | flex = show */ --lock-toolbars: none; /* none = hide | block = show */ - --navigator-toolbox-gap: 0px; /* 2px = Unlocked | 0px = Locked */ /* This variable is for the gap between the browser content and the Toolbars. */ --show-history-menu-item: none; /* none = hide | unset = show */ --selected-tab-font-weight: 600 !important; /* 600 = bold | 500 = normal */ --toolbar-tinting: luminosity !important; /* luminosity = tinted | normal = disabled */ --stop-reload-order: row-reverse; /* row-reverse = stop first, row = reload first */ } -menupopup, -panel { - --windows-panel-box-shadow: none !important; -} - -#urlbar-container { - --urlbar-container-height: 22px !important; -} - -#urlbar { - --urlbar-height: 22px !important; - --urlbar-toolbar-height: 22px !important; - color: WindowText !important; - padding-right: 16px !important; -} - -#urlbar-scheme { - color: WindowText !important; -} - -/* Add 3D Borders back to context menus. */ -menupopup { - appearance: none !important; - border: none !important; - padding: 2px !important; - box-shadow: inset -1px -1px 0 ThreeDDarkShadow, inset 1px 1px 0 ThreeDFace, - inset -2px -2px 0 ThreeDShadow, inset 2px 2px 0 ThreeDHighlight !important; -} - -/* Fix Menubar Selection. */ -#main-menubar > menu[_moz-menuactive="true"] { - color: inherit !important; -} - -#main-menubar > menu { - appearance: menuitem !important; - min-height: 19px !important; -} - -/* Status Bar */ - -#browser-bottombox { - margin-top: 2px; - height: 18px; - /*display: var(--show-status-bar); - gap: 2px; - box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow;*/ -} - -#main-window:not([sizemode="maximized"]) #browser-bottombox::after { - content: ""; - display: inline-block; - width: 12px; - height: 12px; - appearance: resizer; - position: fixed; - right: 1px; - bottom: 1px; -} - -#status-text::before { - content: ""; - display: inline-block; - width: 16px; - height: 16px; - position: fixed; - left: 2px; - bottom: 1px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg=="); -} -#status-text { - height: 18px; - padding-left: 16px; - box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; -} - -#statuspanel-label { - background-color: unset !important; - border: 0 !important; - /*padding-top: unset !important; - padding-bottom: unset !important; - padding-left: 2px !important;*/ - padding-bottom: 4px !important; -} - -#statuspanel { - display: flex !important; - align-items: center !important; - margin-top: unset !important; - bottom: 1px !important; - left: 1px !important; - transition: none !important; - min-height: 16px !important; - position: fixed !important; - padding-top: 0 !important; - background-color: -moz-Dialog !important; -} - -#statuspanel-inner { - height: 100% !important; - display: flex; - align-items: center; -} - -/* I give up making comments. */ -#navigator-toolbox { - border-bottom: 0 !important; - appearance: groupbox !important; - margin-bottom: var(--navigator-toolbox-gap) !important; -} - -.browserStack, -#customization-container { - -moz-default-appearance: listbox !important; - -moz-appearance: listbox !important; -} - -.browser-toolbar:not(#TabsToolbar):not(#toolbar-menubar) { - border-top: 1px solid ThreeDShadow !important; - box-shadow: inset 0 1px 0 ThreeDHighlight !important; - padding-top: 1px !important; -} - -#PersonalToolbar { - padding-inline: 0 !important; -} - -.tabbrowser-tab { - appearance: tab !important; - padding: 0 5px !important; -} - -.tabbrowser-tab:not([pinned]) { - max-width: 176px !important; -} - -.tab-background { - display: none !important; -} - -.tab-close-button { - display: var(--hide-tab-close-button) !important; - padding: 0 !important; - width: 10px !important; - height: 10px !important; - transform: translate(-1px, -1px); - margin-inline-end: calc(var(--inline-tab-padding) + 2px) !important; - list-style-image: none !important; - background-color: -moz-DialogText !important; - mask-repeat: no-repeat !important; - mask-position: center center !important; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA4SURBVBhXY2RgYPgPxCAAYiMDmDgYgDjIAnA+si4UHUCAbiIYoJtEvAnoOuF8kCqYBLqdQHEGBgAx7A/5GaSbcgAAAABJRU5ErkJggg==") !important; -} - -.tab-close-button[pinned] { - display: none !important; -} - -.tab-label { - line-height: unset !important; -} - -.tab-content { - display: flex !important; - align-items: center; -} - -.tab-close-button:hover { - background-color: WindowText; - opacity: 0.5 !important; -} - -#urlbar-background, -#searchbar { - border: 0 !important; - border-radius: 0 !important; - -moz-default-appearance: listbox !important; - -moz-appearance: listbox !important; - box-shadow: none !important; -} - -#urlbar[breakout][breakout-extend] #urlbar-background { - height: var(--urlbar-height) !important; -} - -#urlbar[breakout][breakout-extend] #favimginurlbar { - margin: 3px !important; -} - -#urlbar[breakout][breakout-extend] .urlbar-input-box::after { - display: none !important; -} - -#tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) - > #tabbrowser-arrowscrollbox - > .tabbrowser-tab[first-visible-unpinned-tab] { - margin-inline-start: 0 !important; -} - -#context-navigation { - display: flex; - flex-direction: column; - padding-bottom: 0 !important; -} - -#context-navigation::after { - content: ""; - display: block; - appearance: menuseparator; -} - -#context-sep-navigation { - display: none !important; -} - -#context-navigation > .menuitem-iconic { - list-style-image: none !important; - position: relative !important; - -moz-box-pack: unset !important; -} - -#context-navigation .menuitem-iconic::before { - display: block; - content: attr(aria-label); - margin-left: 18px; - padding-bottom: 0 !important; -} - -#context-sep-navigation { - margin-top: 0 !important; -} - -toolbarseparator { - border-left: 1px solid ThreeDShadow; - border-right: 1px solid ThreeDHighlight; - margin: 2px; -} - -toolbarpaletteitem[place="toolbar"][id^="wrapper-customizableui-special-spring"], -toolbarspring { - -moz-box-flex: 1000 !important; -} - -#activity_throbber { - background-color: #000; - border-left: 1px solid ThreeDHighlight; - box-shadow: -1px 0 0 ThreeDShadow; - height: 22px !important; - list-style-image: none !important; - background-repeat: no-repeat; - background-position: center center; - min-width: 39px !important; - min-height: 22px !important; - padding: 0 !important; - position: relative !important; - left: 1px; - background-image: url("data:image/bmp;base64,Qk0uCgAAAAAAADYAAAAoAAAAJgAAABYAAAABABgAAAAAAPgJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAzAAAzMwAzMwAzAAAzMwAzAAAREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAAAADMzADMzM2YzM2YzM5lmZmZmM01NTWYzABEREQAzMxEREREREREREQAAMwAzMxEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMAMzMzZjMzM2YzVVVVKSkpAAAAQkJCMzMzOTk5MzMzADMzADMzHBwcM2ZmADMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREREzMwBmMzOZZjPMmWbMmWaZmWYcHBxmMzMREREAAAAAAAAAAAAAAAAAAAAzM2YAMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzAGYzM2ZmM5lmZpmZZsyZmZmZZikpKZlmM5lmM2YzMwBmMwCZzACZzAAAADNmZhEREQAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAKSkpmWYzmWZmmZlmzJmZmZlmAAAAmWYzzGYzZmYzADNmAMz/AJnMAAAAADMzERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBw5OTlfX19mZjNCQkJCQkJCQkIcHBxmZjOZZjNmZjMAM2YAzP8AmcwAAAAzZmYAMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHDMzM0JCQmZmmWZmmZmZzGZmmSkpKTk5ORERETMAAAAzMwBmZgAzMwAAADNmZgAzMxEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzNmM2aZZmaZZmbMmZnMZpnMERERM2bMMzPMADNmHBwcM2YzM2YzAAAAVVVVADMAADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAADMzM2ZmZsxmmcxmmcxmZswzAAAzZswAZswzM5kAZjNmmWYzmWYAAABmmWYzZjMcHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMwAzZjMzmXd3d2ZmZmZmZnd3dyIiIjNmzDMz/wAzmTMzAGbMZjOZMwAAAF9fXwBmMxwcHAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAzKSkpTU1NMzNmMzNmM2aZTU1NHBwcKSkpAAAzADMzADMzM2YzKSkpAAAAZplmMzMzADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAMzMAADMAMzMAADMzM2YAM2YzM2ZfX19CQkIcHBwAAAAREREpKSkzZmYzmTMzMzMAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAAAAMwAAAAAAAAAAMwAAMwAzZjMzZjNmZjNmZl9fXzOZZjNmMzNmMwAzAAAzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAzADMzIiIiADMzMzMAADMzADMAADMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAAAMwAAMwAREREAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="); -} - -#activity_throbber[busy] { - background-image: url("data:image/gif;base64,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"); -} - -#activity_throbber .toolbarbutton-icon { - display: none !important; -} - -#menubar-items { - -moz-box-pack: center !important; -} - -.tab-secondary-label { - display: none !important; -} - -#tabbrowser-tabs { - padding-left: 2px !important; -} - -:root:not([uidensity="compact"]) .tab-content[pinned] { - padding: 0 !important; -} - -#tabbrowser-tabs:not([secondarytext-unsupported]) .tab-label-container { - height: unset !important; - padding: 0 !important; - width: 100% !important; - margin-top: 1px !important; -} - -.tabbrowser-tab { - min-height: calc(var(--tab-min-height) - 3px) !important; - padding: 0 1px !important; - margin-top: 2px !important; -} - -.tabbrowser-tab[pinned="true"] { - padding: 0 4px !important; -} - -.tabbrowser-tab[visuallyselected="true"] { - position: unset !important; - font-weight: var(--selected-tab-font-weight) !important; -} - -.tabbrowser-tab:not([selected="true"]) { - min-height: calc(var(--tab-min-height) - 5px) !important; - margin-top: 4px !important; - margin-bottom: -1px !important; -} - -.tabbrowser-tab:not([pinned="true"]) .tab-icon-image { - display: var(--show-tab-icons) !important; -} - -.tabbrowser-tab .tab-icon-image { - margin-top: 1px !important; -} - -.tabbrowser-tab[selected="true"]:not([pinned="true"]) .tab-icon-overlay { - margin-top: 1px !important; -} - -.tabbrowser-tab[pinned="true"] - .tab-icon-stack[soundplaying="true"] - .tab-icon-image { - display: none !important; -} - -.tabbrowser-tab[pinned="true"] .tab-icon-overlay { - display: inline-block !important; -} - -.tabbrowser-tab[label="New Tab"][image]:not([busy]) .tab-icon-image { - opacity: 0; -} - -.tabbrowser-tab[label="New Tab"][image]:not([busy]) - .tab-label-container:not([selected="true"])::before { - top: 1px; -} - -.tabbrowser-tab[label="New Tab"][image]:not([busy]) - .tab-label-container::before { - content: ""; - display: var(--show-tab-icons) !important; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; - background-size: 100%; - width: 16px; - height: 16px; - position: absolute; - top: 2px; - left: 0px; - pointer-events: none; - opacity: 1; -} - -.tab-throbber:not([pinned]), -.tab-icon-pending:not([pinned]), -.tab-icon-image:not([pinned]), -.tab-sharing-icon-overlay:not([pinned]), -.tab-icon-overlay:not([pinned]) { - margin-inline-end: 3px !important; -} - -:root[uidensity="compact"] - .tab-icon-stack[indicator-replaces-favicon] - > :not(.tab-icon-overlay), -#tabbrowser-tabs[secondarytext-unsupported] - .tab-icon-stack[indicator-replaces-favicon] - > :not(.tab-icon-overlay), -:root:not([uidensity="compact"]) - #tabbrowser-tabs:not([secondarytext-unsupported]) - .tabbrowser-tab:not(:hover) - .tab-icon-overlay[indicator-replaces-favicon], -:root:not([uidensity="compact"]) - #tabbrowser-tabs:not([secondarytext-unsupported]) - .tabbrowser-tab:hover - .tab-icon-stack[indicator-replaces-favicon] - > :not(.tab-icon-overlay) { - opacity: 1 !important; -} - -.tab-icon-stack { - display: flex !important; -} - -.tab-icon-stack[indicator-replaces-favicon="true"] .tab-icon-image { - margin-inline-end: 0 !important; -} - -/*#tabbrowser-tabs tab:first-of-type:last-of-type, -#tabbrowser-tabs tab:first-of-type:last-of-type ~ #tabs-newtab-button, -#tabbrowser-tabs - tab:first-of-type:last-of-type - ~ #tabbrowser-arrowscrollbox-periphery - #tabs-newtab-button, -#tabbrowser-tabs tab:first-of-type:last-of-type { - display: none !important; -}*/ - -#reload-button, -#stop-button, -#reload-button:not([displaystop]) + #stop-button, -#reload-button[displaystop] { - display: inherit !important; -} - -#stop-reload-button { - flex-direction: var(--stop-reload-order) !important; -} - -#urlbar[breakout-extend] { - top: calc( - var((--urlbar-toolbar-height) - var(--urlbar-height)) / 2 - ) !important; - left: 0 !important; - width: 100% !important; -} - -#urlbar[breakout-extend] #urlbar-input-container { - height: var(--urlbar-height) !important; - padding-block: 0px !important; - padding-inline: 0px !important; -} - -:root[inFullscreen] #browser-bottombox { - display: none !important; -} - -:root[inFullscreen] .browserStack { - -moz-default-appearance: none !important; - -moz-appearance: none !important; -} - -.bookmark-item { - border: 1px solid transparent; - border-radius: 0 !important; - margin: 0 !important; - background: transparent !important; - padding: 2px !important; -} - -.bookmark-item[label=""], -#tabs-newtab-button, -.toolbarbutton-1:not(#activity_throbber):not(#back-button):not(#ie6_statusbar), -#PlacesChevron, -#sidebar-close, -#placesToolbar > toolbarbutton:not([disabled]) { - width: 22px; - height: 22px !important; -} - -#status-bar { - gap: 2px; -} - -#status-bar .toolbaritem-combined-buttons { - height: 18px !important; - min-height: 18px !important; -} - -#status-bar - .toolbarbutton-1:not(#activity_throbber):not(#back-button):not( - #ie6_statusbar - ) { - width: 22px; - height: 18px !important; - min-height: 18px !important; - box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; -} - -.bookmark-item:not(.menuitem-iconic):hover, -#tabs-newtab-button:hover, -.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( - [disabled] - ):hover, -#PlacesChevron:hover, -#sidebar-close:hover, -#placesToolbar > toolbarbutton:not([disabled]):hover { - border-top-color: ThreeDHighlight !important; - border-left-color: ThreeDHighlight !important; - border-right-color: ThreeDShadow !important; - border-bottom-color: ThreeDShadow !important; - background-color: transparent !important; - border-radius: 0 !important; -} - -.bookmark-item:active, -.bookmark-item[open="true"], -#sidebar-close:active, -#tabs-newtab-button:active, -.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( - [disabled] - ):active, -.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar)[open="true"], -#PlacesChevron[open="true"], -#PlacesChevron:active, -#placesToolbar > toolbarbutton:not([disabled]):active { - border-top-color: ThreeDShadow !important; - border-left-color: ThreeDShadow !important; - border-right-color: ThreeDHighlight !important; - border-bottom-color: ThreeDHighlight !important; - background-color: transparent !important; - border-radius: 0 !important; -} - -#PlacesChevron[open="true"] .toolbarbutton-icon, -#PlacesChevron:active .toolbarbutton-icon, -#PlacesToolbar .bookmark-item:active > *, -#PlacesToolbar .bookmark-item[open="true"] > *, -.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):active > *, -.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar)[open="true"] > *, -#viewButton[open="true"] .button-box, -#viewButton:active .button-box, -#sidebar-close:active .toolbarbutton-icon, -.close-icon.findbar-closebutton:active, -.findbar-find-previous:not([disabled="true"]):active .toolbarbutton-icon, -.findbar-find-next:not([disabled="true"]):active .toolbarbutton-icon, -#tabs-newtab-button:active .toolbarbutton-icon, -#placesToolbar > toolbarbutton:not([disabled]):active { - transform: translate(1px, 1px); -} - -#PlacesToolbarItems > toolbarseparator { - padding-inline: 0 !important; - margin: 2px !important; -} - -#PlacesToolbarItems > toolbarseparator::before { - display: none !important; -} - -.bookmark-item[container] { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURZmZAAAAAPHx8f//zP//mczMZv/MmQAAAHwygQUAAAAIdFJOU/////////8A3oO9WQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAFBJREFUKFNdz0kSwCAIBVEICPe/cT5DkWC74slCya8AFHHPAHpEVEeITpV7uS9fejhAJ1tgOHsD8oO43xspA3VvDT1hLuiHVQDnVXxud4H7C0+1BHuF0oyhAAAAAElFTkSuQmCC") !important; -} - -.bookmark-item[open="true"][container] { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURZmZAPj4+P//mczMZgAAAP/MmQAAAICpg0sAAAAHdFJOU////////wAaSwNGAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAWElEQVQoU13PWw7AIAwDwdA87n/k2oagiG1/PKJItXoiGNtTYIu1GPbHls5hNoCQxwAGmLngHMgvPfxC8t3Qd+BEWuARYGHjGwLk7HQLwUhQMetfuD1Q9QOj9wNL8v7HsAAAAABJRU5ErkJggg==") !important; -} - -.bookmark-item .toolbarbutton-text { - margin-right: 2px !important; -} - -/*#PlacesToolbar menupopup { - background: transparent !important; - padding: 0 !important; - box-shadow: none !important; -}*/ - -.tab-throbber { - display: none !important; -} - -#PlacesToolbarItems::before { - content: "Links"; - display: inline-block; - height: 100%; - line-height: 22px; - padding-left: 4px; - padding-right: 4px; -} - -#additional_top_toolbar1::before { +/* Adds "Address" to navigation bar if desired to use that instead of a separate bar */ +/*#nav-bar::before { content: "Address"; display: block; height: 100%; @@ -628,1645 +65,4 @@ toolbarspring { padding-left: 4px; padding-right: 4px; -moz-box-ordinal-group: 1 !important; -} - -#additional_top_toolbar1::after, -.browser-toolbar:not(#TabsToolbar)::after { - content: ""; - display: var(--lock-toolbars); - width: 3px; - box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; - margin: 2px; - margin-right: 0; - cursor: ew-resize; - -moz-box-ordinal-group: 0 !important; -} - -#nav-bar::after, -#toolbar-menubar::after { - margin-right: 4px !important; -} - -#urlbar-container { - display: flex !important; -} - -#PersonalToolbar { - padding-left: 0 !important; - -moz-box-ordinal-group: 10 !important; -} - -#TabsToolbar { - -moz-box-ordinal-group: 11 !important; -} - -.tab-icon-overlay[soundplaying] { - list-style-image: none !important; - mask-position: center center; - mask-repeat: no-repeat; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURQAAAAAAAKVnuc8AAAACdFJOU/8A5bcwSgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAADFJREFUGFdjYEQGWHkoFAOQArHAPAYQD8QEIRAAMgjzwHy4PjAXwoLw0CgoQOYxMgIAL5wAhbFaK4UAAAAASUVORK5CYII=") !important; - background: -moz-DialogText !important; -} - -.tab-icon-overlay[muted] { - list-style-image: none !important; - mask-position: center center; - mask-repeat: no-repeat; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURQAAAAAAAKVnuc8AAAACdFJOU/8A5bcwSgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAADNJREFUGFdtigEKADAIAvX/n17OhBoTSa8Cp36U3U1MQlFbXTePkL+em0u7SGk5N0WTyAMtxwCAzRsJ1wAAAABJRU5ErkJggg==") !important; - background: -moz-DialogText !important; -} - -.tab-icon-overlay[activemedia-blocked] { - list-style-image: none !important; - mask-position: center center; - mask-repeat: no-repeat; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAdSURBVChTYxhQ8B+KQQCZjReMaoKCQa6JFoCBAQARRSPdHMGSFgAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") !important; - background: -moz-DialogText !important; -} - -.tab-icon-overlay[indicator-replaces-favicon] { - padding: 0 !important; - border-radius: 0 !important; - margin-inline-end: 3px !important; -} - -.tab-icon-overlay[pinned]:not([soundplaying]):not([muted]):not( - [activemedia-blocked] - ) { - display: none !important; -} - -.tabbrowser-tab::before { - content: ""; - display: block; - width: calc(100% - 1px); - height: 2px; - margin-top: -8px; - left: 0; - appearance: menuseparator; - position: absolute; - z-index: 2; - pointer-events: none !important; -} - -.tabbrowser-tab:not([selected="true"])::before { - margin-top: -10px !important; -} - -#tabs-newtab-button { - min-height: 22px !important; - min-width: 24px !important; - border: 1px solid transparent; - padding: 0 !important; - background: transparent !important; -} - -toolbar:not(#TabsToolbar) #new-tab-button { - width: 24px !important; -} - -#tabs-newtab-button .toolbarbutton-icon, -toolbar:not(#TabsToolbar) #new-tab-button .toolbarbutton-icon, -#TabsToolbar #wrapper-new-tab-button #new-tab-button, -#tabs-newtab-button, -#TabsToolbar #new-tab-button { - padding: 0 !important; - width: 16px !important; - height: 16px !important; - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAA2UExURYCAgP///+Pj40JCQsDAwDOZADPMMzNmAACAgDNm/8z//zPM/zP//wBmAAAAAACAAAAA/wAAAD6tG54AAAASdFJOU///////////////////////AOK/vxIAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABmSURBVChTXc7REoUgCEVR04NWBLf+/2cvpBbTfnKWDEMKXV5KyyiXmxxARDCAkwGoUlvhgOKw7a0xbwGOg1k0wE9YagCpH4DIeWpYukBVc37Anr0B5a2DHYvZhDFgdQgjE8a/Va4/5y0FqgTh7iIAAAAASUVORK5CYII=") !important; -} - -#TabsToolbar #new-tab-button { - padding-inline: 3px !important; -} - -toolbar #new-tab-button.toolbarbutton-1 > .toolbarbutton-icon { - padding: 0 !important; -} - -.tab-icon-pending { - display: none !important; -} - -#urlbar-container { - padding-top: 0 !important; - padding-bottom: 0 !important; - margin-inline: 0 !important; -} - -#urlbar[breakout] { - min-height: var(--urlbar-height) !important; - font: menu !important; - display: -moz-box !important; -} - -#urlbar[breakout][breakout-extend] { - display: block !important; -} - -#urlbar[breakout][breakout-extend] #identity-box { - margin-inline-end: 1px !important; -} - -#PersonalToolbar { - overflow: unset !important; -} - -#urlbar-input-container { - border: 0 !important; -} - -#tracking-protection-icon-container, -#star-button-box, -#identity-icon-box, -#identity-permission-box { - display: none !important; -} - -#favimginurlbar { - margin: 2px !important; -} - -#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background, -#searchbar:focus-within { - outline: 0 !important; - box-shadow: none !important; -} - -#identity-box { - margin-inline-end: 2px !important; -} - -#urlbar-go-button, -.urlbarView-row[label]::before { - display: none !important; -} - -.urlbarView-row[label] { - margin-block-start: 0 !important; -} - -.urlbarView-row:not([type="tip"], [type="dynamic"])[selected] - > .urlbarView-row-inner, -.urlbarView-row-inner[selected] { - background-color: Highlight !important; - color: HighlightText !important; -} - -.urlbarView-row { - padding-block: 0 !important; - border-radius: 0 !important; - padding: 0 !important; -} - -:root:not([uidensity="compact"]) .urlbarView-row-inner { - min-height: 100% !important; - padding-block: 0 !important; - padding-inline: 3px !important; - padding-top: 1px !important; -} - -:root:not([uidensity="compact"]) - .urlbarView-row:not([type="tip"], [type="dynamic"]) { - min-height: unset !important; -} - -.urlbarView-row-inner { - padding-block: 3px !important; - border-radius: 0 !important; - padding-inline: 2px !important; -} - -.urlbarView-row:not([type="tip"], [type="dynamic"], [has-buttons]):hover - > .urlbarView-row-inner, -.urlbarView-row[has-buttons] > .urlbarView-row-inner:not([selected]):hover { - background-color: Highlight !important; - color: HighlightText !important; -} - -#back-button, -#forward-button, -#stop-button, -#reload-button, -#home-button, -#downloads-button, -#history-panelmenu, -#bookmarks-menu-button, -#print-button, -#new-window-button, -#cut-button, -#copy-button, -#paste-button, -#fullscreen-button, -#find-button, -#email-link-button, -#sidebar-button, -#library-button { - list-style-image: none !important; - -moz-context-properties: unset !important; - fill: unset !important; - opacity: unset !important; -} - -#back-button > .toolbarbutton-icon, -#forward-button > .toolbarbutton-icon, -#stop-button > .toolbarbutton-icon, -#reload-button > .toolbarbutton-icon, -#home-button > .toolbarbutton-icon, -#downloads-button > .toolbarbutton-icon, -#downloads-button > .toolbarbutton-badge-stack, -#history-panelmenu > .toolbarbutton-icon, -#bookmarks-menu-button > .toolbarbutton-icon, -#print-button > .toolbarbutton-icon, -#new-window-button > .toolbarbutton-icon, -#cut-button > .toolbarbutton-icon, -#copy-button > .toolbarbutton-icon, -#paste-button > .toolbarbutton-icon, -#fullscreen-button > .toolbarbutton-icon, -#find-button > .toolbarbutton-icon, -#email-link-button > .toolbarbutton-icon, -#sidebar-button > .toolbarbutton-icon, -#library-button > .toolbarbutton-icon { - padding: 0 !important; - opacity: unset !important; - width: 16px !important; - height: 16px !important; -} - -#back-button > .toolbarbutton-icon { - list-style-image: url("toolbar/back.png") !important; -} -#forward-button > .toolbarbutton-icon { - list-style-image: url("toolbar/forward.png") !important; -} -#stop-button > .toolbarbutton-icon { - list-style-image: url("toolbar/stop.png") !important; -} -#reload-button > .toolbarbutton-icon { - list-style-image: url("toolbar/refresh.png") !important; -} -#home-button > .toolbarbutton-icon { - list-style-image: url("toolbar/home.png") !important; -} -#downloads-button > .toolbarbutton-icon, -#downloads-button > .toolbarbutton-badge-stack, -#downloads-button > .toolbarbutton-badge-stack > #downloads-indicator-anchor { - list-style-image: url("toolbar/downloads.png") !important; -} -#history-panelmenu > .toolbarbutton-icon { - list-style-image: url("toolbar/history.png") !important; -} -#library-button > .toolbarbutton-icon, -#bookmarks-menu-button > .toolbarbutton-icon { - list-style-image: url("toolbar/bookmarks.png") !important; -} -#print-button > .toolbarbutton-icon { - list-style-image: url("toolbar/print.png") !important; -} -#new-window-button > .toolbarbutton-icon { - list-style-image: url("toolbar/new.png") !important; -} -#cut-button > .toolbarbutton-icon { - list-style-image: url("toolbar/cut.png") !important; -} -#copy-button > .toolbarbutton-icon { - list-style-image: url("toolbar/copy.png") !important; -} -#paste-button > .toolbarbutton-icon { - list-style-image: url("toolbar/paste.png") !important; -} -#fullscreen-button > .toolbarbutton-icon { - list-style-image: url("toolbar/fullscreen.png") !important; -} -#find-button > .toolbarbutton-icon { - list-style-image: url("toolbar/find.png") !important; -} -#email-link-button > .toolbarbutton-icon { - list-style-image: url("toolbar/email.png") !important; -} -#sidebar-button > .toolbarbutton-icon { - list-style-image: url("toolbar/sidebar.png") !important; -} - -#back-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/back.png") !important; -} -#forward-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/forward.png") !important; -} -#stop-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/stop.png") !important; -} -#reload-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/refresh.png") !important; -} -#home-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/home.png") !important; -} -#downloads-button:hover > .toolbarbutton-icon, -#downloads-button:hover > .toolbarbutton-badge-stack, -#downloads-button:hover - > .toolbarbutton-badge-stack - > #downloads-indicator-anchor, -#downloads-button[open] > .toolbarbutton-icon, -#downloads-button[open] > .toolbarbutton-badge-stack, -#downloads-button[open] - > .toolbarbutton-badge-stack - > #downloads-indicator-anchor { - list-style-image: url("toolbar/hover/downloads.png") !important; -} -#history-panelmenu:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/history.png") !important; -} -#library-button:hover > .toolbarbutton-icon, -#bookmarks-menu-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/bookmarks.png") !important; -} -#print-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/print.png") !important; -} -#new-window-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/new.png") !important; -} -#cut-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/cut.png") !important; -} -#copy-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/copy.png") !important; -} -#paste-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/paste.png") !important; -} -#fullscreen-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/fullscreen.png") !important; -} -#find-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/find.png") !important; -} -#email-link-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/email.png") !important; -} -#sidebar-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/sidebar.png") !important; -} - -#nav-bar - toolbarbutton:not(#tabs-newtab-button):not(:hover):not( - #forward-button[disabled="true"] - ):not(#back-button[disabled="true"]) - .toolbarbutton-icon { - mix-blend-mode: var(--toolbar-tinting); -} - -#nav-bar .toolbarbutton-1 { - min-height: 12px !important; -} - -.toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not(#status-text) { - border: 1px solid transparent; -} -#status-bar - .toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( - #status-text - ), -#status-bar - .toolbarbutton-1:not(#activity_throbber):not(#ie6_statusbar):not( - #status-text - ):hover { - border: none !important; - border-radius: 0 !important; -} - -toolbarbutton:where([disabled="true"]) { - color: ThreeDShadow !important; - text-shadow: 1px 1px 0 ThreeDHighlight; -} - -#nav-bar #back-button:where([disabled="true"]), -#nav-bar #forward-button:where([disabled="true"]) { - border-color: transparent !important; -} - -toolbar:not(#nav-bar) .webextension-browser-action { - padding: 0 4px !important; -} - -#PersonalToolbar - .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active), -#tabbrowser-arrowscrollbox:not([scrolledtostart="true"])::part( - scrollbutton-up - ):hover:active, -#tabbrowser-arrowscrollbox:not([scrolledtoend="true"])::part( - scrollbutton-down - ):hover:active, -toolbarbutton.bookmark-item:hover:active:not(.subviewbutton, [disabled="true"]), -toolbarbutton.bookmark-item[open="true"], -toolbar - .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active) - > .toolbarbutton-icon, -toolbar - .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active) - > .toolbarbutton-text, -toolbar - .toolbarbutton-1:not([disabled="true"]):is([open], [checked], :hover:active) - > .toolbarbutton-badge-stack { - background: transparent !important; -} - -#nav-bar .toolbarbutton-icon { - margin-left: 1px !important; - margin-right: 1px !important; -} - -#back-button[disabled="true"] .toolbarbutton-icon, -#forward-button[disabled="true"] .toolbarbutton-icon { - fill: currentColor; - color: ThreeDShadow; - filter: drop-shadow(1px 1px 0 ThreeDHighlight) !important; - -moz-context-properties: fill, fill-opacity; -} - -#nav-bar #back-button[disabled="true"] > *, -#nav-bar #forward-button[disabled="true"] { - transform: none !important; -} - -#back-button[disabled="true"] .toolbarbutton-icon, -#forward-button[disabled="true"] .toolbarbutton-icon { - list-style-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZlcnNpb249IjEuMSIgZmlsbD0iY29udGV4dC1maWxsIiBmaWxsLW9wYWNpdHk9ImNvbnRleHQtZmlsbC1vcGFjaXR5IiB2aWV3Qm94PSIwIDAgNC4yMzMzIDQuMjMzMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBzdHJva2Utd2lkdGg9Ii4yNjQ1OCI+PHJlY3QgeD0iLjUyOTE3IiB5PSIxLjg1MjEiIHdpZHRoPSIzLjE3NSIgaGVpZ2h0PSIuNTI5MTciLz48cmVjdCB4PSIuNzkzNzUiIHk9IjEuNTg3NSIgd2lkdGg9IjIuOTEwNCIgaGVpZ2h0PSIxLjA1ODMiLz48cmVjdCB4PSIxLjMyMjkiIHk9IjEuMDU4MyIgd2lkdGg9Ii41MjkxNyIgaGVpZ2h0PSIyLjExNjciLz48cmVjdCB4PSIxLjU4NzUiIHk9Ii43OTM3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIyLjY0NTgiLz48cmVjdCB4PSIxLjA1ODMiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIxLjU4NzUiLz48L2c+PC9zdmc+Cg==") !important; -} - -#forward-button[disabled="true"] .toolbarbutton-icon, -#forward-button[disabled="true"]:active .toolbarbutton-icon, -#forward-button[disabled="true"] .toolbarbutton-icon:active { - transform: scaleX(-1) !important; -} - -#nav-bar - .toolbarbutton-1:not(#back-button[disabled="true"]):not( - #forward-button[disabled="true"] - ):hover - .toolbarbutton-icon, -#nav-bar - .toolbarbutton-1:not(#back-button[disabled="true"]):not( - #forward-button[disabled="true"] - ):active - .toolbarbutton-icon, -#nav-bar - .toolbarbutton-1:not(#back-button[disabled="true"]):not( - #forward-button[disabled="true"] - )[open="true"] - .toolbarbutton-icon { - filter: none !important; -} - -#nav-bar-customization-target > :is(toolbarbutton, toolbaritem):first-child, -#nav-bar-customization-target - > toolbarpaletteitem:first-child - > :is(toolbarbutton, toolbaritem) { - padding-inline-start: 0 !important; -} - -#nav-bar { - height: 24px; -} - -#nav-bar .toolbarbutton-1 .toolbarbutton-text { - padding-left: 3px !important; - padding-top: 0 !important; - padding-bottom: 0 !important; - min-height: unset !important; -} - -#back-button .toolbarbutton-text { - display: var(--hide-back-button-text) !important; -} - -#find-button .toolbarbutton-text { - display: var(--hide-find-button-text) !important; -} - -#bookmarks-menu-button .toolbarbutton-text, -#library-button .toolbarbutton-text { - display: var(--hide-bookmarks-menu-button-text) !important; -} - -#history-panelmenu .toolbarbutton-text { - display: var(--hide-history-button-text) !important; -} - -#edit-controls { - margin: 0 !important; - display: flex; -} - -#edit-controls separator { - display: none !important; -} - -#edit-controls .toolbarbutton-1 { - width: 24px !important; - height: 100% !important; -} - -#downloads-button .toolbarbutton-animatable-box { - display: none !important; -} - -#downloads-button[indicator] - > .toolbarbutton-badge-stack - > image.toolbarbutton-icon { - display: unset !important; -} - -toolbarpaletteitem[mousedown] > toolbarbutton > .toolbarbutton-icon, -toolbarpaletteitem[mousedown] - > toolbarbutton - > .toolbarbutton-badge-stack - > .toolbarbutton-icon { - transform: none !important; -} - -.urlbarView-favicon { - margin-inline-end: 3px !important; -} - -#urlbar[open] > #urlbar-background { - box-shadow: none !important; -} - -.urlbarView { - border-inline: 0 !important; - margin-inline: 0 !important; - width: calc(100% + 16px) !important; - padding: 0 !important; - border-inline: 1px solid red; -} - -.urlbarView-body-outer { - border: 1px solid #000; - background-color: Window !important; -} - -.urlbarView-results { - padding-block: 0 !important; -} - -.webextension-browser-action .toolbarbutton-badge-stack { - padding: 0 !important; -} - -#PanelUI-menu-button { - list-style-image: none !important; -} - -#PersonalToolbar - .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover, -#tabbrowser-arrowscrollbox:not([scrolledtostart="true"])::part( - scrollbutton-up - ):hover, -#tabbrowser-arrowscrollbox:not([scrolledtoend="true"])::part( - scrollbutton-down - ):hover, -toolbarbutton.bookmark-item:not( - .subviewbutton, - [disabled="true"], - [open] - ):hover, -toolbar - .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover - > .toolbarbutton-icon, -toolbar - .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover - > .toolbarbutton-text, -toolbar - .toolbarbutton-1:not([disabled="true"], [checked], [open], :active):hover - > .toolbarbutton-badge-stack { - background: transparent !important; -} - -#BMB_bookmarksPopup { - box-shadow: none !important; - padding: 0 !important; -} - -#tabbrowser-tabs, -#tabbrowser-arrowscrollbox, -#tabbrowser-tabs[positionpinnedtabs] - > #tabbrowser-arrowscrollbox - > .tabbrowser-tab[pinned] { - min-height: 0 !important; -} - -#favimginurlbar[style='width: 16px; height: 16px; margin: 3px; list-style-image: url("chrome://branding/content/icon32.png");'] -{ - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; -} - -#PlacesChevron, -#nav-bar-overflow-button { - width: 16px !important; - height: 100% !important; - border: 1px solid transparent; - list-style-image: none !important; - padding: 0 !important; -} - -#personal-toolbar-empty-description, -#PersonalToolbar .toolbarbutton-1, -toolbarbutton.bookmark-item:not(.subviewbutton) { - margin: 0 !important; -} - -#PlacesChevron .toolbarbutton-icon, -#nav-bar-overflow-button .toolbarbutton-icon { - mask-position: center 4px; - width: 8px !important; - height: 100% !important; - padding: 6px !important; - margin: 0 !important; - background-color: WindowText !important; - mask-repeat: no-repeat; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAoSURBVBhXYwCC/1AMA+h8MMCpiBFEQAFMAUwMWQNCBxSg8PFIMjAAAMnUEfGcoUqiAAAAAElFTkSuQmCC") !important; -} - -findbar { - background-color: ThreeDFace !important; - color: WindowText !important; - transition: none !important; - border-top: 0 !important; - padding-block-start: 4px !important; - padding-block-end: 4px !important; -} - -.findbar-textbox { - border-radius: 0 !important; - border: 0 !important; - -moz-default-appearance: listbox !important; - -moz-appearance: listbox !important; - background-color: unset !important; - padding: 0px 3px !important; - height: 22px !important; -} - -.findbar-find-previous, -.findbar-find-next { - padding: 0 !important; - width: 22px !important; - min-height: 22px !important; - border-radius: 0 !important; - mask-repeat: no-repeat !important; - mask-position: center center !important; - border: 1px solid transparent; - background-color: -moz-Dialog !important; -} - -.findbar-find-previous { - margin-inline: 4px 0 !important; -} - -.findbar-find-next { - margin-inline-end: 4px !important; -} - -hbox[anonid="findbar-textbox-wrapper"]::after { - content: "" !important; - height: 20px !important; - display: inline-block !important; - border-left: 1px solid ThreeDShadow !important; - border-right: 1px solid ThreeDHighlight !important; -} - -.findbar-find-previous:not([disabled="true"]):hover, -.findbar-find-next:not([disabled="true"]):hover { - box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; -} - -.findbar-find-previous:not([disabled="true"]):active, -.findbar-find-next:not([disabled="true"]):active { - box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; -} - -.findbar-find-previous .toolbarbutton-icon, -.findbar-find-next .toolbarbutton-icon { - list-style-image: none !important; - mask-repeat: no-repeat !important; - mask-position: center center !important; - background-color: WindowText !important; - padding: 0 !important; - min-width: 20px; - min-height: 20px; -} - -.findbar-find-next .toolbarbutton-icon { - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAkSURBVBhXY2RgYPgPxFgBSBIEsClghEmCALICZHE4QFLAwAAA+twEAr6ulF8AAAAASUVORK5CYII=") !important; -} - -.findbar-find-previous .toolbarbutton-icon { - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAlSURBVBhXY0AD/6E0GDBCaRBAlgCLwyRRdEABI0gSmwQQMDAAAPqFBAIR7Pg5AAAAAElFTkSuQmCC") !important; -} - -.findbar-container { - height: 22px !important; - margin-inline-start: 0 !important; - overflow-inline: unset !important; -} - -.findbar-container::before { - content: "Find:" !important; - display: inline-block !important; - margin-inline-start: 4px !important; - margin-inline-end: 4px !important; -} - -.findbar-textbox:focus { - outline: 0 !important; -} - -.toolbarbutton.tabbable { - padding: 0 !important; -} - -.browserContainer { - flex-direction: column-reverse !important; -} - -findbar { - flex-direction: row-reverse !important; -} - -.close-icon.findbar-closebutton { - list-style-image: none !important; - height: 22px !important; - width: 22px !important; - border-radius: 0 !important; - padding: 0 !important; - margin: 0 !important; - margin-inline-start: 4px !important; - margin-inline-end: 4px !important; - background-color: WindowText !important; - mask-repeat: no-repeat !important; - mask-position: center center !important; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURQAAAAAAAKVnuc8AAAACdFJOU/8A5bcwSgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAACRJREFUGFdjYGBgBAIgBWaBSTAbSEG5yAwQDVUBEQTRjIwMDAADqAAZRZMazAAAAABJRU5ErkJggg==") !important; -} - -#sidebar-box { - margin-right: 4px; - appearance: groupbox !important; - background-color: ThreeDFace !important; -} - -#historyTree, -#bookmarks-view, -#template-container { - background-color: Window !important; -} - -treecol, -treecolpicker { - border: 0 !important; -} - -#sidebar-search-container, -#sidebar-header { - font: Menu !important; - box-shadow: inset 0 -1px ThreeDShadow !important; - border-bottom: 1px solid ThreeDHighlight !important; -} - -#sidebar-icon { - list-style-image: none !important; - width: 0 !important; - height: 0 !important; -} - -#sidebar-header { - padding: 1px !important; - padding-bottom: 2px !important; -} - -#sidebar-close { - width: 20px !important; - height: 17px !important; - border: 1px solid transparent; - background-color: transparent !important; - padding: 0 !important; - list-style-image: none !important; - border-radius: 0 !important; -} - -#sidebar-close .toolbarbutton-icon { - background-color: WindowText !important; - width: 8px !important; - height: 7px !important; - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA4SURBVBhXY2RgYPgPxCAAYiMDmDgYgDjIAnA+si4UHUCAbiIYoJtEvAnoOuF8kCqYBLqdQHEGBgAx7A/5GaSbcgAAAABJRU5ErkJggg==") !important; -} - -#sidebar-title { - padding-inline: 0 !important; -} - -#sidebar-switcher-arrow { - display: none !important; -} - -#sidebar-switcher-target { - padding: 3px 5px !important; - border: 0 !important; - border-radius: 0 !important; - background-color: transparent !important; -} - -#sidebar-switcher-target:hover { - box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; -} - -#sidebar-switcher-target:hover { - box-shadow: inset -1px -1px 0 ThreeDShadow, inset 1px 1px 0 ThreeDHighlight; -} - -#sidebar-switcher-target[open="true"] { - box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow; -} - -#sidebar-switcher-target[open="true"] #sidebar-title { - transform: translate(1px, 1px); -} - -#sidebar-search-container { - padding: 2px !important; -} - -.textbox-search-sign { - display: none !important; -} - -#viewButton { - appearance: button !important; -} - -#search-box { - padding: 2px !important; -} - -.content-header { - background-color: ThreeDFace !important; -} - -.sidebar-search-container { - padding: 2px !important; -} - -.tabsFilter { - margin: 0 !important; -} - -#main-window:-moz-window-inactive .menubar-text, -#wrapper-menubar-items .menubar-text { - color: ThreeDShadow; -} - -.menu-text, -.menu-iconic-text { - margin-inline-start: 0 !important; -} - -.menu-iconic-icon { - margin-left: -2px !important; -} - -#main-menubar { - display: flex !important; -} - -treechildren::-moz-tree-row { - height: 40% !important; - min-height: 40% !important; -} - -treechildren::-moz-tree-image(title, query, dayContainer), -treechildren::-moz-tree-image(query, OrganizerQuery_history____v) { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAeUExURWOczjExnDFjzmNjAJycY////87OnAAAAJwxYwAAAAggbzMAAAAKdFJOU////////////wCyzCzPAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAATElEQVQoU23PUQpAIQhEUX2Z5v433CCPGKNDX5cmSDKFqeTHFEHZQLA5/RyLV3Bf4OW/serQ5AqPyfUohxGCxWGGMJqaNAjR4fsscwNQNAUR4NgQXAAAAABJRU5ErkJggg==") !important; -} - -.titlebar-button { - list-style-image: none !important; - height: 20px !important; - min-width: 20px !important; - padding: 0 !important; - margin-top: 2px !important; -} - -.titlebar-min { - appearance: -moz-window-button-minimize !important; -} - -.titlebar-restore { - appearance: -moz-window-button-restore !important; -} - -.titlebar-max { - appearance: -moz-window-button-maximize !important; -} - -.titlebar-close { - appearance: -moz-window-button-close !important; -} - -.notification-anchor-icon { - padding: 0 !important; - margin-inline-start: 2px !important; -} - -.bookmark-item, -.bookmark-item > label::before, -.bookmark-item .menu-iconic-icon { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; -} - -.tab-icon-image:not([src]), -.tab-icon-image:-moz-broken { - content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABgUExURYaGhv///5mZmVVVVf/78ABmzDMzMwAAgDNm//Hx8czMzHd3d2aZmZnMzDMzzGb//+rq6pmZZv//mQDM/+fn1v/MmcyZZjNmzF9fXwAzmcDAwABmmYCAADMzZgQEBAAAANSdJEsAAAAgdFJOU/////////////////////////////////////////8AXFwb7QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIpJREFUKFNNjFsWgyAMREUIRGhTbOlLW7P/XRoD2t6Tj8w9k3TM3O3IzipMpbeHcEpvxOwCwDnrvVcRQHA4xD7ZTYTTmegCg8tRvnQcxqvU6QZDLnET6Y7bCUAuKtLjidKQg1Ibr/GNOE2Ec2t86EsoSG4/iJdlnjVXwZRMliDTBKd40IT9oeIP5hU1fA8vue4FsgAAAABJRU5ErkJggg==") !important; -} - -.desktop-notification-icon { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAPUExURYCAgP///wAAAMDAwAAAAGFF8HEAAAAFdFJOU/////8A+7YOUwAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAFlJREFUKFNdjkESwDAIAhPk/28uYG2b7sEJO4xxUazGT2qutRsgYqIomUNsKCpDeKTyLGig3d0IIz5Y1N1wLonzW0US9eYIIqrgHNEqcYSUrzQjVPoJ3axBXuvmAgsbIC+oAAAAAElFTkSuQmCC") !important; -} - -:root[sizemode="maximized"] .browserStack { - margin-left: -2px !important; - margin-right: -2px !important; -} - -#PanelUI-menu-button, -#PanelUI-menu-button .toolbarbutton-icon { - display: none !important; -} - -#PanelUI-menu-button { - padding: 0 !important; - border: 0 !important; -} - -#PanelUI-menu-button .toolbarbutton-badge-stack { - padding: 0 !important; -} - -.checkbox-check { - background-color: Window !important; - border: 0 !important; - border-radius: 0 !important; - box-shadow: inset -1px -1px 0 ThreeDHighlight, inset 1px 1px 0 ThreeDShadow, - inset -2px -2px 0 ThreeDFace, inset 2px 2px 0 ThreeDDarkShadow; -} - -.checkbox-check:not([native]) { - width: 13px !important; - height: 13px !important; -} - -.checkbox-check[checked] { - color: WindowText !important; - background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHZlcnNpb249IjEuMSIgZmlsbD0iY29udGV4dC1maWxsIiBmaWxsLW9wYWNpdHk9ImNvbnRleHQtZmlsbC1vcGFjaXR5IiB2aWV3Qm94PSIwIDAgMy40Mzk2IDMuNDM5NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Zz48Zz48cmVjdCB4PSIuNzkzNzUiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIyLjM4MTIiIHk9Ii43OTM3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIyLjExNjciIHk9IjEuMDU4MyIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIxLjg1MjEiIHk9IjEuMzIyOSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuNzkzNzUiLz48cmVjdCB4PSIxLjA1ODMiIHk9IjEuODUyMSIgd2lkdGg9Ii43OTM3NSIgaGVpZ2h0PSIuNTI5MTciLz48cmVjdCB4PSIxLjMyMjkiIHk9IjIuMzgxMiIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48cmVjdCB4PSIxLjA1ODMiIHk9IjEuNTg3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48cmVjdCB4PSIxLjU4NzUiIHk9IjEuNTg3NSIgd2lkdGg9Ii4yNjQ1OCIgaGVpZ2h0PSIuMjY0NTgiLz48L2c+PC9nPjwvc3ZnPgo=") !important; -} - -#urlbar[open] > .urlbarView > .urlbarView-body-outer > .urlbarView-body-inner { - border-top: 0 !important; -} - -#urlbar-zoom-button { - margin: 0 !important; - font: menu !important; - border-radius: 0 !important; - background-color: transparent !important; -} - -#configuration_toolbar { - -moz-box-ordinal-group: 12; -} - -#customization-panelWrapper > .panel-arrowbox > .panel-arrow[side="top"] { - display: none !important; -} - -.customizationmode-button { - appearance: button !important; - color: WindowText !important; - font-weight: 500 !important; -} - -:root[inFullscreen] #TabsToolbar { - -moz-box-ordinal-group: 0 !important; -} - -:root[inFullscreen] .tabbrowser-tab::before { - display: none !important; -} - -:root[inFullscreen] #tabbrowser-tabs tab:first-of-type:last-of-type, -:root[inFullscreen] - #tabbrowser-tabs - tab:first-of-type:last-of-type - ~ #tabs-newtab-button, -:root[inFullscreen] - #tabbrowser-tabs - tab:first-of-type:last-of-type - ~ #tabbrowser-arrowscrollbox-periphery - #tabs-newtab-button { - display: -moz-box !important; -} - -#placesToolbar { - padding: 1px !important; - appearance: groupbox !important; - background-color: -moz-Dialog !important; - margin-bottom: 2px !important; -} - -#placesToolbar .toolbarbutton-text { - display: none !important; -} - -#placesToolbar .toolbarbutton-icon, -#placesToolbar .menubar-left { - filter: grayscale(1); -} - -#placesToolbar .menu-iconic:hover .menubar-left, -#placesToolbar .menu-iconic[open="true"] .menubar-left, -#placesToolbar #back-button:not([disabled="true"]):hover .toolbarbutton-icon, -#placesToolbar - #forward-button:not([disabled="true"]):hover - .toolbarbutton-icon { - filter: none !important; -} - -#searchFilter { - min-height: 22px !important; -} - -#placesList, -#downloadsListBox, -tree { - background-color: Window !important; - color: -moz-DialogText !important; -} - -#detailsPane { - background-color: -moz-Dialog !important; - color: -moz-dialogText !important; -} - -#placeContent, -#placesViewsBox #downloadsListBox, -#placesList, -#searchFilter, -#editBMPanel_tagsSelector { - -moz-default-appearance: listbox !important; - -moz-appearance: listbox !important; - color: -moz-DialogText !important; -} - -#places input { - background-color: Field !important; - color: -moz-DialogText !important; - border: 0 !important; - border-radius: 0 !important; -} - -#searchFilter[focused], -#places input:focus { - outline: 0 !important; -} - -#searchFilter[focused] { - box-shadow: none !important; -} - -#editBookmarkPanelRows .expander-up, -#editBookmarkPanelRows .expander-down { - appearance: spinner-downbutton !important; - list-style-image: none !important; - padding: 2px !important; - height: 22px !important; -} - -#editBookmarkPanelRows .expander-up { - appearance: spinner-upbutton !important; -} - -#placesList { - border-right: unset !important; - margin-right: 4px !important; -} - -treecol { - color: -moz-fieldtext !important; - padding: 0 7px !important; - box-shadow: inset -1px -1px 0 ThreeDDarkShadow, - inset 1px 1px 0 ThreeDHighlight, inset -2px -2px 0 ThreeDShadow !important; -} - -treechildren::-moz-tree-row, -treecol:not([hideheader="true"]), -treecolpicker { - min-height: 17px !important; -} - -.caption-label { - margin-inline-start: 6px !important; - color: GrayText !important; - font: -moz-window !important; -} - -#editBMPanel_tagsSelectorRow > richlistbox > richlistitem[selected] { - color: HighlightText !important; - background-color: Highlight !important; -} - -richlistbox[seltype="multiple"]:focus > richlistitem[current="true"], -richlistbox.theme-listbox:focus > richlistitem[current="true"] { - outline: 0 !important; -} - -#placesMenu > menu { - appearance: button !important; - color: -moz-DialogText !important; -} - -#organizeButton { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAzUExURZmZmf/78Ofn1k1NTcDAwBwcHOrq6mZmAK2pkDMzAP//mZmZAMzMZgAAADMAAGZmZgAAAIQzlaMAAAARdFJOU/////////////////////8AJa2ZYgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAHxJREFUKFNVzgEOAyEIBECw1T0Blf+/tnD2GktCjJN1Ix3jOURcvvN64F1rpdJOYKb/RAJwQBSCGT+4er8gCle9oRQ0TdAMbVAkxLGhiwgsQhKRBHSIAZahDWAVFlMeN7S4Y7LNaB1Oay3EG2DMaI3S/Ax67Ih9ICfR3f0DrmQINMNg/hUAAAAASUVORK5CYII=") !important; -} - -#viewMenu { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB4SURBVDhP7ZLNCcAgDIVfulIzg6t0DU/uUGfSmWziT+lJUKH00A8CiZGXPBGrEJBSzSegIrCfksdyNEL0WcAubGAB51yaIYSgg9NWlAA+xBH7nBPJahKNXu8WiLFcUGRAjkav91v4ggVSC8aYWo7BzPqV8XiR1wEuUzD3/j0F1pEAAAAASUVORK5CYII=") !important; -} - -#maintenanceButton { - list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURQAAADPM/zNm/5n//8z//zOZ/wAAAACTM88AAAAHdFJOU////////wAaSwNGAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAT0lEQVQoU62PiQ3AIAwDnXf/kWsXChmgJ2GFk4gFmuDNhUaYX8MJFsOA98yqY+AkCwsJHglmKaeIf4W7Oil2tfCIKBV/Qsb05oi5Y6PvdD8/ggRHRlWf0AAAAABJRU5ErkJggg==") !important; -} - -#placesToolbar > toolbarbutton[disabled] { - opacity: 1 !important; -} - -#placesToolbar > toolbarbutton { - border-radius: 0 !important; - appearance: button !important; - background-color: -moz-Dialog !important; - border: 1px solid transparent; - padding: 4px !important; -} - -.tabbrowser-tab[pinned="true"] .tab-label-container { - display: none !important; -} - -.tabbrowser-tab[pinned="true"]:not([selected="true"]) .tab-icon-overlay { - pointer-events: none !important; -} - -.tab-icon-overlay:not([crashed]):is([pinned], [sharing]) { - top: unset !important; - inset-inline-end: unset !important; - padding: 0 !important; - background-color: transparent !important; -} - -#context-navigation .menu-iconic-left { - padding-top: 0 !important; -} - -.urlbarView-results[wrap] - > .urlbarView-row[has-url] - > .urlbarView-row-inner - > .urlbarView-url:-moz-locale-dir(ltr) { - padding-left: 19px !important; -} - -#TabsToolbar .toolbarbutton-1 { - margin: 2px 0 0 !important; -} - -#alltabs-button { - list-style-image: none !important; - padding: 0 !important; - width: 16px !important; - min-height: 0 !important; - display: var(--show-alltabs-button) !important; -} - -#alltabs-button .toolbarbutton-icon { - mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAdSURBVDhPYxiB4D8UwwA6Hy+gv2b6aRoFKICBAQA7tRPtf9lgfQAAAABJRU5ErkJgggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") !important; - background-color: -moz-DialogText !important; - min-height: 0 !important; - width: 14px !important; - height: 14px !important; -} - -#alltabs-button .toolbarbutton-badge-stack { - padding: 0 !important; - width: 14px; - height: 14px; -} - -#alltabs-button:hover { - border-top-color: ThreeDHighlight !important; - border-left-color: ThreeDHighlight !important; - border-right-color: ThreeDShadow !important; - border-bottom-color: ThreeDShadow !important; - background-color: transparent !important; - border-radius: 0 !important; -} - -toolbar .toolbarbutton-1 > .toolbarbutton-icon { - height: 16px !important; - width: 16px !important; -} - -#wrapper-new-tab-button .toolbarbutton-icon { - padding: 0 !important; -} - -#wrapper-new-tab-button #new-tab-button { - min-width: 26px !important; -} - -#urlbar-background::after { - content: ""; - display: inline-block; - appearance: spinner-downbutton; - z-index: 99999; - padding-top: 18px !important; - width: 16px; - top: 0px; - position: absolute !important; - right: 0 !important; -} - -#wrapper-menubar-items { - opacity: 1 !important; -} - -#history-menu { - display: var(--show-history-menu-item) !important; -} - -#go-button { - padding: 0 5px !important; - margin-inline-end: 3px !important; - margin-inline-start: 2px !important; -} - -#go-button .toolbarbutton-text { - display: block; - min-height: 0 !important; - padding: 0 0 0 1px !important; -} - -#go-button .toolbarbutton-icon { - padding: 0 !important; - filter: grayscale(1); - list-style-image: url("go.png") !important; -} - -#go-button:hover .toolbarbutton-icon, -#go-button:active .toolbarbutton-icon { - filter: none; -} - -:root[uidensity="touch"] #back-button > .toolbarbutton-icon, -:root[uidensity="touch"] #forward-button > .toolbarbutton-icon, -:root[uidensity="touch"] #stop-button > .toolbarbutton-icon, -:root[uidensity="touch"] #reload-button > .toolbarbutton-icon, -:root[uidensity="touch"] #home-button > .toolbarbutton-icon, -:root[uidensity="touch"] #downloads-button > .toolbarbutton-icon, -:root[uidensity="touch"] #downloads-button > .toolbarbutton-badge-stack, -:root[uidensity="touch"] #history-panelmenu > .toolbarbutton-icon, -:root[uidensity="touch"] #bookmarks-menu-button > .toolbarbutton-icon, -:root[uidensity="touch"] #print-button > .toolbarbutton-icon, -:root[uidensity="touch"] #new-window-button > .toolbarbutton-icon, -:root[uidensity="touch"] #cut-button > .toolbarbutton-icon, -:root[uidensity="touch"] #copy-button > .toolbarbutton-icon, -:root[uidensity="touch"] #paste-button > .toolbarbutton-icon, -:root[uidensity="touch"] #fullscreen-button > .toolbarbutton-icon, -:root[uidensity="touch"] #find-button > .toolbarbutton-icon, -:root[uidensity="touch"] #email-link-button > .toolbarbutton-icon, -:root[uidensity="touch"] #sidebar-button > .toolbarbutton-icon, -:root[uidensity="touch"] #library-button > .toolbarbutton-icon { - width: 20px !important; - height: 20px !important; -} - -:root[uidensity="touch"] #back-button > .toolbarbutton-icon { - list-style-image: url("toolbar/back.png") !important; -} -:root[uidensity="touch"] #forward-button > .toolbarbutton-icon { - list-style-image: url("toolbar/forward.png") !important; -} -:root[uidensity="touch"] #stop-button > .toolbarbutton-icon { - list-style-image: url("toolbar/stop.png") !important; -} -:root[uidensity="touch"] #reload-button > .toolbarbutton-icon { - list-style-image: url("toolbar/refresh.png") !important; -} -:root[uidensity="touch"] #home-button > .toolbarbutton-icon { - list-style-image: url("toolbar/home.png") !important; -} -:root[uidensity="touch"] #downloads-button > .toolbarbutton-icon, -:root[uidensity="touch"] #downloads-button > .toolbarbutton-badge-stack, -:root[uidensity="touch"] - #downloads-button - > .toolbarbutton-badge-stack - > #downloads-indicator-anchor { - list-style-image: url("toolbar/downloads.png") !important; -} -:root[uidensity="touch"] #history-panelmenu > .toolbarbutton-icon { - list-style-image: url("toolbar/history.png") !important; -} -:root[uidensity="touch"] #library-button > .toolbarbutton-icon, -:root[uidensity="touch"] #bookmarks-menu-button > .toolbarbutton-icon { - list-style-image: url("toolbar/bookmarks.png") !important; -} -:root[uidensity="touch"] #print-button > .toolbarbutton-icon { - list-style-image: url("toolbar/print.png") !important; -} -:root[uidensity="touch"] #new-window-button > .toolbarbutton-icon { - list-style-image: url("toolbar/new.png") !important; -} -:root[uidensity="touch"] #cut-button > .toolbarbutton-icon { - list-style-image: url("toolbar/cut.png") !important; -} -:root[uidensity="touch"] #copy-button > .toolbarbutton-icon { - list-style-image: url("toolbar/copy.png") !important; -} -:root[uidensity="touch"] #paste-button > .toolbarbutton-icon { - list-style-image: url("toolbar/paste.png") !important; -} -:root[uidensity="touch"] #fullscreen-button > .toolbarbutton-icon { - list-style-image: url("toolbar/fullscreen.png") !important; -} -:root[uidensity="touch"] #find-button > .toolbarbutton-icon { - list-style-image: url("toolbar/find.png") !important; -} -:root[uidensity="touch"] #email-link-button > .toolbarbutton-icon { - list-style-image: url("toolbar/email.png") !important; -} -:root[uidensity="touch"] #sidebar-button > .toolbarbutton-icon { - list-style-image: url("toolbar/sidebar.png") !important; -} - -:root[uidensity="touch"] #back-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/back.png") !important; -} -:root[uidensity="touch"] #forward-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/forward.png") !important; -} -:root[uidensity="touch"] #stop-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/stop.png") !important; -} -:root[uidensity="touch"] #reload-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/refresh.png") !important; -} -:root[uidensity="touch"] #home-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/home.png") !important; -} -:root[uidensity="touch"] #downloads-button:hover > .toolbarbutton-icon, -:root[uidensity="touch"] #downloads-button:hover > .toolbarbutton-badge-stack, -:root[uidensity="touch"] - #downloads-button:hover - > .toolbarbutton-badge-stack - > #downloads-indicator-anchor, -:root[uidensity="touch"] #downloads-button[open] > .toolbarbutton-icon, -:root[uidensity="touch"] #downloads-button[open] > .toolbarbutton-badge-stack, -:root[uidensity="touch"] - #downloads-button[open] - > .toolbarbutton-badge-stack - > #downloads-indicator-anchor { - list-style-image: url("toolbar/hover/downloads.png") !important; -} -:root[uidensity="touch"] #history-panelmenu:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/history.png") !important; -} -:root[uidensity="touch"] #library-button:hover > .toolbarbutton-icon, -:root[uidensity="touch"] #bookmarks-menu-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/bookmarks.png") !important; -} -:root[uidensity="touch"] #print-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/print.png") !important; -} -:root[uidensity="touch"] #new-window-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/new.png") !important; -} -:root[uidensity="touch"] #cut-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/cut.png") !important; -} -:root[uidensity="touch"] #copy-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/copy.png") !important; -} -:root[uidensity="touch"] #paste-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/paste.png") !important; -} -:root[uidensity="touch"] #fullscreen-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/fullscreen.png") !important; -} -:root[uidensity="touch"] #find-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/find.png") !important; -} -:root[uidensity="touch"] #email-link-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/email.png") !important; -} -:root[uidensity="touch"] #sidebar-button:hover > .toolbarbutton-icon { - list-style-image: url("toolbar/hover/sidebar.png") !important; -} - -:root[uidensity="touch"] #nav-bar { - height: 28px; -} - -:root[uidensity="touch"] #edit-controls .toolbarbutton-1 { - width: 28px !important; -} - -:root[uidensity="touch"] #back-button[disabled="true"] .toolbarbutton-icon, -:root[uidensity="touch"] #forward-button[disabled="true"] .toolbarbutton-icon { - list-style-image: none !important; - background-color: ThreeDShadow !important; - mask-image: url("toolbar_large.png") !important; - filter: drop-shadow(1px 1px 0 ThreeDHighlight) !important; -} - -:root[uidensity="touch"] #back-button[disabled="true"], -:root[uidensity="touch"] #forward-button[disabled="true"] { - filter: drop-shadow(1px 1px 0 ThreeDHighlight) !important; -} - -:root[uidensity="touch"] #back-button[disabled="true"] .toolbarbutton-text, -:root[uidensity="touch"] #forward-button[disabled="true"] .toolbarbutton-text { - text-shadow: none !important; -} - -:root[uidensity="touch"] #search-box, -:root[uidensity="touch"] .sidebar-placesTreechildren::-moz-tree-row { - min-height: 20px !important; -} - -toolbar .toolbaritem-combined-buttons { - margin-inline: 0 !important; -} - -.unified-extensions-item-action.subviewbutton { - border-radius: 0 !important; - height: 100% !important; - width: 24px !important; - background-color: -moz-Dialog !important; -} - -toolbarbutton:where([disabled="true"]) { - text-shadow: none !important; - color: -moz-DialogText !important; -} - -#back-button:where([disabled="true"]), -#forward-button:where([disabled="true"]) { - color: ThreeDShadow !important; - text-shadow: 1px 1px 0 ThreeDHighlight !important; -} - -:root[uidensity="touch"] .unified-extensions-item-action.subviewbutton { - width: 28px !important; -} - -panelview { - background: -moz-Dialog !important; -} - -#unified-extensions-button { - padding: 0 !important; - border: 0 !important; -} - -#unified-extensions-button, -#unified-extensions-button .toolbarbutton-icon { - display: none !important; -} - -.urlbarView-dynamic-quickactions-buttons, -.urlbarView-button-help { - display: none !important; -} - -.urlbarView:not([noresults]) > .search-one-offs:not([hidden]) { - border: 1px solid #000000 !important; - margin-top: -1px !important; - background-color: Window !important; -} - -#urlbar .search-one-offs:not([hidden]) { - padding-block: 0 !important; -} - -#urlbar .searchbar-engine-one-off-item { - border-radius: 0 !important; - margin-inline: 0 !important; -} - -.searchbar-engine-one-off-item:not([selected]):hover { - background-color: Highlight !important; - color: HighlightText !important; -} - -#urlbar .search-panel-one-offs-header-label { - padding-inline: 10px !important; -} - -#personal-toolbar-empty-description { - min-height: unset !important; - display: none !important; -} - -:root[lwt-toolbar-field-brighttext] #urlbar:not([focused="true"]), -:root[lwt-toolbar-field-brighttext] #searchbar:not(:focus-within), -:root[lwt-toolbar-field-focus-brighttext] #urlbar[focused="true"], -:root[lwt-toolbar-field-focus-brighttext] #searchbar:focus-within { - color-scheme: light !important; -} - -toolbar .toolbarbutton-1 > .toolbarbutton-icon, -toolbar .toolbarbutton-1 > .toolbarbutton-text, -toolbar .toolbarbutton-1 > .toolbarbutton-badge-stack { - padding: 0 !important; - border-radius: 0 !important; -} - -.tabbrowser-tab - > .tab-stack - > .tab-content[pinned][titlechanged]:not([selected="true"]) { - background-image: none !important; -} - -toolbarbutton menupopup[placespopup] { - --panel-separator-margin-vertical: 0 !important; - --panel-shadow-margin: 0 !important; - --nested-margin: 0 !important; - --panel-shadow: none !important; - margin: 0 !important; -} - -toolbarbutton menupopup[placespopup] menuitem { - padding: 0 2px !important; - min-height: 20px !important; - border: none !important; -} - -toolbarbutton - menupopup[placespopup] - > :is(.menu-iconic, .menuitem-iconic) - > .menu-iconic-left { - margin-inline-end: 2px !important; -} - -toolbarbutton menupopup[placespopup] menuitem:hover { - background: Highlight !important; -} - -.bookmarks-actions-menuseparator, -.openintabs-menuitem { - display: none; -} - -toolbarbutton menupopup[placespopup] menuseparator { - padding: 0 !important; - margin: 0 !important; -} - -.menu-iconic-left { - width: 16px; - margin-right: 1px; -} - -.menu-text { - padding-inline-start: 18px !important; -} - -.toolbarbutton-badge-stack .toolbarbutton-badge { - margin-inline-end: 0 !important; - margin: 0 !important; - min-width: unset !important; - align-self: end !important; - border-radius: 0 !important; - padding: 0 2px 0 !important; - box-shadow: none !important; -} - -/* ff 113 */ -#personal-bookmarks { - flex-grow: 0 !important; -} -#titlebar > #toolbar-menubar > spacer[style="order: 1000;"] { - display: none; -} - -#context-navigation > .menuitem-iconic { - justify-content: left !important; -} +}*/ diff --git a/chrome/utils/BootstrapLoader.jsm b/chrome/utils/BootstrapLoader.jsm new file mode 100644 index 0000000..f90c554 --- /dev/null +++ b/chrome/utils/BootstrapLoader.jsm @@ -0,0 +1,477 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +let EXPORTED_SYMBOLS = []; + +const { XPCOMUtils } = ChromeUtils.import( + "resource://gre/modules/XPCOMUtils.jsm" +); +const Services = + globalThis.Services || + ChromeUtils.import("resource://gre/modules/Services.jsm").Services; + +XPCOMUtils.defineLazyModuleGetters(this, { + Blocklist: "resource://gre/modules/Blocklist.jsm", + ConsoleAPI: "resource://gre/modules/Console.jsm", + InstallRDF: "chrome://userchromejs/content/RDFManifestConverter.jsm", +}); + +Services.obs.addObserver((doc) => { + if ( + doc.location.protocol + doc.location.pathname === "about:addons" || + doc.location.protocol + doc.location.pathname === + "chrome:/content/extensions/aboutaddons.html" + ) { + const win = doc.defaultView; + let handleEvent_orig = + win.customElements.get("addon-card").prototype.handleEvent; + win.customElements.get("addon-card").prototype.handleEvent = function (e) { + if ( + e.type === "click" && + e.target.getAttribute("action") === "preferences" && + this.addon.optionsType == 1 /*AddonManager.OPTIONS_TYPE_DIALOG*/ + ) { + var windows = Services.wm.getEnumerator(null); + while (windows.hasMoreElements()) { + var win2 = windows.getNext(); + if (win2.closed) { + continue; + } + if (win2.document.documentURI == this.addon.optionsURL) { + win2.focus(); + return; + } + } + var features = "chrome,titlebar,toolbar,centerscreen"; + win.docShell.rootTreeItem.domWindow.openDialog( + this.addon.optionsURL, + this.addon.id, + features + ); + } else { + handleEvent_orig.apply(this, arguments); + } + }; + let update_orig = win.customElements.get("addon-options").prototype.update; + win.customElements.get("addon-options").prototype.update = function ( + card, + addon + ) { + update_orig.apply(this, arguments); + if (addon.optionsType == 1 /*AddonManager.OPTIONS_TYPE_DIALOG*/) + this.querySelector( + 'panel-item[data-l10n-id="preferences-addon-button"]' + ).hidden = false; + }; + } +}, "chrome-document-loaded"); + +const { AddonManager } = ChromeUtils.import( + "resource://gre/modules/AddonManager.jsm" +); +const { XPIDatabase, AddonInternal } = ChromeUtils.import( + "resource://gre/modules/addons/XPIDatabase.jsm" +); + +const { defineAddonWrapperProperty } = Cu.import( + "resource://gre/modules/addons/XPIDatabase.jsm" +); +defineAddonWrapperProperty("optionsType", function optionsType() { + if (!this.isActive) { + return null; + } + + let addon = this.__AddonInternal__; + let hasOptionsURL = !!this.optionsURL; + + if (addon.optionsType) { + switch (parseInt(addon.optionsType, 10)) { + case 1 /*AddonManager.OPTIONS_TYPE_DIALOG*/: + case AddonManager.OPTIONS_TYPE_TAB: + case AddonManager.OPTIONS_TYPE_INLINE_BROWSER: + return hasOptionsURL ? addon.optionsType : null; + } + return null; + } + + return null; +}); + +XPIDatabase.isDisabledLegacy = () => false; + +XPCOMUtils.defineLazyGetter(this, "BOOTSTRAP_REASONS", () => { + const { XPIProvider } = ChromeUtils.import( + "resource://gre/modules/addons/XPIProvider.jsm" + ); + return XPIProvider.BOOTSTRAP_REASONS; +}); + +const { Log } = ChromeUtils.import("resource://gre/modules/Log.jsm"); +var logger = Log.repository.getLogger("addons.bootstrap"); + +/** + * Valid IDs fit this pattern. + */ +var gIDTest = + /^(\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)$/i; + +// Properties that exist in the install manifest +const PROP_METADATA = [ + "id", + "version", + "type", + "internalName", + "updateURL", + "optionsURL", + "optionsType", + "aboutURL", + "iconURL", +]; +const PROP_LOCALE_SINGLE = ["name", "description", "creator", "homepageURL"]; +const PROP_LOCALE_MULTI = ["developers", "translators", "contributors"]; + +// Map new string type identifiers to old style nsIUpdateItem types. +// Retired values: +// 32 = multipackage xpi file +// 8 = locale +// 256 = apiextension +// 128 = experiment +// theme = 4 +const TYPES = { + extension: 2, + dictionary: 64, +}; + +const COMPATIBLE_BY_DEFAULT_TYPES = { + extension: true, + dictionary: true, +}; + +const hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty); + +function isXPI(filename) { + let ext = filename.slice(-4).toLowerCase(); + return ext === ".xpi" || ext === ".zip"; +} + +/** + * Gets an nsIURI for a file within another file, either a directory or an XPI + * file. If aFile is a directory then this will return a file: URI, if it is an + * XPI file then it will return a jar: URI. + * + * @param {nsIFile} aFile + * The file containing the resources, must be either a directory or an + * XPI file + * @param {string} aPath + * The path to find the resource at, '/' separated. If aPath is empty + * then the uri to the root of the contained files will be returned + * @returns {nsIURI} + * An nsIURI pointing at the resource + */ +function getURIForResourceInFile(aFile, aPath) { + if (!isXPI(aFile.leafName)) { + let resource = aFile.clone(); + if (aPath) aPath.split("/").forEach((part) => resource.append(part)); + + return Services.io.newFileURI(resource); + } + + return buildJarURI(aFile, aPath); +} + +/** + * Creates a jar: URI for a file inside a ZIP file. + * + * @param {nsIFile} aJarfile + * The ZIP file as an nsIFile + * @param {string} aPath + * The path inside the ZIP file + * @returns {nsIURI} + * An nsIURI for the file + */ +function buildJarURI(aJarfile, aPath) { + let uri = Services.io.newFileURI(aJarfile); + uri = "jar:" + uri.spec + "!/" + aPath; + return Services.io.newURI(uri); +} + +var BootstrapLoader = { + name: "bootstrap", + manifestFile: "install.rdf", + async loadManifest(pkg) { + /** + * Reads locale properties from either the main install manifest root or + * an em:localized section in the install manifest. + * + * @param {Object} aSource + * The resource to read the properties from. + * @param {boolean} isDefault + * True if the locale is to be read from the main install manifest + * root + * @param {string[]} aSeenLocales + * An array of locale names already seen for this install manifest. + * Any locale names seen as a part of this function will be added to + * this array + * @returns {Object} + * an object containing the locale properties + */ + function readLocale(aSource, isDefault, aSeenLocales) { + let locale = {}; + if (!isDefault) { + locale.locales = []; + for (let localeName of aSource.locales || []) { + if (!localeName) { + logger.warn("Ignoring empty locale in localized properties"); + continue; + } + if (aSeenLocales.includes(localeName)) { + logger.warn("Ignoring duplicate locale in localized properties"); + continue; + } + aSeenLocales.push(localeName); + locale.locales.push(localeName); + } + + if (locale.locales.length == 0) { + logger.warn("Ignoring localized properties with no listed locales"); + return null; + } + } + + for (let prop of [...PROP_LOCALE_SINGLE, ...PROP_LOCALE_MULTI]) { + if (hasOwnProperty(aSource, prop)) { + locale[prop] = aSource[prop]; + } + } + + return locale; + } + + let manifestData = await pkg.readString("install.rdf"); + let manifest = InstallRDF.loadFromString(manifestData).decode(); + + let addon = new AddonInternal(); + for (let prop of PROP_METADATA) { + if (hasOwnProperty(manifest, prop)) { + addon[prop] = manifest[prop]; + } + } + + if (!addon.type) { + addon.type = "extension"; + } else { + let type = addon.type; + addon.type = null; + for (let name in TYPES) { + if (TYPES[name] == type) { + addon.type = name; + break; + } + } + } + + if (!(addon.type in TYPES)) + throw new Error("Install manifest specifies unknown type: " + addon.type); + + if (!addon.id) throw new Error("No ID in install manifest"); + if (!gIDTest.test(addon.id)) + throw new Error("Illegal add-on ID " + addon.id); + if (!addon.version) throw new Error("No version in install manifest"); + + addon.strictCompatibility = + !(addon.type in COMPATIBLE_BY_DEFAULT_TYPES) || + manifest.strictCompatibility == "true"; + + // Only read these properties for extensions. + if (addon.type == "extension") { + if (manifest.bootstrap != "true") { + throw new Error("Non-restartless extensions no longer supported"); + } + + if ( + addon.optionsType && + addon.optionsType != 1 /*AddonManager.OPTIONS_TYPE_DIALOG*/ && + addon.optionsType != AddonManager.OPTIONS_TYPE_INLINE_BROWSER && + addon.optionsType != AddonManager.OPTIONS_TYPE_TAB + ) { + throw new Error( + "Install manifest specifies unknown optionsType: " + addon.optionsType + ); + } + + if (addon.optionsType) addon.optionsType = parseInt(addon.optionsType); + } + + addon.defaultLocale = readLocale(manifest, true); + + let seenLocales = []; + addon.locales = []; + for (let localeData of manifest.localized || []) { + let locale = readLocale(localeData, false, seenLocales); + if (locale) addon.locales.push(locale); + } + + let dependencies = new Set(manifest.dependencies); + addon.dependencies = Object.freeze(Array.from(dependencies)); + + let seenApplications = []; + addon.targetApplications = []; + for (let targetApp of manifest.targetApplications || []) { + if (!targetApp.id || !targetApp.minVersion || !targetApp.maxVersion) { + logger.warn( + "Ignoring invalid targetApplication entry in install manifest" + ); + continue; + } + if (seenApplications.includes(targetApp.id)) { + logger.warn( + "Ignoring duplicate targetApplication entry for " + + targetApp.id + + " in install manifest" + ); + continue; + } + seenApplications.push(targetApp.id); + addon.targetApplications.push(targetApp); + } + + // Note that we don't need to check for duplicate targetPlatform entries since + // the RDF service coalesces them for us. + addon.targetPlatforms = []; + for (let targetPlatform of manifest.targetPlatforms || []) { + let platform = { + os: null, + abi: null, + }; + + let pos = targetPlatform.indexOf("_"); + if (pos != -1) { + platform.os = targetPlatform.substring(0, pos); + platform.abi = targetPlatform.substring(pos + 1); + } else { + platform.os = targetPlatform; + } + + addon.targetPlatforms.push(platform); + } + + addon.userDisabled = false; + addon.softDisabled = addon.blocklistState == Blocklist.STATE_SOFTBLOCKED; + addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT; + + addon.userPermissions = null; + + addon.icons = {}; + if (await pkg.hasResource("icon.png")) { + addon.icons[32] = "icon.png"; + addon.icons[48] = "icon.png"; + } + + if (await pkg.hasResource("icon64.png")) { + addon.icons[64] = "icon64.png"; + } + + return addon; + }, + + loadScope(addon) { + let file = addon.file || addon._sourceBundle; + let uri = getURIForResourceInFile(file, "bootstrap.js").spec; + let principal = Services.scriptSecurityManager.getSystemPrincipal(); + + let sandbox = new Cu.Sandbox(principal, { + sandboxName: uri, + addonId: addon.id, + wantGlobalProperties: ["ChromeUtils"], + metadata: { addonID: addon.id, URI: uri }, + }); + + try { + Object.assign(sandbox, BOOTSTRAP_REASONS); + + XPCOMUtils.defineLazyGetter( + sandbox, + "console", + () => new ConsoleAPI({ consoleID: `addon/${addon.id}` }) + ); + + Services.scriptloader.loadSubScript(uri, sandbox); + } catch (e) { + logger.warn(`Error loading bootstrap.js for ${addon.id}`, e); + } + + function findMethod(name) { + if (sandbox[name]) { + return sandbox[name]; + } + + try { + let method = Cu.evalInSandbox(name, sandbox); + return method; + } catch (err) {} + + return () => { + logger.warn(`Add-on ${addon.id} is missing bootstrap method ${name}`); + }; + } + + let install = findMethod("install"); + let uninstall = findMethod("uninstall"); + let startup = findMethod("startup"); + let shutdown = findMethod("shutdown"); + + return { + install(...args) { + install(...args); + // Forget any cached files we might've had from this extension. + Services.obs.notifyObservers(null, "startupcache-invalidate"); + }, + + uninstall(...args) { + uninstall(...args); + // Forget any cached files we might've had from this extension. + Services.obs.notifyObservers(null, "startupcache-invalidate"); + }, + + startup(...args) { + if (addon.type == "extension") { + logger.debug(`Registering manifest for ${file.path}\n`); + Components.manager.addBootstrappedManifestLocation(file); + } + return startup(...args); + }, + + shutdown(data, reason) { + try { + return shutdown(data, reason); + } catch (err) { + throw err; + } finally { + if (reason != BOOTSTRAP_REASONS.APP_SHUTDOWN) { + logger.debug(`Removing manifest for ${file.path}\n`); + Components.manager.removeBootstrappedManifestLocation(file); + } + } + }, + }; + }, +}; + +AddonManager.addExternalExtensionLoader(BootstrapLoader); + +if (AddonManager.isReady) { + AddonManager.getAllAddons().then((addons) => { + addons.forEach((addon) => { + if ( + addon.type == "extension" && + !addon.isWebExtension && + !addon.userDisabled + ) { + addon.reload(); + } + }); + }); +} diff --git a/chrome/utils/RDFDataSource.jsm b/chrome/utils/RDFDataSource.jsm new file mode 100644 index 0000000..e89244e --- /dev/null +++ b/chrome/utils/RDFDataSource.jsm @@ -0,0 +1,441 @@ + /* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * This module creates a new API for accessing and modifying RDF graphs. The + * goal is to be able to serialise the graph in a human readable form. Also + * if the graph was originally loaded from an RDF/XML the serialisation should + * closely match the original with any new data closely following the existing + * layout. The output should always be compatible with Mozilla's RDF parser. + * + * This is all achieved by using a DOM Document to hold the current state of the + * graph in XML form. This can be initially loaded and parsed from disk or + * a blank document used for an empty graph. As assertions are added to the + * graph, appropriate DOM nodes are added to the document to represent them + * along with any necessary whitespace to properly layout the XML. + * + * In general the order of adding assertions to the graph will impact the form + * the serialisation takes. If a resource is first added as the object of an + * assertion then it will eventually be serialised inside the assertion's + * property element. If a resource is first added as the subject of an assertion + * then it will be serialised at the top level of the XML. + */ + +const NS_XML = "http://www.w3.org/XML/1998/namespace"; +const NS_XMLNS = "http://www.w3.org/2000/xmlns/"; +const NS_RDF = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; +const NS_NC = "http://home.netscape.com/NC-rdf#"; + +/* eslint prefer-template: 1 */ + +var EXPORTED_SYMBOLS = ["RDFLiteral", "RDFBlankNode", "RDFResource", "RDFDataSource"]; + +const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); +const Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services; + +XPCOMUtils.defineLazyGlobalGetters(this, ["DOMParser", "Element", "fetch"]); + +function isElement(obj) { + return Element.isInstance(obj); +} +function isText(obj) { + return obj && typeof obj == "object" && ChromeUtils.getClassName(obj) == "Text"; +} + +/** + * Returns either an rdf namespaced attribute or an un-namespaced attribute + * value. Returns null if neither exists, + */ +function getRDFAttribute(element, name) { + if (element.hasAttributeNS(NS_RDF, name)) + return element.getAttributeNS(NS_RDF, name); + if (element.hasAttribute(name)) + return element.getAttribute(name); + return undefined; +} + +/** + * Represents an assertion in the datasource + */ +class RDFAssertion { + constructor(subject, predicate, object) { + // The subject on this assertion, an RDFSubject + this._subject = subject; + // The predicate, a string + this._predicate = predicate; + // The object, an RDFNode + this._object = object; + // The datasource this assertion exists in + this._ds = this._subject._ds; + // Marks that _DOMnode is the subject's element + this._isSubjectElement = false; + // The DOM node that represents this assertion. Could be a property element, + // a property attribute or the subject's element for rdf:type + this._DOMNode = null; + } + + getPredicate() { + return this._predicate; + } + + getObject() { + return this._object; + } +} + +class RDFNode { + equals(rdfnode) { + return (rdfnode.constructor === this.constructor && + rdfnode._value == this._value); + } +} + +/** + * A simple literal value + */ +class RDFLiteral extends RDFNode { + constructor(value) { + super(); + this._value = value; + } + + getValue() { + return this._value; + } +} + +/** + * This is an RDF node that can be a subject so a resource or a blank node + */ +class RDFSubject extends RDFNode { + constructor(ds) { + super(); + // A lookup of the assertions with this as the subject. Keyed on predicate + this._assertions = {}; + // A lookup of the assertions with this as the object. Keyed on predicate + this._backwards = {}; + // The datasource this subject belongs to + this._ds = ds; + // The DOM elements in the document that represent this subject. Array of Element + this._elements = []; + } + + /** + * Parses the given Element from the DOM document + */ + /* eslint-disable complexity */ + _parseElement(element) { + this._elements.push(element); + + // There might be an inferred rdf:type assertion in the element name + if (element.namespaceURI != NS_RDF || + element.localName != "Description") { + var assertion = new RDFAssertion(this, RDF_R("type"), + this._ds.getResource(element.namespaceURI + element.localName)); + assertion._DOMnode = element; + assertion._isSubjectElement = true; + this._addAssertion(assertion); + } + + // Certain attributes can be literal properties + for (let attr of element.attributes) { + if (attr.namespaceURI == NS_XML || attr.namespaceURI == NS_XMLNS || + attr.nodeName == "xmlns") + continue; + if ((attr.namespaceURI == NS_RDF || !attr.namespaceURI) && + (["nodeID", "about", "resource", "ID", "parseType"].includes(attr.localName))) + continue; + var object = null; + if (attr.namespaceURI == NS_RDF) { + if (attr.localName == "type") + object = this._ds.getResource(attr.nodeValue); + } + if (!object) + object = new RDFLiteral(attr.nodeValue); + assertion = new RDFAssertion(this, attr.namespaceURI + attr.localName, object); + assertion._DOMnode = attr; + this._addAssertion(assertion); + } + + var child = element.firstChild; + element.listCounter = 1; + while (child) { + if (isElement(child)) { + object = null; + var predicate = child.namespaceURI + child.localName; + if (child.namespaceURI == NS_RDF) { + if (child.localName == "li") { + predicate = RDF_R(`_${element.listCounter}`); + element.listCounter++; + } + } + + // Check for and bail out on unknown attributes on the property element + for (let attr of child.attributes) { + // Ignore XML namespaced attributes + if (attr.namespaceURI == NS_XML) + continue; + // These are reserved by XML for future use + if (attr.localName.substring(0, 3).toLowerCase() == "xml") + continue; + // We can handle these RDF attributes + if ((!attr.namespaceURI || attr.namespaceURI == NS_RDF) && + ["resource", "nodeID"].includes(attr.localName)) + continue; + // This is a special attribute we handle for compatibility with Mozilla RDF + if (attr.namespaceURI == NS_NC && + attr.localName == "parseType") + continue; + } + + var parseType = child.getAttributeNS(NS_NC, "parseType"); + + var resource = getRDFAttribute(child, "resource"); + var nodeID = getRDFAttribute(child, "nodeID"); + + if (resource !== undefined) { + var base = Services.io.newURI(element.baseURI); + object = this._ds.getResource(base.resolve(resource)); + } else if (nodeID !== undefined) { + object = this._ds.getBlankNode(nodeID); + } else { + var hasText = false; + var childElement = null; + var subchild = child.firstChild; + while (subchild) { + if (isText(subchild) && /\S/.test(subchild.nodeValue)) { + hasText = true; + } else if (isElement(subchild)) { + childElement = subchild; + } + subchild = subchild.nextSibling; + } + + if (childElement) { + object = this._ds._getSubjectForElement(childElement); + object._parseElement(childElement); + } else + object = new RDFLiteral(child.textContent); + } + + assertion = new RDFAssertion(this, predicate, object); + this._addAssertion(assertion); + assertion._DOMnode = child; + } + child = child.nextSibling; + } + } + /* eslint-enable complexity */ + + /** + * Adds a new assertion to the internal hashes. Should be called for every + * new assertion parsed or created programmatically. + */ + _addAssertion(assertion) { + var predicate = assertion.getPredicate(); + if (predicate in this._assertions) + this._assertions[predicate].push(assertion); + else + this._assertions[predicate] = [ assertion ]; + + var object = assertion.getObject(); + if (object instanceof RDFSubject) { + // Create reverse assertion + if (predicate in object._backwards) + object._backwards[predicate].push(assertion); + else + object._backwards[predicate] = [ assertion ]; + } + } + + /** + * Returns all objects in assertions with this subject and the given predicate. + */ + getObjects(predicate) { + if (predicate in this._assertions) + return Array.from(this._assertions[predicate], + i => i.getObject()); + + return []; + } + + /** + * Retrieves the first property value for the given predicate. + */ + getProperty(predicate) { + if (predicate in this._assertions) + return this._assertions[predicate][0].getObject(); + return null; + } +} + +/** + * Creates a new RDFResource for the datasource. Private. + */ +class RDFResource extends RDFSubject { + constructor(ds, uri) { + super(ds); + // This is the uri that the resource represents. + this._uri = uri; + } +} + +/** + * Creates a new blank node. Private. + */ +class RDFBlankNode extends RDFSubject { + constructor(ds, nodeID) { + super(ds); + // The nodeID of this node. May be null if there is no ID. + this._nodeID = nodeID; + } + + /** + * Sets attributes on the DOM element to mark it as representing this node + */ + _applyToElement(element) { + if (!this._nodeID) + return; + if (USE_RDFNS_ATTR) { + var prefix = this._ds._resolvePrefix(element, RDF_R("nodeID")); + element.setAttributeNS(prefix.namespaceURI, prefix.qname, this._nodeID); + } else { + element.setAttribute("nodeID", this._nodeID); + } + } + + /** + * Creates a new Element in the document for holding assertions about this + * subject. The URI controls what tagname to use. + */ + _createNewElement(uri) { + // If there are already nodes representing this in the document then we need + // a nodeID to match them + if (!this._nodeID && this._elements.length > 0) { + this._ds._createNodeID(this); + for (let element of this._elements) + this._applyToElement(element); + } + + return super._createNewElement.call(uri); + } + + /** + * Adds a reference to this node to the given property Element. + */ + _addReferenceToElement(element) { + if (this._elements.length > 0 && !this._nodeID) { + // In document elsewhere already + // Create a node ID and update the other nodes referencing + this._ds._createNodeID(this); + for (let element of this._elements) + this._applyToElement(element); + } + + if (this._nodeID) { + if (USE_RDFNS_ATTR) { + let prefix = this._ds._resolvePrefix(element, RDF_R("nodeID")); + element.setAttributeNS(prefix.namespaceURI, prefix.qname, this._nodeID); + } else { + element.setAttribute("nodeID", this._nodeID); + } + } else { + // Add the empty blank node, this is generally right since further + // assertions will be added to fill this out + var newelement = this._ds._addElement(element, RDF_R("Description")); + newelement.listCounter = 1; + this._elements.push(newelement); + } + } + + /** + * Removes any reference to this node from the given property Element. + */ + _removeReferenceFromElement(element) { + if (element.hasAttributeNS(NS_RDF, "nodeID")) + element.removeAttributeNS(NS_RDF, "nodeID"); + if (element.hasAttribute("nodeID")) + element.removeAttribute("nodeID"); + } + + getNodeID() { + return this._nodeID; + } +} + +/** + * Creates a new RDFDataSource from the given document. The document will be + * changed as assertions are added and removed to the RDF. Pass a null document + * to start with an empty graph. + */ +class RDFDataSource { + constructor(document) { + // All known resources, indexed on URI + this._resources = {}; + // All blank nodes + this._allBlankNodes = []; + + // The underlying DOM document for this datasource + this._document = document; + this._parseDocument(); + } + + static loadFromString(text) { + let parser = new DOMParser(); + let document = parser.parseFromString(text, "application/xml"); + + return new this(document); + } + + /** + * Returns an rdf subject for the given DOM Element. If the subject has not + * been seen before a new one is created. + */ + _getSubjectForElement(element) { + var about = getRDFAttribute(element, "about"); + + if (about !== undefined) { + let base = Services.io.newURI(element.baseURI); + return this.getResource(base.resolve(about)); + } + return this.getBlankNode(null); + } + + /** + * Parses the document for subjects at the top level. + */ + _parseDocument() { + var domnode = this._document.documentElement.firstChild; + while (domnode) { + if (isElement(domnode)) { + var subject = this._getSubjectForElement(domnode); + subject._parseElement(domnode); + } + domnode = domnode.nextSibling; + } + } + + /** + * Gets a blank node. nodeID may be null and if so a new blank node is created. + * If a nodeID is given then the blank node with that ID is returned or created. + */ + getBlankNode(nodeID) { + var rdfnode = new RDFBlankNode(this, nodeID); + this._allBlankNodes.push(rdfnode); + return rdfnode; + } + + /** + * Gets the resource for the URI. The resource is created if it has not been + * used already. + */ + getResource(uri) { + if (uri in this._resources) + return this._resources[uri]; + + var resource = new RDFResource(this, uri); + this._resources[uri] = resource; + return resource; + } +} diff --git a/chrome/utils/RDFManifestConverter.jsm b/chrome/utils/RDFManifestConverter.jsm new file mode 100644 index 0000000..370c388 --- /dev/null +++ b/chrome/utils/RDFManifestConverter.jsm @@ -0,0 +1,102 @@ + /* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +"use strict"; + +var EXPORTED_SYMBOLS = ["InstallRDF"]; + +ChromeUtils.defineModuleGetter(this, "RDFDataSource", + "chrome://userchromejs/content/RDFDataSource.jsm"); + +const RDFURI_INSTALL_MANIFEST_ROOT = "urn:mozilla:install-manifest"; + +function EM_R(aProperty) { + return `http://www.mozilla.org/2004/em-rdf#${aProperty}`; +} + +function getValue(literal) { + return literal && literal.getValue(); +} + +function getProperty(resource, property) { + return getValue(resource.getProperty(EM_R(property))); +} + +class Manifest { + constructor(ds) { + this.ds = ds; + } + + static loadFromString(text) { + return new this(RDFDataSource.loadFromString(text)); + } +} + +class InstallRDF extends Manifest { + _readProps(source, obj, props) { + for (let prop of props) { + let val = getProperty(source, prop); + if (val != null) { + obj[prop] = val; + } + } + } + + _readArrayProp(source, obj, prop, target, decode = getValue) { + let result = Array.from(source.getObjects(EM_R(prop)), + target => decode(target)); + if (result.length) { + obj[target] = result; + } + } + + _readArrayProps(source, obj, props, decode = getValue) { + for (let [prop, target] of Object.entries(props)) { + this._readArrayProp(source, obj, prop, target, decode); + } + } + + _readLocaleStrings(source, obj) { + this._readProps(source, obj, ["name", "description", "creator", "homepageURL"]); + this._readArrayProps(source, obj, { + locale: "locales", + developer: "developers", + translator: "translators", + contributor: "contributors", + }); + } + + decode() { + let root = this.ds.getResource(RDFURI_INSTALL_MANIFEST_ROOT); + let result = {}; + + let props = ["id", "version", "type", "updateURL", "optionsURL", + "optionsType", "aboutURL", "iconURL", + "bootstrap", "unpack", "strictCompatibility"]; + this._readProps(root, result, props); + + let decodeTargetApplication = source => { + let app = {}; + this._readProps(source, app, ["id", "minVersion", "maxVersion"]); + return app; + }; + + let decodeLocale = source => { + let localized = {}; + this._readLocaleStrings(source, localized); + return localized; + }; + + this._readLocaleStrings(root, result); + + this._readArrayProps(root, result, {"targetPlatform": "targetPlatforms"}); + this._readArrayProps(root, result, {"targetApplication": "targetApplications"}, + decodeTargetApplication); + this._readArrayProps(root, result, {"localized": "localized"}, + decodeLocale); + this._readArrayProps(root, result, {"dependency": "dependencies"}, + source => getProperty(source, "id")); + + return result; + } +} diff --git a/chrome/utils/aboutconfig/aboutconfig.xhtml b/chrome/utils/aboutconfig/aboutconfig.xhtml new file mode 100644 index 0000000..80fafa0 --- /dev/null +++ b/chrome/utils/aboutconfig/aboutconfig.xhtml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/chrome/utils/userChrome.jsm b/chrome/utils/userChrome.jsm new file mode 100644 index 0000000..44d871b --- /dev/null +++ b/chrome/utils/userChrome.jsm @@ -0,0 +1,222 @@ +let EXPORTED_SYMBOLS = []; + +const Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services; +const { xPref } = ChromeUtils.import('chrome://userchromejs/content/xPref.jsm'); +const { Management } = ChromeUtils.import('resource://gre/modules/Extension.jsm'); +const { AppConstants } = ChromeUtils.import('resource://gre/modules/AppConstants.jsm'); + +let UC = { + webExts: new Map(), + sidebar: new Map() +}; + +let _uc = { + ALWAYSEXECUTE: 'rebuild_userChrome.uc.js', + BROWSERCHROME: AppConstants.MOZ_APP_NAME == 'thunderbird' ? 'chrome://messenger/content/messenger.xhtml' : 'chrome://browser/content/browser.xhtml', + BROWSERTYPE: AppConstants.MOZ_APP_NAME == 'thunderbird' ? 'mail:3pane' : 'navigator:browser', + BROWSERNAME: AppConstants.MOZ_APP_NAME.charAt(0).toUpperCase() + AppConstants.MOZ_APP_NAME.slice(1), + PREF_ENABLED: 'userChromeJS.enabled', + PREF_SCRIPTSDISABLED: 'userChromeJS.scriptsDisabled', + + chromedir: Services.dirsvc.get('UChrm', Ci.nsIFile), + scriptsDir: '', + + sss: Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService), + + getScripts: function () { + this.scripts = {}; + let files = this.chromedir.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator); + while (files.hasMoreElements()) { + let file = files.getNext().QueryInterface(Ci.nsIFile); + if (/\.uc\.js$/i.test(file.leafName)) { + _uc.getScriptData(file); + } + } + }, + + getScriptData: function (aFile) { + let aContent = this.readFile(aFile); + let header = (aContent.match(/^\/\/ ==UserScript==\s*\n(?:.*\n)*?\/\/ ==\/UserScript==\s*\n/m) || [''])[0]; + let match, rex = { + include: [], + exclude: [] + }; + let findNextRe = /^\/\/ @(include|exclude)\s+(.+)\s*$/gm; + while ((match = findNextRe.exec(header))) { + rex[match[1]].push(match[2].replace(/^main$/i, _uc.BROWSERCHROME).replace(/\*/g, '.*?')); + } + if (!rex.include.length) { + rex.include.push(_uc.BROWSERCHROME); + } + let exclude = rex.exclude.length ? '(?!' + rex.exclude.join('$|') + '$)' : ''; + + let def = ['', '']; + let author = (header.match(/\/\/ @author\s+(.+)\s*$/im) || def)[1]; + let filename = aFile.leafName || ''; + + return this.scripts[filename] = { + filename: filename, + file: aFile, + url: Services.io.getProtocolHandler('file').QueryInterface(Ci.nsIFileProtocolHandler).getURLSpecFromDir(this.chromedir) + filename, + name: (header.match(/\/\/ @name\s+(.+)\s*$/im) || def)[1], + description: (header.match(/\/\/ @description\s+(.+)\s*$/im) || def)[1], + version: (header.match(/\/\/ @version\s+(.+)\s*$/im) || def)[1], + author: (header.match(/\/\/ @author\s+(.+)\s*$/im) || def)[1], + regex: new RegExp('^' + exclude + '(' + (rex.include.join('|') || '.*') + ')$', 'i'), + id: (header.match(/\/\/ @id\s+(.+)\s*$/im) || ['', filename.split('.uc.js')[0] + '@' + (author || 'userChromeJS')])[1], + homepageURL: (header.match(/\/\/ @homepageURL\s+(.+)\s*$/im) || def)[1], + downloadURL: (header.match(/\/\/ @downloadURL\s+(.+)\s*$/im) || def)[1], + updateURL: (header.match(/\/\/ @updateURL\s+(.+)\s*$/im) || def)[1], + optionsURL: (header.match(/\/\/ @optionsURL\s+(.+)\s*$/im) || def)[1], + startup: (header.match(/\/\/ @startup\s+(.+)\s*$/im) || def)[1], + shutdown: (header.match(/\/\/ @shutdown\s+(.+)\s*$/im) || def)[1], + onlyonce: /\/\/ @onlyonce\b/.test(header), + isRunning: false, + get isEnabled() { + return (xPref.get(_uc.PREF_SCRIPTSDISABLED) || '').split(',').indexOf(this.filename) == -1; + } + } + }, + + readFile: function (aFile, metaOnly = false) { + let stream = Cc['@mozilla.org/network/file-input-stream;1'].createInstance(Ci.nsIFileInputStream); + stream.init(aFile, 0x01, 0, 0); + let cvstream = Cc['@mozilla.org/intl/converter-input-stream;1'].createInstance(Ci.nsIConverterInputStream); + cvstream.init(stream, 'UTF-8', 1024, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER); + let content = '', + data = {}; + while (cvstream.readString(4096, data)) { + content += data.value; + if (metaOnly && content.indexOf('// ==/UserScript==') > 0) { + break; + } + } + cvstream.close(); + return content.replace(/\r\n?/g, '\n'); + }, + + everLoaded: [], + + loadScript: function (script, win) { + if (!script.regex.test(win.location.href) || (script.filename != this.ALWAYSEXECUTE && !script.isEnabled)) { + return; + } + + if (script.onlyonce && script.isRunning) { + if (script.startup) { + eval(script.startup); + } + return; + } + + try { + Services.scriptloader.loadSubScript(script.url + '?' + script.file.lastModifiedTime, + script.onlyonce ? { window: win } : win); + script.isRunning = true; + if (script.startup) { + eval(script.startup); + } + if (!script.shutdown) { + this.everLoaded.push(script.id); + } + } catch (ex) { + Cu.reportError(ex); + } + }, + + windows: function (fun, onlyBrowsers = true) { + let windows = Services.wm.getEnumerator(onlyBrowsers ? this.BROWSERTYPE : null); + while (windows.hasMoreElements()) { + let win = windows.getNext(); + if (!win._uc) + continue; + if (!onlyBrowsers) { + let frames = win.docShell.getAllDocShellsInSubtree(Ci.nsIDocShellTreeItem.typeAll, Ci.nsIDocShell.ENUMERATE_FORWARDS); + let res = frames.some(frame => { + let fWin = frame.domWindow; + let {document, location} = fWin; + if (fun(document, fWin, location)) + return true; + }); + if (res) + break; + } else { + let {document, location} = win; + if (fun(document, win, location)) + break; + } + } + }, + + createElement: function (doc, tag, atts, XUL = true) { + let el = XUL ? doc.createXULElement(tag) : doc.createElement(tag); + for (let att in atts) { + el.setAttribute(att, atts[att]); + } + return el + } +}; + +if (xPref.get(_uc.PREF_ENABLED) === undefined) { + xPref.set(_uc.PREF_ENABLED, true, true); +} + +if (xPref.get(_uc.PREF_SCRIPTSDISABLED) === undefined) { + xPref.set(_uc.PREF_SCRIPTSDISABLED, '', true); +} + +let UserChrome_js = { + observe: function (aSubject) { + aSubject.addEventListener('DOMContentLoaded', this, {once: true}); + }, + + handleEvent: function (aEvent) { + let document = aEvent.originalTarget; + let window = document.defaultView; + let location = window.location; + + if (!this.sharedWindowOpened && location.href == 'chrome://extensions/content/dummy.xhtml') { + this.sharedWindowOpened = true; + + Management.on('extension-browser-inserted', function (topic, browser) { + browser.messageManager.addMessageListener('Extension:ExtensionViewLoaded', this.messageListener.bind(this)); + }.bind(this)); + } else if (/^(chrome:(?!\/\/global\/content\/commonDialog\.x?html)|about:(?!blank))/i.test(location.href)) { + window.UC = UC; + window._uc = _uc; + window.xPref = xPref; + if (window._gBrowser) // bug 1443849 + window.gBrowser = window._gBrowser; + + if (xPref.get(_uc.PREF_ENABLED)) { + Object.values(_uc.scripts).forEach(script => { + _uc.loadScript(script, window); + }); + } else if (!UC.rebuild) { + _uc.loadScript(_uc.scripts[_uc.ALWAYSEXECUTE], window); + } + } + }, + + messageListener: function (msg) { + const browser = msg.target; + const { addonId } = browser._contentPrincipal; + + browser.messageManager.removeMessageListener('Extension:ExtensionViewLoaded', this.messageListener); + + if (browser.ownerGlobal.location.href == 'chrome://extensions/content/dummy.xhtml') { + UC.webExts.set(addonId, browser); + Services.obs.notifyObservers(null, 'UCJS:WebExtLoaded', addonId); + } else { + let win = browser.ownerGlobal.windowRoot.ownerGlobal; + UC.sidebar.get(addonId)?.set(win, browser) || UC.sidebar.set(addonId, new Map([[win, browser]])); + Services.obs.notifyObservers(win, 'UCJS:SidebarLoaded', addonId); + } + } +}; + +if (!Services.appinfo.inSafeMode) { + _uc.chromedir.append(_uc.scriptsDir); + _uc.getScripts(); + Services.obs.addObserver(UserChrome_js, 'chrome-document-global-created', false); +} diff --git a/chrome/utils/xPref.jsm b/chrome/utils/xPref.jsm new file mode 100644 index 0000000..5cbf7cb --- /dev/null +++ b/chrome/utils/xPref.jsm @@ -0,0 +1,94 @@ +let EXPORTED_SYMBOLS = ['xPref']; + +const Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services; + +var xPref = { + // Retorna o valor da preferência, seja qual for o tipo, mas não + // testei com tipos complexos como nsIFile, não sei como detectar + // uma preferência assim, na verdade nunca vi uma + get: function (prefPath, def = false, valueIfUndefined, setDefault = true) { + let sPrefs = def ? + Services.prefs.getDefaultBranch(null) : + Services.prefs; + + try { + switch (sPrefs.getPrefType(prefPath)) { + case 0: + if (valueIfUndefined != undefined) + return this.set(prefPath, valueIfUndefined, setDefault); + else + return undefined; + case 32: + return sPrefs.getStringPref(prefPath); + case 64: + return sPrefs.getIntPref(prefPath); + case 128: + return sPrefs.getBoolPref(prefPath); + } + } catch (ex) { + return undefined; + } + return; + }, + + set: function (prefPath, value, def = false) { + let sPrefs = def ? + Services.prefs.getDefaultBranch(null) : + Services.prefs; + + switch (typeof value) { + case 'string': + return sPrefs.setStringPref(prefPath, value) || value; + case 'number': + return sPrefs.setIntPref(prefPath, value) || value; + case 'boolean': + return sPrefs.setBoolPref(prefPath, value) || value; + } + return; + }, + + lock: function (prefPath, value) { + let sPrefs = Services.prefs; + this.lockedBackupDef[prefPath] = this.get(prefPath, true); + if (sPrefs.prefIsLocked(prefPath)) + sPrefs.unlockPref(prefPath); + + this.set(prefPath, value, true); + sPrefs.lockPref(prefPath); + }, + + lockedBackupDef: {}, + + unlock: function (prefPath) { + Services.prefs.unlockPref(prefPath); + let bkp = this.lockedBackupDef[prefPath]; + if (bkp == undefined) + Services.prefs.deleteBranch(prefPath); + else + this.set(prefPath, bkp, true); + }, + + clear: Services.prefs.clearUserPref, + + // Detecta mudanças na preferência e retorna: + // return[0]: valor da preferência alterada + // return[1]: nome da preferência alterada + // Guardar chamada numa var se quiser interrompê-la depois + addListener: function (prefPath, trat) { + this.observer = function (aSubject, aTopic, prefPath) { + return trat(xPref.get(prefPath), prefPath); + } + + Services.prefs.addObserver(prefPath, this.observer); + return { + prefPath: prefPath, + observer: this.observer + }; + }, + + // Encerra pref observer + // Só precisa passar a var definida quando adicionou + removeListener: function (obs) { + Services.prefs.removeObserver(obs.prefPath, obs.observer); + } +} diff --git a/ffroot/browser/chrome/icons/default/_main-window.ico b/ffroot/browser/chrome/icons/default/_main-window.ico new file mode 100644 index 0000000..dd52a9c Binary files /dev/null and b/ffroot/browser/chrome/icons/default/_main-window.ico differ diff --git a/ffroot/browser/chrome/icons/default/main-window.ico b/ffroot/browser/chrome/icons/default/main-window.ico new file mode 100644 index 0000000..a80fe62 Binary files /dev/null and b/ffroot/browser/chrome/icons/default/main-window.ico differ diff --git a/ffroot/config.js b/ffroot/config.js new file mode 100644 index 0000000..d2c47d0 --- /dev/null +++ b/ffroot/config.js @@ -0,0 +1,34 @@ +// skip 1st line +lockPref("xpinstall.signatures.required", false); +lockPref("extensions.install_origins.enabled", false); + +try { + const cmanifest = Cc["@mozilla.org/file/directory_service;1"] + .getService(Ci.nsIProperties) + .get("UChrm", Ci.nsIFile); + cmanifest.append("utils"); + cmanifest.append("chrome.manifest"); + Components.manager + .QueryInterface(Ci.nsIComponentRegistrar) + .autoRegister(cmanifest); + + const objRef = ChromeUtils.import( + "resource://gre/modules/addons/AddonSettings.jsm" + ); + const temp = Object.assign( + {}, + Object.getOwnPropertyDescriptors(objRef.AddonSettings), + { + REQUIRE_SIGNING: { value: false }, + } + ); + objRef.AddonSettings = Object.defineProperties({}, temp); +} catch (err) {} + +try { + Cu.import("chrome://userchromejs/content/BootstrapLoader.jsm"); +} catch (err) {} + +try { + Cu.import("chrome://userchromejs/content/userChrome.jsm"); +} catch (err) {} diff --git a/ffroot/defaults/pref/channel-prefs.js b/ffroot/defaults/pref/channel-prefs.js new file mode 100644 index 0000000..a545242 --- /dev/null +++ b/ffroot/defaults/pref/channel-prefs.js @@ -0,0 +1,9 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +// +// This pref is in its own file for complex reasons. See the comment in +// browser/app/Makefile.in, bug 756325, and bug 1431342 for details. Do not add +// other prefs to this file. + +pref("app.update.channel", "aurora"); diff --git a/ffroot/defaults/pref/config-prefs.js b/ffroot/defaults/pref/config-prefs.js new file mode 100644 index 0000000..65ff8af --- /dev/null +++ b/ffroot/defaults/pref/config-prefs.js @@ -0,0 +1,3 @@ +pref("general.config.obscure_value", 0); +pref("general.config.filename", "config.js"); +pref("general.config.sandbox_enabled", false); \ No newline at end of file