// Restore 'Space & Separator' items script for Firefox 60+ by Aris // // Default browser scripts always remove spaces and separators from default palette, so // because of that they are added to an own toolbar now. // // - spaces and separators can be moved to any toolbar // - to remove spaces or separators move them into palette // - configuration toolbar behaves like a default toolbar, items and buttons can be placed on it // - configuration toolbar is not visible outside customizing mode // - default "Flexible Space" item is hidden from palette and added to configuration toolbar // [!] BUG: do not move spaces, flexible spaces or separator to configuration toolbar or it will cause glitches // [!] 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; try { document .getElementById("back-button") .setAttribute("removable", "true"); document .getElementById("forward-button") .setAttribute("removable", "true"); } catch (e) {} /* 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); var uri = Services.io.newURI( "data:text/css;charset=utf-8," + encodeURIComponent( '\ \ #configuration_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:not([customizing]) #configuration_toolbar { \ visibility: collapse; \ }\ #main-window[customizing] #configuration_toolbar #tb_config_tb_label { \ font-weight: bold !important; \ }\ #main-window[customizing] #configuration_toolbar :-moz-any(#spacer,#separator,#spring) { \ -moz-margin-start: 20px; \ }\ #main-window[customizing] #configuration_toolbar :-moz-any(#wrapper-spacer,#wrapper-separator,#wrapper-spring) .toolbarpaletteitem-label { \ display: block !important; \ -moz-margin-end: 20px; \ }\ #main-window[customizing] #wrapper-spacer #spacer { \ margin: 2px 0 !important; \ }\ #main-window[customizing] #configuration_toolbar #wrapper-spring #spring { \ margin: -1px 0 !important; \ min-width: 80px !important; \ }\ #main-window[customizing] #configuration_toolbar > * { \ padding: 10px !important; \ }\ #main-window[customizing] #configuration_toolbar > :-moz-any(#wrapper-spacer,#wrapper-separator,#wrapper-spring) { \ border: 1px dotted !important; \ -moz-margin-start: 2px !important; \ -moz-margin-end: 2px !important; \ }\ #main-window[customizing] toolbarspacer { \ border: 1px solid !important; \ }\ toolbar[orient="vertical"] toolbarseparator { \ -moz-appearance: none !important; \ border-top: 1px solid rgba(15,17,38, 0.5) !important; \ border-bottom: 1px solid rgba(255,255,255, 0.3) !important; \ margin: 2px 2px !important; \ height: 1px !important; \ width: 18px !important; \ }\ toolbar[orient="vertical"] toolbarspacer { \ -moz-appearance: none !important; \ height: 18px !important; \ width: 18px !important; \ }\ #customization-palette toolbarpaletteitem[id^="wrapper-customizableui-special-spring"], \ #customization-palette-container :-moz-any(#spring,#wrapper-spring) { \ display: none !important; \ }\ #main-window:not([customizing]) toolbar:not(#configuration_toolbar) toolbarspring {\ max-width: 100% !important; \ }\ \ ' ), null, null ); 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 */ /* setTimeout(function(){ AddSeparator.init(); },2000); */ })();