Beiträge von Mira_Belle
-
-
Endor Schau mal. Ist das i.O. für Dich?
Ok, alle komischen "Kästchen" sind weg!
Lösung ist zwar nicht besonders schön, aber funktioniert.JavaScript
Alles anzeigen/* Firefox userChrome script * Shortcut menu to modify about:config entries * Tested on Firefox 143+ * Author: garywill (https://garywill.github.io) * Edited by: Mira * Souce: https://www.camp-firefox.de/forum/thema/139664/?postID=1276403#post1276403 */ // ==UserScript== // @include main // @onlyonce // ==/UserScript== console.log("aboutconfig_menu.uc.js"); (() => { const prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs") const sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); // --------------------------------------------------------------------------------------- const button_label = "about:config Kontextmenü"; const cssuri_icon = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(` toolbarbutton#aboutconfig-button .toolbarbutton-icon { list-style-image: url("data:image/svg+xml;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAgIC0gTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwogICAtIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxwYXRoIGZpbGw9ImNvbnRleHQtZmlsbCIgZD0iTTEzLjkgOS44MWExLjIzIDEuMjMgMCAwIDAgMC0uMTd2LS4wOGE1LjY3IDUuNjcgMCAwIDAtMi40LTMuMzYgMS4xNyAxLjE3IDAgMCAxLS41Ni0uOTVWM2ExIDEgMCAwIDAtMS0xSDYuMDZhMSAxIDAgMCAwLTEgMXYyLjI1YTEuMTcgMS4xNyAwIDAgMS0uNTYgMSA1LjY2IDUuNjYgMCAwIDAtMi4zNSAzLjMzdi4xMmEuNTMuNTMgMCAwIDAgMCAuMTEgNS4zNSA1LjM1IDAgMCAwLS4xMSAxIDUuNjUgNS42NSAwIDAgMCAzLjI0IDUuMDkgMSAxIDAgMCAwIC40NC4xaDQuNTdhMSAxIDAgMCAwIC40NC0uMUE1LjY1IDUuNjUgMCAwIDAgMTQgMTAuODNhNS4zIDUuMyAwIDAgMC0uMS0xLjAyem0tOC4yNy0yYTMuMTggMy4xOCAwIDAgMCAxLjQzLTIuNlY0aDEuODh2MS4yNWEzLjE4IDMuMTggMCAwIDAgMS40MyAyLjYgMy42OCAzLjY4IDAgMCAxIDEuNTQgMi4yNHYuMjJhMi44MiAyLjgyIDAgMCAxLTMuNjgtLjU5QTMuNDggMy40OCAwIDAgMCA0LjU2IDlhMy43NiAzLjc2IDAgMCAxIDEuMDctMS4xNXoiPjwvcGF0aD48L3N2Zz4="); } toolbarbutton#aboutconfig-button .toolbarbutton-badge { background-color: #009f00; visibility: hidden; } menuitem[checked="true"] > .menu-icon { -moz-context-properties: fill, fill-opacity; /* fill: currentColor; */ fill:rgb(0, 255, 0) !important; fill-opacity: var(--menu-icon-opacity); --menuitem-icon: url("chrome://global/skin/icons/menu-check.svg")!important; } menuitem[checked="false"] > .menu-icon { -moz-context-properties: fill, fill-opacity; fill: transparent !important; fill-opacity: var(--menu-icon-opacity); --menuitem-icon: url("chrome://global/skin/icons/menu-check.svg")!important; } menuitem[label="Zurücksetzen: 0"] > .menu-icon, menuitem[label="Zurücksetzen: 1"] > .menu-icon, menuitem[label="Zurücksetzen: 100"] > .menu-icon, menuitem[label="Zurücksetzen: ''"] > .menu-icon, menuitem[label="Zurücksetzen: 'normal'"] > .menu-icon, menuitem[label="Zurücksetzen: false"] > .menu-icon, menuitem[label="Zurücksetzen: true"] > .menu-icon { -moz-context-properties: fill, fill-opacity; fill: transparent !important; fill-opacity: var(--menu-icon-opacity); --menuitem-icon: url("chrome://global/skin/icons/menu-check.svg")!important; } `), null, null); const cssuri_warnbadge = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(` toolbarbutton#aboutconfig-button .toolbarbutton-badge { background-color:rgb(255, 0, 0); visibility: unset; } `), null, null); sss.loadAndRegisterSheet(cssuri_icon, sss.USER_SHEET); var prefItems = [ { name: "📼 Kein automatisches Popup beim Download", type: prefs.PREF_BOOL, pref: "browser.download.alwaysOpenPanel", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🎞️ Beim Schließen vom letzten Tab den Browser nicht schließen", type: prefs.PREF_BOOL, pref: "browser.tabs.closeWindowWithLastTab", possibleVals: [ { val: false }, { val: true }, ] }, "seperator", { name: "🔎 Suche aus Suchleiste im neuen Tab öffnen", type: prefs.PREF_BOOL, pref: "browser.search.openintab", possibleVals: [ { val: false }, { val: true }, ] }, { name: "📖 Lesezeichen im neuen Tab öffnen", type: prefs.PREF_BOOL, pref: "browser.tabs.loadBookmarksInTabs", possibleVals: [ { val: false }, { val: true }, ] }, { name: "📖 Link aus Adressleiste im neuen Tab öffnen", type: prefs.PREF_BOOL, pref: "browser.urlbar.openintab", possibleVals: [ { val: false }, { val: true }, ] }, "seperator", { name: "🎊 Animations Modus", type: prefs.PREF_STRING, pref: "image.animation_mode", possibleVals: [ { name: "Einmal", val: "once" }, { name: "Keine", val: "none" }, { name: "Dauerhaft", val: "normal" }, ] }, "seperator", { name: "🔏 CSP aktivieren - deaktivieren", type: prefs.PREF_BOOL, pref: "security.browser_xhtml_csp.enabled", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🔏 Urlbar Verhalten - deaktivieren", type: prefs.PREF_BOOL, pref: "browser.urlbar.scotchBonnet.enableOverride", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🔏 eval erlauben - verbieten", type: prefs.PREF_BOOL, pref: "security.allow_unsafe_dangerous_privileged_evil_eval", possibleVals: [ { val: false }, { name: "true ⚠️", val: true , sign: '‼️' }, ] }, { name: "🌐 IPv6 ausschalten", type: prefs.PREF_BOOL, pref: "network.dns.disableIPv6", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🔐 DNS Modus", type: prefs.PREF_INT, pref: "network.trr.mode", possibleVals: [ { name: "0 - Default" , val: 0 }, { name: "2 - DoH, fallback Plain DNS" , val: 2 }, { name: "3 - DoH only" , val: 3 }, { name: "5 - Plain DNS" , val: 5 } ] }, { name: "🔐 DoH server", type: prefs.PREF_STRING, pref: "network.trr.uri", possibleVals: [ { name: "Cloudflare" , val: "https://mozilla.cloudflare-dns.com/dns-query" }, { name: "NextDNS" , val: "https://firefox.dns.nextdns.io/" } ] // See buildin DoH at 'network.trr.resolvers' }, { name: "🔏 Veraltete TLS Version aktivieren", type: prefs.PREF_BOOL, pref: "security.tls.version.enable-deprecated", possibleVals: [ { val: false }, { name: "true ⚠️", val: true , sign: '‼️'}, ] }, "seperator", { name: "🖱️ Mausrad-Y-Multiplikator", type: prefs.PREF_INT, pref: "mousewheel.default.delta_multiplier_y", possibleVals: [ { val: 150 }, ] }, { name: "🖱️ Vertikaler Faktor des Systembildlaufes", type: prefs.PREF_INT, pref: "mousewheel.system_scroll_override.vertical.factor", possibleVals: [ { val: 250 }, ] }, "seperator", { name: "▶️ Autoplay Medien Standard", type: prefs.PREF_INT, pref: "media.autoplay.default", possibleVals: [ { val: 0, name: "0 - allow" }, { val: 1, name: "1 - blockAudible 👍" }, { val: 5, name: "5 - blockAll" }, ] }, { name: "📺 Videos gesperrt - Videos frei", type: prefs.PREF_BOOL, pref: "media.mediasource.enabled", possibleVals: [ { val: false }, { val: true }, ] }, { name: "▶️ Media Autoplay ext bg", type: prefs.PREF_BOOL, pref: "media.autoplay.allow-extension-background-pages", possibleVals: [ { val: false }, { val: true }, ] }, { name: "▶️ Richtlinien zur Sperrung von Autoplay-Medien", type: prefs.PREF_INT, pref: "media.autoplay.blocking_policy", possibleVals: [ { val: 0, name: "0 - no block" }, { val: 1, name: "1 - block 👍" }, { val: 2, name: "2 - block more" }, // 0=sticky (default), 1=transient, 2=user ] }, { name: "▶️ InternetAudio", type: prefs.PREF_BOOL, pref: "dom.webaudio.enabled", possibleVals: [ { val: false }, { val: true , sign: '‼️' , warnbadge: true}, ] }, "seperator", { name: "🔤 Benutzerdefinierte Web-Schriften zulassen", type: prefs.PREF_INT, pref: "browser.display.use_document_fonts", possibleVals: [ { name: "1 - Allow", val: 1 }, { name: "0 - Disallow", val: 0 }, ] }, { name: "💻 Keine Popup Anmeldung für Browser-Werkzeuge", type: prefs.PREF_BOOL, pref: "devtools.debugger.prompt-connection", possibleVals: [ { val: true }, { name: "false ⚠️", val: false , sign: '‼️' }, ] }, { name: "🔏 Tooltips aktivieren - deaktivieren", type: prefs.PREF_BOOL, pref: "browser.chrome.toolbar_tips", possibleVals: [ { val: false }, { val: true }, ] }, "seperator", { name: "💻 Popups nicht automatisch schließen", type: prefs.PREF_BOOL, pref: "ui.popup.disable_autohide", possibleVals: [ { val: false }, { val: true }, ] }, ]; if (!window.gBrowser){ return; } CustomizableUI.createWidget({ id: 'aboutconfig-button', // button id type: "custom", defaultArea: CustomizableUI.AREA_NAVBAR, removable: true, onBuild: function (doc) { let btn = doc.createXULElement('toolbarbutton'); btn.id = 'aboutconfig-button'; btn.label = button_label; btn.tooltipText = button_label; btn.type = 'menu'; btn.className = 'toolbarbutton-1 chromeclass-toolbar-additional'; btn.setAttribute("badged", "true"); btn.setAttribute("badge", "!"); let mp = doc.createXULElement("menupopup"); mp.id = 'aboutconfig-popup'; mp.onclick = function(event) { event.preventDefault() ;} ; prefItems.forEach( function (item, items_i) { // loop every user defined pref if (item === "seperator") { mp.appendChild(doc.createXULElement('menuseparator')); return; } //var current_val = getItemCurrentVal(item) ; var menu = doc.createXULElement("menu"); menu.label = item.name ? item.name : item.pref ; menu.id = "aboutconfig_menu_" + items_i ; menu.className = 'menuitem-iconic' ; var menupopup = doc.createXULElement("menupopup"); menupopup.id = "aboutconfig_menupopup_" + items_i ; menupopup.className = 'menuitem-iconic' ; item.possibleVals.forEach( function (pv, i) { // loop every possible value var display_val = prefPossibleValToDisplay(item, pv.val) ; // Submenu item. One is one possible value var menuitem = doc.createXULElement("menuitem"); menuitem.label = pv.name ? pv.name : display_val ; menuitem.id = "aboutconfig_menu_" + items_i + "__" + i ; menuitem.setAttribute('type', 'radio') ; menuitem.className = 'menuitem-iconic' ; menuitem.tooltipText = display_val ; if (pv ['sign']) menuitem.label += ' ' + pv['sign']; menuitem.addEventListener('click', function(event) { //console.log(this.id); setItemPrefVal(item , pv.val); } ) ; menupopup.appendChild(menuitem); }); var default_val = getItemDefaultVal(item); var default_val_display = null; var reset_label = "Zurücksetzen: "; if (item.signWhenDefaultVal) reset_label += item.signWhenDefaultVal + ' ' ; if (default_val !== undefined && default_val !== null) { default_val_display = prefPossibleValToDisplay(item, default_val); reset_label += default_val_display ; } else reset_label += ' (delete in about:config)' menupopup.appendChild( doc.createXULElement('menuseparator') ); // Submenu entry to reset a pref to default var default_item = doc.createXULElement("menuitem"); default_item.id = "aboutconfig_menu_" + items_i + "__default" ; default_item.className = 'menuitem-iconic'; default_item.label = reset_label; default_item.tooltipText = default_val_display; default_item.addEventListener('click', function(event) { //console.log(this.id); //setItemPrefVal(item , getItemDefaultVal(item) ); prefs.clearUserPref(item.pref); } ) ; menupopup.appendChild(default_item); //------------ menu.appendChild(menupopup); mp.appendChild(menu); }); btn.appendChild(mp); mp.addEventListener('popupshowing', function() { //console.log(this); evalPopulateMenu(this); update_badge(); }); btn.onclick = function(event) { if (event.button == 1) { const win = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator) .getMostRecentWindow("navigator:browser"); win.gBrowser.selectedTab = win.gBrowser.addTrustedTab('about:config'); } update_badge(); }; return btn; } }); function getItemDefaultVal (item) { var default_val = undefined; try{ if ( item.type == prefs.PREF_BOOL ) default_val = prefs.getDefaultBranch(item.pref).getBoolPref(''); else if ( item.type == prefs.PREF_INT ) default_val = prefs.getDefaultBranch(item.pref).getIntPref(''); else if ( item.type == prefs.PREF_STRING ) default_val = prefs.getDefaultBranch(item.pref).getStringPref(''); }catch(err) { default_val = null } return default_val; } function getItemCurrentVal (item) { var current_val = null; try{ if ( item.type == prefs.PREF_BOOL ) current_val = prefs.getBoolPref(item.pref); else if ( item.type == prefs.PREF_INT ) current_val = prefs.getIntPref(item.pref); else if ( item.type == prefs.PREF_STRING ) current_val = prefs.getStringPref(item.pref); }catch(err){ } return current_val ; } function if_pref_current_val_is (item, pv_index) { var current_val = getItemCurrentVal(item) ; if (current_val === null) return false; if ( current_val === item.possibleVals[pv_index].val ) return true; else return false; } function setItemPrefVal(item, newVal) { if ( item.type == prefs.PREF_BOOL ) prefs.setBoolPref(item.pref, newVal); else if ( item.type == prefs.PREF_INT ) prefs.setIntPref(item.pref, newVal); else if ( item.type == prefs.PREF_STRING ) prefs.setStringPref(item.pref, newVal); update_badge(); } function prefPossibleValToDisplay(item, possible_val ) { if (possible_val === null) return "null"; var display_val = possible_val.toString(); if (item.type == prefs.PREF_STRING) display_val = `'${display_val}'`; return display_val; } function evalPopulateMenu(popupmenu) { prefItems.forEach( function (item, items_i) { if (item === "seperator") return; const menu = popupmenu.querySelector("#aboutconfig_menu_" + items_i); menu.label = item.name ? item.name : item.pref ; menu.style.fontWeight = ""; const default_val = getItemDefaultVal(item); var current_val = getItemCurrentVal(item) ; var current_val_display = prefPossibleValToDisplay(item, current_val); menu.tooltipText = `Pref: ${item.pref}\nValue: ${current_val_display}`; if (current_val !== null) { if (item.type == prefs.PREF_BOOL) menu.label += ' [' + ( current_val?'T':'F' ) + ']'; else if (item.type == prefs.PREF_INT) menu.label += ' [' + current_val + ']'; else if (item.type == prefs.PREF_STRING) { var current_val_display_short; if (current_val.length > 8) current_val_display_short = current_val.substring(0, 6) + '..'; else current_val_display_short = current_val; menu.label += ' [' + current_val_display_short + ']'; } } if (current_val !== default_val) menu.style.fontWeight = "bold"; if (current_val === default_val && item.signWhenDefaultVal) menu.label += ' ' + item.signWhenDefaultVal; item.possibleVals.forEach( function (pv, i) { menuitem = popupmenu.querySelector("#aboutconfig_menu_" + items_i + "__" + i); if ( if_pref_current_val_is(item, i) ) { menuitem.setAttribute("checked",true); if (pv ['sign']) menu.label += ' ' + pv['sign']; } else menuitem.setAttribute("checked",false); }); }); } function add_warnbadge() { if ( ! sss.sheetRegistered(cssuri_warnbadge, sss.USER_SHEET) ) sss.loadAndRegisterSheet(cssuri_warnbadge, sss.USER_SHEET); } function rm_warnbadge() { if ( sss.sheetRegistered(cssuri_warnbadge, sss.USER_SHEET) ) sss.unregisterSheet(cssuri_warnbadge, sss.USER_SHEET); } update_badge(); async function update_badge() { var show_warnbadge = false; for (item of prefItems) { if (typeof(item) === "string") continue; const current_val = getItemCurrentVal(item) ; if ( item.possibleVals.some ( function(ele) { return ( ele ['val'] === current_val && ele ['warnbadge'] && ele ['warnbadge'] === true ); } ) ) { show_warnbadge = true; break; } } if (show_warnbadge) add_warnbadge(); else rm_warnbadge(); } })();
-
-
uuuunnnddd...
Das "Kästchen" wenn Option nicht ausgewählt auch weg bekommen!JavaScript
Alles anzeigenconst cssuri_icon = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(` toolbarbutton#aboutconfig-button .toolbarbutton-icon { list-style-image: url("data:image/svg+xml;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAgIC0gTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwogICAtIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxwYXRoIGZpbGw9ImNvbnRleHQtZmlsbCIgZD0iTTEzLjkgOS44MWExLjIzIDEuMjMgMCAwIDAgMC0uMTd2LS4wOGE1LjY3IDUuNjcgMCAwIDAtMi40LTMuMzYgMS4xNyAxLjE3IDAgMCAxLS41Ni0uOTVWM2ExIDEgMCAwIDAtMS0xSDYuMDZhMSAxIDAgMCAwLTEgMXYyLjI1YTEuMTcgMS4xNyAwIDAgMS0uNTYgMSA1LjY2IDUuNjYgMCAwIDAtMi4zNSAzLjMzdi4xMmEuNTMuNTMgMCAwIDAgMCAuMTEgNS4zNSA1LjM1IDAgMCAwLS4xMSAxIDUuNjUgNS42NSAwIDAgMCAzLjI0IDUuMDkgMSAxIDAgMCAwIC40NC4xaDQuNTdhMSAxIDAgMCAwIC40NC0uMUE1LjY1IDUuNjUgMCAwIDAgMTQgMTAuODNhNS4zIDUuMyAwIDAgMC0uMS0xLjAyem0tOC4yNy0yYTMuMTggMy4xOCAwIDAgMCAxLjQzLTIuNlY0aDEuODh2MS4yNWEzLjE4IDMuMTggMCAwIDAgMS40MyAyLjYgMy42OCAzLjY4IDAgMCAxIDEuNTQgMi4yNHYuMjJhMi44MiAyLjgyIDAgMCAxLTMuNjgtLjU5QTMuNDggMy40OCAwIDAgMCA0LjU2IDlhMy43NiAzLjc2IDAgMCAxIDEuMDctMS4xNXoiPjwvcGF0aD48L3N2Zz4="); } toolbarbutton#aboutconfig-button .toolbarbutton-badge { background-color: #009f00; visibility: hidden; } @media (-moz-platform: windows) { menuitem[checked="true"] > .menu-icon { -moz-context-properties: fill, fill-opacity; /* fill: currentColor; */ fill:rgb(0, 255, 0) !important; fill-opacity: var(--menu-icon-opacity); --menuitem-icon: url("chrome://global/skin/icons/menu-check.svg")!important; } } @media (-moz-platform: windows) { menuitem[checked="false"] > .menu-icon { -moz-context-properties: fill, fill-opacity; fill:#ffff0000 !important; fill-opacity: var(--menu-icon-opacity); --menuitem-icon: url("chrome://global/skin/icons/menu-check.svg")!important; } } } `), null, null);
Woran ich mir aber gerade die Zähne ausbeiße, das "Kästchen" bei Zurücksetzen: ...
-
2002Andreas Klasse Idee! Jetzt müssten nur noch die "Kästchen" weg.
Habe mir erlaubt klitze kleine Veränderungen vor zu nehmen.
Häkchen ist jetzt grün,
und das background-image: in Zeile 38 habe ich durch --menuitem-icon: ersetzt.JavaScript
Alles anzeigen/* Firefox userChrome script * Shortcut menu to modify about:config entries * Tested on Firefox 132+ * Author: garywill (https://garywill.github.io) * */ // ==UserScript== // @include main // @onlyonce // ==/UserScript== console.log("aboutconfig_menu.uc.js"); (() => { const prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs") const sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); // --------------------------------------------------------------------------------------- const button_label = "about:config Kontextmenü"; const cssuri_icon = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(` toolbarbutton#aboutconfig-button .toolbarbutton-icon { list-style-image: url("data:image/svg+xml;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAgIC0gTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwogICAtIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxwYXRoIGZpbGw9ImNvbnRleHQtZmlsbCIgZD0iTTEzLjkgOS44MWExLjIzIDEuMjMgMCAwIDAgMC0uMTd2LS4wOGE1LjY3IDUuNjcgMCAwIDAtMi40LTMuMzYgMS4xNyAxLjE3IDAgMCAxLS41Ni0uOTVWM2ExIDEgMCAwIDAtMS0xSDYuMDZhMSAxIDAgMCAwLTEgMXYyLjI1YTEuMTcgMS4xNyAwIDAgMS0uNTYgMSA1LjY2IDUuNjYgMCAwIDAtMi4zNSAzLjMzdi4xMmEuNTMuNTMgMCAwIDAgMCAuMTEgNS4zNSA1LjM1IDAgMCAwLS4xMSAxIDUuNjUgNS42NSAwIDAgMCAzLjI0IDUuMDkgMSAxIDAgMCAwIC40NC4xaDQuNTdhMSAxIDAgMCAwIC40NC0uMUE1LjY1IDUuNjUgMCAwIDAgMTQgMTAuODNhNS4zIDUuMyAwIDAgMC0uMS0xLjAyem0tOC4yNy0yYTMuMTggMy4xOCAwIDAgMCAxLjQzLTIuNlY0aDEuODh2MS4yNWEzLjE4IDMuMTggMCAwIDAgMS40MyAyLjYgMy42OCAzLjY4IDAgMCAxIDEuNTQgMi4yNHYuMjJhMi44MiAyLjgyIDAgMCAxLTMuNjgtLjU5QTMuNDggMy40OCAwIDAgMCA0LjU2IDlhMy43NiAzLjc2IDAgMCAxIDEuMDctMS4xNXoiPjwvcGF0aD48L3N2Zz4="); } toolbarbutton#aboutconfig-button .toolbarbutton-badge { background-color: #009f00; visibility: hidden; } @media (-moz-platform: windows) { menuitem[checked="true"] > .menu-icon { -moz-context-properties: fill, fill-opacity; /* fill: currentColor; */ fill:rgb(0, 255, 0) !important; fill-opacity: var(--menu-icon-opacity); --menuitem-icon: url("chrome://global/skin/icons/menu-check.svg")!important; } } `), null, null); const cssuri_warnbadge = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(` toolbarbutton#aboutconfig-button .toolbarbutton-badge { background-color:rgb(255, 0, 0); visibility: unset; } `), null, null); sss.loadAndRegisterSheet(cssuri_icon, sss.USER_SHEET); var prefItems = [ { name: "📼 Kein automatisches Popup beim Download", type: prefs.PREF_BOOL, pref: "browser.download.alwaysOpenPanel", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🎞️ Beim Schließen vom letzten Tab den Browser nicht schließen", type: prefs.PREF_BOOL, pref: "browser.tabs.closeWindowWithLastTab", possibleVals: [ { val: false }, { val: true }, ] }, "seperator", { name: "🔎 Suche aus Suchleiste im neuen Tab öffnen", type: prefs.PREF_BOOL, pref: "browser.search.openintab", possibleVals: [ { val: false }, { val: true }, ] }, { name: "📖 Lesezeichen im neuen Tab öffnen", type: prefs.PREF_BOOL, pref: "browser.tabs.loadBookmarksInTabs", possibleVals: [ { val: false }, { val: true }, ] }, { name: "📖 Link aus Adressleiste im neuen Tab öffnen", type: prefs.PREF_BOOL, pref: "browser.urlbar.openintab", possibleVals: [ { val: false }, { val: true }, ] }, "seperator", { name: "🎊 Animations Modus", type: prefs.PREF_STRING, pref: "image.animation_mode", possibleVals: [ { name: "Einmal", val: "once" }, { name: "Keine", val: "none" }, { name: "Dauerhaft", val: "normal" }, ] }, "seperator", { name: "🔏 CSP aktivieren - deaktivieren", type: prefs.PREF_BOOL, pref: "security.browser_xhtml_csp.enabled", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🔏 Urlbar Verhalten - deaktivieren", type: prefs.PREF_BOOL, pref: "browser.urlbar.scotchBonnet.enableOverride", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🔏 eval erlauben - verbieten", type: prefs.PREF_BOOL, pref: "security.allow_unsafe_dangerous_privileged_evil_eval", possibleVals: [ { val: false }, { name: "true ⚠️", val: true , sign: '‼️' }, ] }, { name: "🌐 IPv6 ausschalten", type: prefs.PREF_BOOL, pref: "network.dns.disableIPv6", possibleVals: [ { val: false }, { val: true }, ] }, { name: "🔐 DNS Modus", type: prefs.PREF_INT, pref: "network.trr.mode", possibleVals: [ { name: "0 - Default" , val: 0 }, { name: "2 - DoH, fallback Plain DNS" , val: 2 }, { name: "3 - DoH only" , val: 3 }, { name: "5 - Plain DNS" , val: 5 } ] }, { name: "🔐 DoH server", type: prefs.PREF_STRING, pref: "network.trr.uri", possibleVals: [ { name: "Cloudflare" , val: "https://mozilla.cloudflare-dns.com/dns-query" }, { name: "NextDNS" , val: "https://firefox.dns.nextdns.io/" } ] // See buildin DoH at 'network.trr.resolvers' }, { name: "🔏 Veraltete TLS Version aktivieren", type: prefs.PREF_BOOL, pref: "security.tls.version.enable-deprecated", possibleVals: [ { val: false }, { name: "true ⚠️", val: true , sign: '‼️'}, ] }, "seperator", { name: "🖱️ Mausrad-Y-Multiplikator", type: prefs.PREF_INT, pref: "mousewheel.default.delta_multiplier_y", possibleVals: [ { val: 150 }, ] }, { name: "🖱️ Vertikaler Faktor des Systembildlaufes", type: prefs.PREF_INT, pref: "mousewheel.system_scroll_override.vertical.factor", possibleVals: [ { val: 250 }, ] }, "seperator", { name: "▶️ Autoplay Medien Standard", type: prefs.PREF_INT, pref: "media.autoplay.default", possibleVals: [ { val: 0, name: "0 - allow" }, { val: 1, name: "1 - blockAudible 👍" }, { val: 5, name: "5 - blockAll" }, ] }, { name: "📺 Videos gesperrt - Videos frei", type: prefs.PREF_BOOL, pref: "media.mediasource.enabled", possibleVals: [ { val: false }, { val: true }, ] }, { name: "▶️ Media Autoplay ext bg", type: prefs.PREF_BOOL, pref: "media.autoplay.allow-extension-background-pages", possibleVals: [ { val: false }, { val: true }, ] }, { name: "▶️ Richtlinien zur Sperrung von Autoplay-Medien", type: prefs.PREF_INT, pref: "media.autoplay.blocking_policy", possibleVals: [ { val: 0, name: "0 - no block" }, { val: 1, name: "1 - block 👍" }, { val: 2, name: "2 - block more" }, // 0=sticky (default), 1=transient, 2=user ] }, { name: "▶️ InternetAudio", type: prefs.PREF_BOOL, pref: "dom.webaudio.enabled", possibleVals: [ { val: false }, { val: true , sign: '‼️' , warnbadge: true}, ] }, "seperator", { name: "🔤 Benutzerdefinierte Web-Schriften zulassen", type: prefs.PREF_INT, pref: "browser.display.use_document_fonts", possibleVals: [ { name: "1 - Allow", val: 1 }, { name: "0 - Disallow", val: 0 }, ] }, { name: "💻 Keine Popup Anmeldung für Browser-Werkzeuge", type: prefs.PREF_BOOL, pref: "devtools.debugger.prompt-connection", possibleVals: [ { val: true }, { name: "false ⚠️", val: false , sign: '‼️' }, ] }, { name: "🔏 Tooltips aktivieren - deaktivieren", type: prefs.PREF_BOOL, pref: "browser.chrome.toolbar_tips", possibleVals: [ { val: false }, { val: true }, ] }, "seperator", { name: "💻 Popups nicht automatisch schließen", type: prefs.PREF_BOOL, pref: "ui.popup.disable_autohide", possibleVals: [ { val: false }, { val: true }, ] }, ]; if (!window.gBrowser){ return; } CustomizableUI.createWidget({ id: 'aboutconfig-button', // button id type: "custom", defaultArea: CustomizableUI.AREA_NAVBAR, removable: true, onBuild: function (doc) { let btn = doc.createXULElement('toolbarbutton'); btn.id = 'aboutconfig-button'; btn.label = button_label; btn.tooltipText = button_label; btn.type = 'menu'; btn.className = 'toolbarbutton-1 chromeclass-toolbar-additional'; btn.setAttribute("badged", "true"); btn.setAttribute("badge", "!"); let mp = doc.createXULElement("menupopup"); mp.id = 'aboutconfig-popup'; mp.onclick = function(event) { event.preventDefault() ;} ; prefItems.forEach( function (item, items_i) { // loop every user defined pref if (item === "seperator") { mp.appendChild(doc.createXULElement('menuseparator')); return; } //var current_val = getItemCurrentVal(item) ; var menu = doc.createXULElement("menu"); menu.label = item.name ? item.name : item.pref ; menu.id = "aboutconfig_menu_" + items_i ; menu.className = 'menuitem-iconic' ; var menupopup = doc.createXULElement("menupopup"); menupopup.id = "aboutconfig_menupopup_" + items_i ; menupopup.className = 'menuitem-iconic' ; item.possibleVals.forEach( function (pv, i) { // loop every possible value var display_val = prefPossibleValToDisplay(item, pv.val) ; // Submenu item. One is one possible value var menuitem = doc.createXULElement("menuitem"); menuitem.label = pv.name ? pv.name : display_val ; menuitem.id = "aboutconfig_menu_" + items_i + "__" + i ; menuitem.setAttribute('type', 'radio') ; menuitem.className = 'menuitem-iconic' ; menuitem.tooltipText = display_val ; if (pv ['sign']) menuitem.label += ' ' + pv['sign']; menuitem.addEventListener('click', function(event) { //console.log(this.id); setItemPrefVal(item , pv.val); } ) ; menupopup.appendChild(menuitem); }); var default_val = getItemDefaultVal(item); var default_val_display = null; var reset_label = "Zurücksetzen: "; if (item.signWhenDefaultVal) reset_label += item.signWhenDefaultVal + ' ' ; if (default_val !== undefined && default_val !== null) { default_val_display = prefPossibleValToDisplay(item, default_val); reset_label += default_val_display ; } else reset_label += ' (delete in about:config)' menupopup.appendChild( doc.createXULElement('menuseparator') ); // Submenu entry to reset a pref to default var default_item = doc.createXULElement("menuitem"); default_item.id = "aboutconfig_menu_" + items_i + "__default" ; default_item.className = 'menuitem-iconic'; default_item.label = reset_label; default_item.tooltipText = default_val_display; default_item.addEventListener('click', function(event) { //console.log(this.id); //setItemPrefVal(item , getItemDefaultVal(item) ); prefs.clearUserPref(item.pref); } ) ; menupopup.appendChild(default_item); //------------ menu.appendChild(menupopup); mp.appendChild(menu); }); btn.appendChild(mp); mp.addEventListener('popupshowing', function() { //console.log(this); evalPopulateMenu(this); update_badge(); }); btn.onclick = function(event) { if (event.button == 1) { const win = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator) .getMostRecentWindow("navigator:browser"); win.gBrowser.selectedTab = win.gBrowser.addTrustedTab('about:config'); } update_badge(); }; return btn; } }); function getItemDefaultVal (item) { var default_val = undefined; try{ if ( item.type == prefs.PREF_BOOL ) default_val = prefs.getDefaultBranch(item.pref).getBoolPref(''); else if ( item.type == prefs.PREF_INT ) default_val = prefs.getDefaultBranch(item.pref).getIntPref(''); else if ( item.type == prefs.PREF_STRING ) default_val = prefs.getDefaultBranch(item.pref).getStringPref(''); }catch(err) { default_val = null } return default_val; } function getItemCurrentVal (item) { var current_val = null; try{ if ( item.type == prefs.PREF_BOOL ) current_val = prefs.getBoolPref(item.pref); else if ( item.type == prefs.PREF_INT ) current_val = prefs.getIntPref(item.pref); else if ( item.type == prefs.PREF_STRING ) current_val = prefs.getStringPref(item.pref); }catch(err){ } return current_val ; } function if_pref_current_val_is (item, pv_index) { var current_val = getItemCurrentVal(item) ; if (current_val === null) return false; if ( current_val === item.possibleVals[pv_index].val ) return true; else return false; } function setItemPrefVal(item, newVal) { if ( item.type == prefs.PREF_BOOL ) prefs.setBoolPref(item.pref, newVal); else if ( item.type == prefs.PREF_INT ) prefs.setIntPref(item.pref, newVal); else if ( item.type == prefs.PREF_STRING ) prefs.setStringPref(item.pref, newVal); update_badge(); } function prefPossibleValToDisplay(item, possible_val ) { if (possible_val === null) return "null"; var display_val = possible_val.toString(); if (item.type == prefs.PREF_STRING) display_val = `'${display_val}'`; return display_val; } function evalPopulateMenu(popupmenu) { prefItems.forEach( function (item, items_i) { if (item === "seperator") return; const menu = popupmenu.querySelector("#aboutconfig_menu_" + items_i); menu.label = item.name ? item.name : item.pref ; menu.style.fontWeight = ""; const default_val = getItemDefaultVal(item); var current_val = getItemCurrentVal(item) ; var current_val_display = prefPossibleValToDisplay(item, current_val); menu.tooltipText = `Pref: ${item.pref}\nValue: ${current_val_display}`; if (current_val !== null) { if (item.type == prefs.PREF_BOOL) menu.label += ' [' + ( current_val?'T':'F' ) + ']'; else if (item.type == prefs.PREF_INT) menu.label += ' [' + current_val + ']'; else if (item.type == prefs.PREF_STRING) { var current_val_display_short; if (current_val.length > 8) current_val_display_short = current_val.substring(0, 6) + '..'; else current_val_display_short = current_val; menu.label += ' [' + current_val_display_short + ']'; } } if (current_val !== default_val) menu.style.fontWeight = "bold"; if (current_val === default_val && item.signWhenDefaultVal) menu.label += ' ' + item.signWhenDefaultVal; item.possibleVals.forEach( function (pv, i) { menuitem = popupmenu.querySelector("#aboutconfig_menu_" + items_i + "__" + i); if ( if_pref_current_val_is(item, i) ) { menuitem.setAttribute("checked",true); if (pv ['sign']) menu.label += ' ' + pv['sign']; } else menuitem.setAttribute("checked",false); }); }); } function add_warnbadge() { if ( ! sss.sheetRegistered(cssuri_warnbadge, sss.USER_SHEET) ) sss.loadAndRegisterSheet(cssuri_warnbadge, sss.USER_SHEET); } function rm_warnbadge() { if ( sss.sheetRegistered(cssuri_warnbadge, sss.USER_SHEET) ) sss.unregisterSheet(cssuri_warnbadge, sss.USER_SHEET); } update_badge(); async function update_badge() { var show_warnbadge = false; for (item of prefItems) { if (typeof(item) === "string") continue; const current_val = getItemCurrentVal(item) ; if ( item.possibleVals.some ( function(ele) { return ( ele ['val'] === current_val && ele ['warnbadge'] && ele ['warnbadge'] === true ); } ) ) { show_warnbadge = true; break; } } if (show_warnbadge) add_warnbadge(); else rm_warnbadge(); } })();
-
-
-
Dann teste das bitte mal mit diesem Icon:
chrome://global/skin/icons/arrow-down.svg
menuitem.style.setProperty('--menuitem-icon', 'url("chrome://global/skin/icons/arrow-down.svg")');
No problemo! Größenanpassung erfolgt!Für die eigenen Icons nutze ich eine css-Datei.
Ah!
Das ist z.B. ein Grund, warum ich gerne alles in einem Skript habe!
Aber ich muss zu geben, ich bin da auch nicht immer konsequent. -
FuchsFan Das Skript ist ganz schöner Murks!
Es sind zwei oder gar drei Skripte, die miteinander verwurschtelt wurden!
Dann ist nahezu alles in der Config tot, also ohne Funktion.
Daraus folgt viele Zeilen ungenutzter Code, der eventuell aber dann doch hier oder da zu Problemen führen könnte.
Es tut mir echt leid, wenn ich wirklich JavaScript könnte, würde ich Dir ein neues Skript mal eben so schreiben.
Aber daran getraue ich mich nicht wirklich. Sorry.
Ich finde z.B. nicht heraus woher die Symbole für die Anwendungen herkommen sollten.Dann der Code für die Firefoxfunktionen, die sind doch längst überholt!
Funktionieren die denn überhaupt? Neustart und Browser-Werkzeuge.key.setAttribute('oncommand', 'document.getElementById("AMpopup").openPopup();'); kann eigentlich nicht mehr funktionieren!
Ich denke, Du bist besser beraten, einzelne Skripte zu nutzen.
Z.B. eines für ein abgespecktes Appmenü und das von Andreas genutzte OpenWith.us.js.Wenn Du magst, könnte ich mich ja am WE mal hinsetzen und schauen, ob ich nicht "mein" abgespecktes Appmenü-Skript
irgendwie mit dem OpenWith.us.js verknüpfen könnte.
Was fehlen würde, wäre die Funktion zum freien Verschieben des Buttons. -
-
Im Übrigen funktioniert das CSS bei mir in der Nightly!
CSS
Alles anzeigen#context-navigation { > .menuitem-iconic { /* Gemeinsame Icon-Größe */ > .menu-icon { width: 35px !important; height: 35px !important; max-width: 35px !important; max-height: 35px !important; background-size: contain !important; /* für perfekte Skalierung */ object-fit: contain !important; /* falls SVGs oder PNGs verwendet werden */ } } }
Da funkt FuchsFan was anderes dazwischen!
-
2002Andreas FuchsFan muss da noch anderen Code haben!
-
FuchsFan Uff.
Da ist aber ganz schön schwer daran gebastelt worden.
Das schaue ich mir heute Nachmittag mal genauer an, ok? -
-
2002Andreas Ich hab's
Ändere die Zeile mit : image: "moz-icon:file:///" + BrowserPath[i].split("<>")[0] + "?size=16",
einfach in : image: "moz-icon:file:///" + encodeURIComponent(BrowserPath[i].split("<>")[0]) + "?size=16",
So! Nun muss ich aber ins Bett.
Ach, und so ganz nebenbei habe ich das Appmenü-Skript auch gefixt!
Wer nutzt das Original? -
Da wird ja so einiges auf uns zukommen.
Mal sehen ob wir das alles wieder zum laufen bringen.Es sind mehr Scripte davon betroffen als ich dachte.
Die da wären?
Bei mir sind es "nur" drei gewesen.
Die Skripte mit der Funktion zum Übersetzen mit Google sowie DeepL habe ich "reparieren" können.
Einzig das Appmenü-Skript von aborix, das will nicht so! Da stehe ich auf dem Schlauch. -
Okey, ...!
Mein Fehler, Dein FF kann kein JS, oder?
Dann funktioniert das JavaScript natürlich nicht. -
Du müsstest nur let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
in let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'Icons')); ändern!Oder halt Deinen Ordner für die Symbole von Icons in icons umbenennen. Viele Wege führen nach Rom.
CSS scheint da etwas gutmütiger zu sein! Denn da nutzt Du icons, aber der Ordner heißt Icons.
Das ist aber eigentlich ein Fehler! Auch wenn es funktioniert, berichtige das, denn es könnte in Zunkunft
eben DOCH zu fehlern führen und dann weist Du nicht, woran das liegt.
Mein Vorschlag, ändere den Ordnernamen in "icons".
Dann funktioniert weiterhin Dein CSS, aber eben auch das Skript ohne die Änderung. -
-