Nein leider nicht, auch ohne [needsgutter] nichts.
Symbole in den Kontextmenüs [ Update ]
-
Mira_Belle -
5. Juli 2022 um 12:14 -
Erledigt
-
-
Wenn ich es so mache:
CSS#mainPopupSet menupopup[needsgutter] > menuitem:not([type="checkbox"], [class="menuitem-iconic"], [type="radio"], [checked], [image]) > .menu-icon {display: none !important; }dann funktioniert es auch bei der vor und zurück Schaltfläche.
[needsgutter] braucht es. Ohne tut sich nichts.Mfg.
Endor -
dann funktioniert es auch bei der Zurück Schaltfläche.
Bei vor noch nicht.Wird die vor Schaltfläche überhaupt angezeigt, wenn es kein vor gibt?
Wenn du in einem Tab mehrere Links öffnest, dann auf zurück gehst, ist die vor Schaltfläche dann da?

Ansonsten kannst du noch probieren, statt [image] image zu benutzen, oder grob:
CSSmenupopup:not(#backForwardMenu) > menuitem:not([type="checkbox"], [class="menuitem-iconic"] ,[type="radio"], [checked], [image]) > .menu-icon { display: none !important; }So langsam werd ich hier zum live Chatbot...

-
statt [image] image
Macht keinen Unterschied.
Aber das passt hier jetzt ja.
Hatte oben ja nochmals geändert.Vielen Dank für Deine Mühe.
Mfg.
Endor -
Wird die vor Schaltfläche überhaupt angezeigt, wenn es kein vor gibt?
Ja, aber ausgegraut (inaktiv)...
-
ausgegraut (inaktiv)...
und mit Rechtsklick drauf wird hier auch ein Kontextmenü angezeigt.
-
Einen Fehler habe ich noch.
Ich verwende dieses Script:Code
Alles anzeigen// ==UserScript== // @name UndoListInTabmenuToo // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description UndoListInTabmenuToo.uc.js // @include main // @compatibility Firefox 140 // @author Alice0775 // @version 2025/09/05 mark '*' for current index in the tooltip // @version 2025/08/06 fix tooltip bug due to the change of 25/01/05 // @version 2025/07/26 add List All Tabs menu // @version 2025/01/05 remove redundant menuitems // @version 2025/01/05 fix bug // @version 2024/12/22 fix Bug 1936336 - Disallow inline event handlers // @version 2024/08/23 Bug 1690613 - Allow access to url/title/favIconUrl without "tabs" permission in session API // @version 2023/06/16 08:00 Bug 1819675 - Expand recently closed tabs to include all Windows // @version 2022/05/10 fix ref to context-media-eme-separator // @version 2021/12/09 remove JSON.parse (Bug 1733425) // @version 2021/04/25 fix 1689378 // @version 2019/11/14 remove eval // @version 2019/06/30 10:00 Bug 1555060 Convert <tabs> to a custom element // @version 2019/06/24 23:00 wait for gBrowser initialized // @version 2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement // @version 2018/05/10 60 // @version 2017/11/18 nsIPrefBranch to nsIPrefBranch // @version 2010/09/18 00:00 4.0b7pre // @version 2009/02/03 13:00 Tab-Verlauf im Tooltip anzeigen // @Note Fügt die UndoClose-Tab-Liste zu Tabs und Kontextmenüs hinzu // @OriginalCode Orginalcode aus browser.js für populateUndoSubmenu verwenden // @version 2018/05/09 15:00 61 // ==/UserScript== // @version 2010/03/26 13:00 Minefield/3.7a4pre Bug 554991 - allow tab context menu to be modified by normal XUL overlays // @version 2010/03/15 00:00 Minefield/3.7a4pre Bug 347930 - Tab strip should be a toolbar instead // @version 2009/09/09 15:00 Mittelklick-Handhabung // @version 2009/09/03 22:00 Firefox3.7a1pre Funktion wurde wieder hergestellt. (Bug 489925. getElementById should not return anonymous nodes) // @version 2009/08/22 00:00 Firefox3.6 Ändern des stringbandle // @version 2009/04/24 00:00 #394759 [Firefox:Session Restore]-Add undo close window feature // @version 2008/10/12 18:00 Fx3.0.4pre Mittelklick-Popupmenü wurde nicht geschlossen und andere Korrekturen // @version 2007/10/05 10:00 var UndoListInTabmenu = { // -- config -- TABCONTEXTMENU : true , //Im Tabkontextmenü: anzeigen: true, nicht anzeigen: false CONTEXTMENU : true, //Im Hauptkontextmenü: anzeigen: true , nicht anzeigen: false // -- config end-- ss: null, get tabContext() { return document.getElementById("tabContextMenu"); }, get navigatorBundle() { return Services.strings.createBundle( "chrome://browser/locale/browser.properties" ); }, init: function(){ if (this.TABCONTEXTMENU){ //Tabkontextmenü var tabContext = this.tabContext; this.makePopup(tabContext, null, "tabContextUndoList"); } if (this.CONTEXTMENU){ //Hauptkontextmenü var contextMenu = document.getElementById("contentAreaContextMenu"); var refItem = document.getElementById("context-media-eme-separator"); this.makePopup(contextMenu, refItem, "ContextUndoList"); } // get closed-tabs from nsSessionStore this._ss = SessionStore; }, makePopup: function(popup, refItem, id){ var menu; //label const locale = "de"; // "Recently Closed Windows" menu = document.createXULElement("menu"); menu.setAttribute("id", "historyUndoWindowMenu3"); menu.setAttribute("label", "K\u00FCrzlich geschlossene Fenster"); menu.setAttribute("accesskey", "F"); menu.setAttribute("disabled", "false"); popup.insertBefore(menu, refItem); menupopup = document.createXULElement("menupopup"); menu.appendChild(menupopup); menupopup.setAttribute("id", "historyUndoWindowPopup3"); //menu.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoWindowSubmenu(this);"); menupopup.addEventListener("popupshowing", (event) => UndoListInTabmenu.populateUndoWindowSubmenu(event.currentTarget)); //Liste kürzlich geschossener Tabs const LABELTEXT = "K\u00FCrzlich geschlossene Tabs"; //create menu menu = document.createXULElement("menu"); menu.setAttribute("label", LABELTEXT); menu.setAttribute("accesskey", "T"); if (id) menu.setAttribute("id", id); //menu.setAttribute("disabled", true); var menupopup = document.createXULElement("menupopup"); menupopup.addEventListener("popupshowing", () => UndoListInTabmenu.populateUndoSubmenu(menupopup)); //menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu(this);"); menu.appendChild(menupopup); popup.insertBefore(menu, refItem); //All tabs menu menu = document.createXULElement("menuitem"); menu.setAttribute("label", "Alle Tabs auflisten"); menu.setAttribute("accesskey", "A"); popup.insertBefore(menu, refItem); menu.addEventListener("command", (event) => {document.getElementById("alltabs-button").click()}) //add event listener popup.addEventListener('popupshowing',function(event) { UndoListInTabmenu.toggleRecentlyClosedWindows(document.getElementById("historyUndoWindowMenu3")); // no restorable tabs, so make sure menu is disabled, and return if (UndoListInTabmenu._ss.getClosedTabCount(window) == 0) { menu.setAttribute("disabled", true); //menu.setAttribute("hidden", true); return; } menu.removeAttribute("disabled"); //menu.setAttribute("hidden", false); },false); }, /** * Populate when the history menu is opened (Fx3.6) */ populateUndoSubmenu: function(undoPopup) { while (undoPopup.hasChildNodes()) { undoPopup.removeChild(undoPopup.firstChild); } var utils = RecentlyClosedTabsAndWindowsMenuUtils; var tabsFragment = utils.getTabsFragment( window, "menuitem", /* aPrefixRestoreAll = */ true, "menu-history-reopen-all-tabs" ); undoPopup.appendChild(tabsFragment); // populate tab historis for tooltip var undoItems = UndoListInTabmenu._ss.getClosedTabDataForWindow(window); for (var i = 0; i < undoItems.length; i++) { var entries = undoItems[i].state.entries; var tooltiptext = ""; for (var j = entries.length - 1; j > -1; j--){ if (j != entries.length - 1) tooltiptext += "\n"; if (undoItems[i].state.index - 1 !== j) { tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title; } else { tooltiptext += "*" + ". " + entries[j].title; } } undoPopup.childNodes[i].setAttribute("tooltiptext", tooltiptext); } // "Append Clear undo close tb list" undoPopup.appendChild(document.createXULElement("menuseparator")); let m = undoPopup.appendChild(document.createXULElement("menuitem")); m.setAttribute("label", "Liste der letzten Tabs l\u00F6schen"); m.setAttribute("accesskey", "l"); m.addEventListener("command", function() { let prefs = Services.prefs; let max_undo = prefs.getIntPref("browser.sessionstore.max_tabs_undo"); prefs.setIntPref("browser.sessionstore.max_tabs_undo", 0); prefs.setIntPref("browser.sessionstore.max_tabs_undo", max_undo); }, false); }, toggleRecentlyClosedWindows: function PHM_toggleRecentlyClosedWindows(menu) { // enable/disable the Recently Closed Windows sub menu // no restorable windows, so disable menu if (this._ss.getClosedWindowCount() == 0) menu.setAttribute("disabled", true); else menu.removeAttribute("disabled"); }, /** * Populate when the history menu is opened */ populateUndoWindowSubmenu: function PHM_populateUndoWindowSubmenu(undoPopup) { while (undoPopup.hasChildNodes()) { undoPopup.removeChild(undoPopup.firstChild); } let utils = RecentlyClosedTabsAndWindowsMenuUtils; let windowsFragment = utils.getWindowsFragment( window, "menuitem", /* aPrefixRestoreAll = */ true, "menu-history-reopen-all-windows" ); undoPopup.appendChild(windowsFragment); undoPopup.firstChild.setAttribute("accesskey", "R"); // "Append Clear undo close window list" undoPopup.appendChild(document.createXULElement("menuseparator")); m = undoPopup.appendChild(document.createXULElement("menuitem")); m.setAttribute("label", "Liste der kürzlich geschlossenen Fenster l\u00F6schen"); m.setAttribute("accesskey", "L"); m.addEventListener("command", function() { for (let i = SessionStore.getClosedWindowCount() -1; i >= 0; i--) SessionStore.forgetClosedWindow(i); }, false); } }; // We should only start the redirection if the browser window has finished // starting up. Otherwise, we should wait until the startup is done. if (gBrowserInit.delayedStartupFinished) { UndoListInTabmenu.init(); } else { let delayedStartupFinished = (subject, topic) => { if (topic == "browser-delayed-startup-finished" && subject == window) { Services.obs.removeObserver(delayedStartupFinished, topic); UndoListInTabmenu.init(); } }; Services.obs.addObserver(delayedStartupFinished, "browser-delayed-startup-finished"); }Hier werkelt eine neuere Version des Scripts:
Code
Alles anzeigen// ==UserScript== // @name UndoListInTabmenuToo // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description UndoListInTabmenuToo.uc.js // @include main // @author Alice0775 // @compatibility Firefox 149 // @version 2026/01/16 00:00 fix bug // @version 2026/01/13 00:00 compatibility 149 from 148 // @version 2026/01/07 Bug 2008041 - Make XUL disabled / checked attributes html-style boolean attributes. // @version 2025/09/05 mark '*' for current index in the tooltip // @version 2025/08/06 fix tooltip bug due to the change of 025/01/05 // @version 2025/07/26 add List All Tabs menu // @version 2025/01/05 remove redundant menuitems // @version 2025/01/05 fix bug // @version 2024/12/22 fix Bug 1936336 - Disallow inline event handlers // @version 2024/08/23 Bug 1690613 - Allow access to url/title/favIconUrl without "tabs" permission in session API // @version 2023/06/16 08:00 Bug 1819675 - Expand recently closed tabs to include all Windows // @version 2022/05/10 fix ref to context-media-eme-separator // @version 2021/12/09 remove JSON.parse (Bug 1733425) // @version 2021/04/25 fix 1689378 // @version 2019/11/14 remove eval // @version 2019/06/30 10:00 Bug 1555060 Convert <tabs> to a custom element // @version 2019/06/24 23:00 wait for gBrowser initialized // @version 2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement // @version 2018/05/10 60 // @version 2017/11/18 nsIPrefBranch to nsIPrefBranch // @version 2010/09/18 00:00 4.0b7pre // @version 2009/02/03 13:00 ツールチップにタブ内履歴を表示するようにした // @Note タブやコンテキストメニューにもUndoClose Tab Listを追加するもの // @OriginalCode browser.jsからpopulateUndoSubmenuを拝借し, ごにょごにょした // @version 2018/05/09 15:00 61 // ==/UserScript== // @version 2010/03/26 13:00 Minefield/3.7a4pre Bug 554991 - allow tab context menu to be modified by normal XUL overlays // @version 2010/03/15 00:00 Minefield/3.7a4pre Bug 347930 - Tab strip should be a toolbar instead // @version 2009/09/09 15:00 中クリック処理 // @version 2009/09/03 22:00 Firegox3.7a1preで動かなくなっていたのを修正(Bug 489925. getElementById should not return anonymous nodes) // @version 2009/08/22 00:00 Firegox3.6 stringbandleの変更による // @version 2009/04/24 00:00 #394759 [Firefox:Session Restore]-Add undo close window feature // @version 2008/10/12 18:00 Fx3.0.4pre中クリックしたときメニューポップアップが閉じないおよびその他fix // @version 2007/10/05 10:00 var UndoListInTabmenu = { // -- config -- TABCONTEXTMENU : true , // Im Hauptkontextmenü: anzeigen: true , nicht anzeigen: false CONTEXTMENU : true, // Im Hauptkontextmenü: anzeigen: true , nicht anzeigen: false // -- config end-- ss: null, get tabContext() { return document.getElementById("tabContextMenu"); }, get navigatorBundle() { return Services.strings.createBundle( "chrome://browser/locale/browser.properties" ); }, init: function(){ if (this.TABCONTEXTMENU){ var tabContext = this.tabContext; this.makePopup(tabContext, null, "tabContextUndoList"); } if (this.CONTEXTMENU){ var contextMenu = document.getElementById("contentAreaContextMenu"); var refItem = document.getElementById("context-media-eme-separator"); this.makePopup(contextMenu, refItem, "ContextUndoList"); } // Geschlossene Tabs dem NS-Sitzungsspeicher entnehmen this._ss = SessionStore; }, makePopup: function(popup, refItem, id){ var menu; //label const locale = "en"; //Liste kürzlich geschlossener Tabs const LABELTEXT = "K\u00FCrzlich geschlossene Tabs"; //Menü erstellen menu = document.createXULElement("menu"); menu.setAttribute("label", LABELTEXT); menu.setAttribute("accesskey", "L"); if (id) menu.setAttribute("id", id); //menu.setAttribute("disabled", true); var menupopup = document.createXULElement("menupopup"); menupopup.addEventListener("popupshowing", () => UndoListInTabmenu.populateUndoSubmenu(menupopup)); //menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu(this);"); menu.appendChild(menupopup); popup.insertBefore(menu, refItem); //Tabs Menü menu = document.createXULElement("menuitem"); menu.setAttribute("label", "Alle Tabs auflisten"); menu.setAttribute("accesskey", "A"); popup.insertBefore(menu, refItem); menu.addEventListener("command", (event) => {document.getElementById("alltabs-button").click()}) //Eventlistener hinzufügen popup.addEventListener('popupshowing',function(event) { UndoListInTabmenu.toggleRecentlyClosedWindows(document.getElementById("historyUndoWindowMenu3")); // no restorable tabs, so make sure menu is disabled, and return if (UndoListInTabmenu._ss.getClosedTabCount(window) == 0) { menu.setAttribute("disabled", true); //menu.setAttribute("hidden", true); return; } menu.removeAttribute("disabled"); //menu.setAttribute("hidden", false); },false); }, toggleRecentlyClosedTabs: function toggleRecentlyClosedTabs(menu) { // enable/disable the Recently Closed Windows sub menu // no restorable windows, so disable menu menu.toggleAttribute("disabled", this._ss.getClosedTabCount(window) == 0); }, /** * Befüllen, wenn das Chronik-Menü geöffnet ist */ populateUndoSubmenu: function(undoPopup) { while (undoPopup.hasChildNodes()) { undoPopup.removeChild(undoPopup.firstChild); } var utils = RecentlyClosedTabsAndWindowsMenuUtils; var tabsFragment = utils.getTabsFragment( window, "menuitem", /* aPrefixRestoreAll = */ true, "menu-history-reopen-all-tabs" ); undoPopup.appendChild(tabsFragment); // populate tab historis for tooltip var undoItems = UndoListInTabmenu._ss.getClosedTabDataForWindow(window); for (var i = 0; i < undoItems.length; i++) { var entries = undoItems[i].state.entries; var tooltiptext = ""; for (var j = entries.length - 1; j > -1; j--){ if (j != entries.length - 1) tooltiptext += "\n"; if (undoItems[i].state.index - 1 !== j) { tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title; } else { tooltiptext += "*" + ". " + entries[j].title; } } undoPopup.childNodes[i].setAttribute("tooltiptext", tooltiptext); } // "Liste geschlossener Tabs l\u00F6schen anfügen" undoPopup.appendChild(document.createXULElement("menuseparator")); let m = undoPopup.appendChild(document.createXULElement("menuitem")); m.setAttribute("label", "Clear undo close tab list"); m.setAttribute("accesskey", "C"); m.addEventListener("command", function() { let prefs = Services.prefs; let max_undo = prefs.getIntPref("browser.sessionstore.max_tabs_undo"); prefs.setIntPref("browser.sessionstore.max_tabs_undo", 0); prefs.setIntPref("browser.sessionstore.max_tabs_undo", max_undo); }, false); }, toggleRecentlyClosedWindows: function PHM_toggleRecentlyClosedWindows(menu) { // enable/disable the Recently Closed Windows sub menu // no restorable windows, so disable menu if (this._ss.getClosedWindowCount() == 0) menu.setAttribute("disabled", true); else menu.removeAttribute("disabled"); }, /** * Beim Öffnen des Verlaufsmenüs ausfüllen */ populateUndoWindowSubmenu: function PHM_populateUndoWindowSubmenu(undoPopup) { while (undoPopup.hasChildNodes()) { undoPopup.removeChild(undoPopup.firstChild); } let utils = RecentlyClosedTabsAndWindowsMenuUtils; let windowsFragment = utils.getWindowsFragment( window, "menuitem", /* aPrefixRestoreAll = */ true, "menu-history-reopen-all-windows" ); undoPopup.appendChild(windowsFragment); undoPopup.firstChild.setAttribute("accesskey", "R"); // "Anhängen Löschen Rückgängig Fenster schließen Liste" undoPopup.appendChild(document.createXULElement("menuseparator")); m = undoPopup.appendChild(document.createXULElement("menuitem")); m.setAttribute("label", "Clear undo close window list"); m.setAttribute("accesskey", "C"); m.addEventListener("command", function() { for (let i = SessionStore.getClosedWindowCount() -1; i >= 0; i--) SessionStore.forgetClosedWindow(i); }, false); } }; // Wir sollten die Weiterleitung nur starten, wenn das Browserfenster den Startprozess abgeschlossen hat // Ansonsten sollten wir warten, bis der Start abgeschlossen ist if (gBrowserInit.delayedStartupFinished) { UndoListInTabmenu.init(); } else { let delayedStartupFinished = (subject, topic) => { if (topic == "browser-delayed-startup-finished" && subject == window) { Services.obs.removeObserver(delayedStartupFinished, topic); UndoListInTabmenu.init(); } }; Services.obs.addObserver(delayedStartupFinished, "browser-delayed-startup-finished"); }LG
Boersenfeger -
Ja habe ich auch hier, aber erst im Firefox 149 wie im Script angegeben.
Trotzdem danke für den Hinweis.
Mfg.
Endor -
Tester gesucht!
Ein, zwei Freiwillige, die sich das antun wollen.
Für das Testen der "Menüleiste" ist wohl ein Windowsnutzer vonnöten.
Beide Ordner, CSS und Icons, sollten unter Chrome vorhanden sein.
Und bitte, ein neues Profil möglichst ohne Erweiterungen und JS benutzen.
Bitte Fehler genau dokumentieren und melden.Wenn es Fragen gibt, raus damit.
-
Beide Ordner, CSS und Icons, sollten unter Chrome vorhanden sein.
Respekt, Mira, das Monster lebt!

Nur schnell 2 Dinge: einige Farbvariablen, zB --uc-color-orange-normal, sind nicht definiert soweit ich sehe, evtl. ist die Definition bei dir in einem anderen CSS.
-
@Horstmann Dessen bin ich mir bewust!
Muss ich noch nachliefern, und auch die CSS für das Lesezeichenleistekontextmenü fehlt noch.
coming soon.
Bis dahin können sich ja Willige mit dem behelfen:
CSS
Alles anzeigen/* Farben ---------------------------------------------------*/ :root { --uc-color-black-light: #2B2B2B !important; /* var(--uc-color-black-light) */ --uc-color-black-lighter: #404040 !important; /* var(--uc-color-black-lighter) */ --uc-color-grey-dark: #5C5C5C !important; /* var(--uc-color-grey-dark) */ --uc-color-grey-light: #A9A9A9 !important; /* var(--uc-color-grey-light) */ --uc-color-grey-lighter: #D4D4D4 !important; /* var(--uc-color-grey-lighter) */ --uc-color-white-dark: #E0E0E0 !important; /* var(--uc-color-white-dark) */ --uc-color-white-normal: #FFFFFF !important; /* var(--uc-color-white-normal) */ --uc-color-orange-normal: #FFAA00 !important; /* var(--uc-color-orange-normal) */ --uc-color-orange-hover: #FFCC66 !important; /* var(--uc-color-orange-hover) */ --uc-color-red-normal: #FF0000 !important; /* var(--uc-color-red-normal) */ --uc-color: rgba(225, 225, 225, 0.2); /* hellgrau basis, unselected */ --uc-color_hov: rgba(225, 225, 225, 0.3); /* mittelgrau unselected hover */ --uc-color-sel: rgba(255, 148, 0, 0.4); /* zart orange selected */ --uc-color-musel: rgba(255, 148, 0, 0.3); /* zart orange dunkel+ multiselected */ --uc-color_musel_hov: rgba(255, 148, 0, 0.5); /* zart orange dunkel+ multiselected hover */ } -
Bis dahin können sich ja Willige mit dem behelfen:
Ich würde ja vorschlagen, wenn man Tester sucht, die Sache etwas zugänglicher zu machen, und zumindest ein Paket mit einer @import Liste für alle Dateien reinzupacken.

A propos, Geschichten wie eigene Styles für Leisten, Farben, Buttons etc. würde ich rauslassen, anderes Thema.Nachdem ich soweit hier möglich getestet habe, scheint das Meiste gut zu passen; nur ist der Code sehr kleinteilig und wiederholt sich dauernd.
Einige CSS Lösungen sind auch meiner Meinung nach am falschen Platz, wie einige der Abstände.
Generell würde ich auch Label Textinhalte vermeiden, weiss nicht ob das international kompatibel wäre, und den Bedarf sehe ich auch nicht.
Die Codes von MOG hast du ja entdeckt, da ist wie immer eine Menge gutes Zeug drin; schlau das Ganze wo's geht mit ::before Pseudos anzugehen.Ein letzter Vorschlag um das Ganze zentral aufzubauen; die oben diskutierten Versatzprobleme bei checked müsste man bei Bedarf separat anschauen.
Ohne anderen Menü Code, und hier nur für die allermeisten Browserfenster Kontextmenüs, mit outlines zum einfacheren testen; hier würde man dann eben für jeden Eintrag das gewünschte Icon als content hinzufügen:CSS
Alles anzeigen#mainPopupSet menu:not(.menu-iconic)::before, #mainPopupSet menuitem:not(.menuitem-iconic)::before { content: ""; display: flex; -moz-context-properties: fill, stroke, fill-opacity, stroke-opacity; margin-inline-end: 8px; width: 16px; height: 16px; align-items: center; justify-content: center; fill: currentColor; outline: 1px solid lightblue; } #mainPopupSet :is(menu, menuitem) { padding-inline-start: 8px !important; } #mainPopupSet menuitem:is([type="checkbox"], [type="radio"])::before { content: url("chrome://devtools/skin/images/checkbox.svg"); outline: 1px solid orange; } #mainPopupSet menuitem:is([type="checkbox"], [type="radio"]) > :is(.menu-iconic-left, .menu-icon){ display: none; } #mainPopupSet menuitem[type="checkbox"]:is([checked=""], [checked="true"])::before, #mainPopupSet menuitem[type="radio"]:is([checked=""], [checked="true"])::before { content: url("chrome://global/skin/icons/check.svg"); outline: 1px solid green; } /* Beispiele Icons einsetzen */ #toggle_PersonalToolbar::before { content: url("chrome://browser/skin/library.svg") !important; } [data-l10n-id="places-add-bookmark"]::before { content: url("chrome://global/skin/icons/plus.svg") !important; } [data-l10n-id="places-add-folder-contextmenu"]::before { content: url("chrome://global/skin/icons/folder.svg") !important; }Neuere Variante:
CSS
Alles anzeigen/* Mac: widget.macos.native-context-menus auf false setzen in about:config, unten appearance: none benutzen */ :root { --ug-left_distance: 8px; /* Abstand Gesamtinhalt links */ --ug-icon_distance: 8px; /* Abstand Icon <-> Text */ --ug-vertical_distance: 3px; /* Abstand vertikal zw. Zeilen, default 2px */ /* Menuezeilen ohne Icon */ /* --ug-content_gap: url("chrome://browser/skin/tab.svg"); */ /* Platzhalter Icon */ --ug-content_gap: ""; /* leer, mit Texten buendig */ /* --ug-content_gap: none; */ /* leer, mit linkem Rand buendig */ } :where(#mainPopupSet, .textbox-contextmenu) menu:not(.menu-iconic)::before, :where(#mainPopupSet, .textbox-contextmenu) menuitem:not(.menuitem-iconic)::before { content: var(--ug-content_gap); display: flex; -moz-context-properties: fill, stroke, fill-opacity, stroke-opacity; margin-inline-end: var(--ug-icon_distance); margin-block: 1px; width: 16px; height: 16px; align-items: center; justify-content: center; fill: currentColor; stroke: currentColor; background-repeat: no-repeat; background-size: 16px; background-position: center; /* outline: 1px solid orange; */ /* Test Outline */ } :where(#mainPopupSet, .textbox-contextmenu) :is(menu, menuitem) { padding-inline-start: var(--ug-left_distance) !important; padding-block: var(--ug-vertical_distance) !important; /*appearance: none !important;*/ /* Mac */ } /* Check Boxen */ :where(#mainPopupSet, .textbox-contextmenu) menuitem:is([type="checkbox"], [type="radio"]) > :is(.menu-iconic-left, .menu-icon){ display: none !important; } :where(#mainPopupSet, .textbox-contextmenu) menuitem:is([type="checkbox"], [type="radio"])::before { /* content: url("chrome://devtools/skin/images/checkbox.svg") !important; */ content: "" !important; outline: 1px solid currentColor; outline-offset: -1px; border-radius: 2px; opacity: 0.45; } :where(#mainPopupSet, .textbox-contextmenu) menuitem[type="checkbox"][checked="true"]::before, :where(#mainPopupSet, .textbox-contextmenu) menuitem[type="radio"][checked="true"]::before { background-image: url("chrome://global/skin/icons/check.svg"); background-size: 12px; opacity: 1; } /* Beispiele fuer Einsetzen von Icons, nur einfache Selektoren noetig, content mit important verwenden */ #toggle_PersonalToolbar::before { content: url("chrome://browser/skin/library.svg") !important; } [data-l10n-id="places-add-folder-contextmenu"]::before { content: url("chrome://global/skin/icons/folder.svg") !important; } /* Beispiel Anpassung fuer zu grosse Icons, background-image und content: "" verwenden */ [data-l10n-id="places-add-bookmark"]::before { content: "" !important; background-image: url(chrome://global/skin/icons/autoscroll.svg); /* content: url(chrome://global/skin/icons/autoscroll.svg) !important; */ /* Testbeipiel zu grosses Icon */ } -
wenn man Tester sucht, die Sache etwas zugänglicher zu machen,
War ja Absicht, damit eben nicht jeder sich die Daten läd.
Es sollten schon Leute sein, die in etwa wissen, was zu tun ist.Von daher vielen lieben Dank an Dich.



Einige CSS Lösungen sind auch meiner Meinung nach am falschen Platz,
Welche z.B. ?
Generell würde ich auch Label Textinhalte vermeiden
Würde ich ja gerne, aber ich wusste mir einfach nicht zu Helfen!
Apropos "Zentralisieren".
Irgendwo hatte ich danach gefragt, ob es eine Zentrale CSS geben sollte, oder ob für es jedes "Ding" eine eigene Geben soll.Und nur eine Person hat sich dazu geäußert und wünschte sich letzteres!
Aber ich gebe Dir absolut recht, eine zentralisierte CSS mit allen "Einstellungen" und Symbolen, ähnlich der alten
Symbol.css würde vieles einfacher machen.
Z.B. menuiten[irgendwas] > > .menu-icon in jedem CSS müsste dann nicht mehr sein,
sondern menuitem > .menu-icon würde dann reichen.Und so gibt es noch weitere sehr begrenzte Selektoren, die anderes geschrieben globaler wirken würden.
Ich muss jetzt noch am Lesezeichenkontextmenü basteln, Grundgerüst habe ich ja bereits,
und die CSS-Dateien noch einmal durchforsten und ins reine bringen.
Dazu habe ich dann aber erst ab morgen Zeit. -
War ja Absicht, damit eben nicht jeder sich die Daten läd.
Es sollten schon Leute sein, die in etwa wissen, was zu tun ist.-----
Apropos "Zentralisieren".
Irgendwo hatte ich danach gefragt, ob es eine Zentrale CSS geben sollte, oder ob für es jedes "Ding" eine eigene Geben soll.Und nur eine Person hat sich dazu geäußert und wünschte sich letzteres!
Die Dateien habe ich erst benutzt, nachdem ich das Paket in #252 gebastelt habe, und den Aufwand würde ich für niemanden anderes betreiben.

Allein die Icons sind 354 Stück, die würde ich niemals in einem Testprofil in einen bestehenden icons Ordner packen, unmöglich die wieder sauber loszuwerden, und ein komplett eigenes Testprofil baue zumindest ich für keinen Code.
Die Zentralisieren/bzw. Zusammenfassen Nummer hatte ich mehrfach mit Beschreibung und Codevorschlägen angesprochen, also gibt's mehr als eine Antwort dazu.
Ich vermute halt dass die Icongeschichte viel schneller und einfacher machbar wäre, allerdings bin ich lange nicht so tief im Thema drin wie du.
Aber wie schon gesagt, es ist dein CSS, und du solltest nur benutzen was für dich am besten klappt und nachvollziehbar ist; viel Spass und Erfolg damit!
-
... und du solltest nur benutzen was für dich am besten klappt ...
Wäre das nicht zu einfach und egoistisch?
Klar mache ich das hier in erster Linie für mich (meinen Kopp) und für das Aussehen "meines" Firefox.Aber es ist auch für andere!
Allein die Icons sind 354 Stück, die würde ich niemals in einem Testprofil in einen bestehenden icons Ordner packen, unmöglich die wieder sauber loszuwerden, und ein komplett eigenes Testprofil baue zumindest ich für keinen Code.

Das handhabe ich mit Sicherungen!
Die Zentralisieren/bzw. Zusammenfassen Nummer .... vermute halt dass die Icongeschichte viel schneller und einfacher machbar wäre, ...
Da bin ich mir sogar ganz sicher! Eventuell greife ich doch den Gedanken noch einmal auf,
mit einer Settings.css oder so.
Ich glaube aber, dass dann auch Symbolabstände entstehen, wo eventuell gar keine Symbole sind, bzw. verwendet werden.
Damit meine ich, wenn man zwar die CSS-Dateien für die Menübar nutzt, schaut alles fein aus,
aber in den Popups, sofern man diese Symboldateien nicht nutzt, hat man dann aber vor dem Text einen "großen" Abstand.
Kann mich auch irren, das muss ich dann doch noch einmal testen. -
Ich glaube aber, dass dann auch Symbolabstände entstehen, wo eventuell gar keine Symbole sind, bzw. verwendet werden.
Damit meine ich, wenn man zwar die CSS-Dateien für die Menübar nutzt, schaut alles fein aus,
aber in den Popups, sofern man diese Symboldateien nicht nutzt, hat man dann aber vor dem Text einen "großen" Abstand.Das hast du doch eh schon, die ::before Elemente werden idR generell erzeugt, nur hast du ja auch einen Platzhalter an einigen Stellen - chrome://browser/skin/tab.svg. Den kannste auch bei jedem CSS einbauen.

Bestimmte Popups auszuschliessen oder separat zu behandeln ist ja auch nicht so schwer.Ist halt auch die Frage, was man als Designergebnis möchte; man kann auch überall, wo keine Icons explizit vorgegeben werden, den Menüeintrag ohne zusätzlichen Abstand links haben, so dass der Text mit den "iconisierten" Menüeinträgen bündig ist.
Muss man halt nur so machen wenn man's so will.

-
Ist halt auch die Frage, was man als Designergebnis möchte; man kann auch überall, wo keine Icons explizit vorgegeben werden, den Menüeintrag ohne zusätzlichen Abstand links haben, so dass der Text mit den "iconisierten" Menüeinträgen bündig ist.
Oder man macht halt überall ein Icon hin...

-
Zu meiner Überraschung habe ich festgestellt, das in allen Kontextmenüs zu Leisten, irgendwie die Symbole fehlen.
Ergo, da muss ich noch rann.Auch habe ich mir überlegt, die einzelnen CSS-Dateien für die Menüs in der Menüleiste doch zusammenzuführen
und auch noch einmal zu überarbeiten!Es gibt da Überschneidungen mit Einträgen in den Kontextmenüs, und da die Elemente unterschiedlich angesprochen werden,
gibt es unschöne Effekte.So richtig Zeit habe ich erst morgen, was bedeutet, dass das ganz dann leider doch noch länger dauert.
-
Oder man macht halt überall ein Icon hin...

Verwegene Idee, aber ich hatte schon den Eindruck das könnte der Plan sein.

Zu meiner Überraschung habe ich festgestellt, das in allen Kontextmenüs zu Leisten, irgendwie die Symbole fehlen.
Stimmt, das ist ja auch nicht in deinem CSS.

Du musst mir unbedingt dein Testprozedere verraten.
-
Du musst mir unbedingt dein Testprozedere verraten.

Ok, ich habe es nicht so mit CSS! Ich muss Code ausprobieren um zusehen, was der bewirkt.
Z.Z. mache ich es so, ich starte ein sauberes Profil, CSS-Ordner und Icon-Ordner sind angelegt.
Auch JS ist aktiv und ich nutze den CSS-Loader.
Dann werden alle CSS-Dateien aktiviert und ich schaue mir alles an, sofern ich nicht etwas vergesse
Stelle ich einen Fehler fest, suche ich in der entsprechenden CSS den Selektor, deaktiviere ihn
und versuche das Problem in der Stilbearbeitung der Browserwerkzeuge irgendwie zu lösen.Fehlende Elemente, bzw, deren Selektoren, suche ich dann ebenfalls mithilfe der Browserwerkzeuge.
Womit ich dann aber große Schwierigkeiten habe, die richtigen Parameter zu finden!
[label = XXX] ist klar, aber :where(#IrgendeinenSelektor) ist mir schon ein Rätsel.
[fxastatus], absolut keine Ahnung.Bei [data-l10n-id="bookmarks-bookmark-edit-panel"]::before und [data-l10n-id="bookmarks-current-tab"]::before
wusste ich mir nicht anders zu Helfen.Für diese zwei Selektoren habe ich Stunden gebrauch, um sie zu selektieren.
Code/* Liste der letzten Tabs löschen */ #tabContextUndoList > menupopup[hasbeenopened="true"] > menuitem.restoreallitem[label="Alle Tabs wieder öffnen"]::before, /* Liste der letzten Tabs löschen */ #tabContextUndoList > menupopup[hasbeenopened="true"] > menuitem[label="Liste der letzten Tabs löschen"]::beforeAber auch da wieder [label=XXX], ja so funktioniert das Code dann in einer anderen Sprachversion des FF nicht, ist mir klar.
Da muss ich noch mal rann.Und dann einer meiner größten Herausforderungen!
Überall da, wo list-style-image: möchte ich auf content: umstellen.Ok, kommt alles später noch drann.
Erst einmal alle Selektoren finden und richtig ansprechen.Achja, und wenn etwas geklappt hat wie gewünscht, wird es in die CSS kopiert, gespeichert und per Loader neu geladen.
Zu oft ist mir funktionierender Code verloren gegangen, weil ich versehentlich die Werkzeuge geschlossen habe,
oder den Browser neu gestartet habe. -