1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Mira_Belle

Beiträge von Mira_Belle

  • "Neues", altes Appmenu. Update, und bräuchte Hilfe!

    • Mira_Belle
    • 31. Januar 2025 um 14:36

    FuchsFan Bitte zeige mir Dein Skript (im Original) und die Änderung, die Du vornehmen musst,
    damit das Skript (zum Kopieren) bei Dir funktioniert.

    Würde gerne schon einmal drüberschauen.

  • "Neues", altes Appmenu. Update, und bräuchte Hilfe!

    • Mira_Belle
    • 31. Januar 2025 um 09:59

    FuchsFan aber dann liegt es doch an "Deinem" Skript, dass das Skript zum "kopieren"
    der Menüleiste nicht richtig eingebunden wird.
    Oder?

    Komme erst in drei Wochen dazu, mich hier wieder zu kümmern.

  • "Neues", altes Appmenu. Update, und bräuchte Hilfe!

    • Mira_Belle
    • 31. Januar 2025 um 09:28
    Zitat von FuchsFan

    Danke, habe ich mal installiert, wird angezeigt, ist aber für Nightly nicht angepasst, da keine Reaktion.

    Hier funktioniert es!
    Alle drei Skripte, absolut ohne Probleme.

    icons_2.zip

  • "Neues", altes Appmenu. Update, und bräuchte Hilfe!

    • Mira_Belle
    • 30. Januar 2025 um 22:07

    Gibt was Neues!
    Habe ja das Appmenü komplett abgespeckt.
    Es bestehen ja nur noch zwei Untermenüs
    und zwar "Firefox Verzeichnisse" und "Firefox Funktionen".
    Abgeteilt darunter der Menüpunkt "Neustart" und "Beenden".

    Ziel war es irgendwie, die komplette Menüleiste das "unterzubekommen".

    Ich habe es hinbekommen!

    Es werden die Menüs "Datei","Bearbeiten","Ansicht","Chronik", "Lesezeichen","Extras" und "Hilfe"
    in das Appmenü "kopiert".
    Im Skript für das Appmenü werden die Punkte alle ausgeblendet. (Datei bis Hilfe).
    So schaffe ich Platz in der Menüleiste, um dort eigene Buttons unterzubekommen.

    Ich musste auch mein Symboleskript etwas anpassen.
    Hier nun alle drei:

    JavaScript
    // ==UserScript==
    // @name           Jizzmenu.uc.js
    // @namespace      Appmenu@gmail.com
    // @description    Basiert auf dem Script externalFuncButtonM.uc.js, Wiederherstellung der Orangenen FF-Menü Schaltfläche
    // @include        main
    // @version        update for Firefox 68+ by aborix
    // @author         defpt
    // @charset        UTF-8
    // @version        2019.08.04
    // @version        2020.05.27
    // @version        2020.07.13 Weitere Menüs und Funktionen ergänzt by bege
    // @version        2024.08.10 alle Einstellungen im Abschnitt Konfiguration vornehmen
    // @version        2024.08.18 einige Veränderungen am Skript, Symbole, Funktionen & Menüs by Mira Bellenbaum
    // ==/UserScript==
    
    // Definiere den Profilpfad
    let ProfilePath = PathUtils.toFileURI(
      PathUtils.join(PathUtils.profileDir, "chrome", "icons")
    );
    
    var Appmenu = {
      // Beginn der Konfiguration ------------------
    
      // Editor mit angegebenem Pfad verwenden
      // editor: 'C:\\Program Files\\Notepad++\\notepad++.exe',
      editor: "C:\\Program Files\\Microsoft VS Code\\Code.exe",
      // oder
      // in 'view_source.editor.path' eingetragenen Editor verwenden
      editor: Services.prefs.getCharPref("view_source.editor.path"),
      // Dateimanager mit angegebenem Pfad verwenden oder leer ('') wenn System-Dateimanager verwenden
      //fileManager: 'C:\\Program files\\FreeCommander XE\\FreeCommander.exe',
      fileManager: "",
      // Parameter für Dateimanager oder leer ('')
      //FMParameter: '/T',
      FMParameter: "",
      // Submenüs ohne Inhalt im Hauptmenü automatisch ausblenden
      autohideEmptySubDirs: true,
      // Submenüs im Hauptmenü nach unten verschieben
      moveSubDirstoBottom: false,
      // Ort und Aussehen des Menü-Buttons einstellen
      //   isUrlbar: 1,  // 0: TabsToolbar; 1: navbar,
      isUrlbar: 2, // 0: TabsToolbar; 1: navbar; 2: toolbar-menubar
      isButton: 0, // 0: Hamburger,klein; 1: Firefox,groß,
      // Hotkey zum Öffnen des Appmenüs oder leer ('')
      hotkey: "x",
      hotkeyModifier: "alt",
    
      // Ende der Konfiguration --------------------
    
      // Submenüs im Hauptmenü nach unten verschieben
      subdirPopupHash: [],
      subdirMenuHash: [],
    
      toolbar: {
        // Submenüs des Hauptmenüs definieren; Separator einfügen mit {name: 'separator'}
        subdirs: [
          {
            name: "Firefox Verzeichnisse",
            image: `${ProfilePath}/folder_currentColor.svg`, // Der Pfad wird direkt verwendet, ohne `url()`
          },
          {
            name: "Firefox Funktionen",
            image: `${ProfilePath}/settings_currentColor.svg`, // Der Pfad wird direkt verwendet, ohne `url()`
          },
          {
            name: "separator",
          },
        ],
    
        apps: [
          /*  Directories  */
    
          // Untermenü Firefox Verzeichnisse
          {
            name: "Profil-Verzeichniss",
            id: "AMProfil",
            root: "ProfD",
            path: "\\",
            subdir: "Firefox Verzeichnisse",
          },
          {
            name: "Chrome-Ordner",
            id: "AMchrome",
            root: "ProfD",
            path: "\\chrome",
            subdir: "Firefox Verzeichnisse",
          },
          {
            name: "CSS-Ordner",
            id: "AMCSS",
            root: "ProfD",
            path: "\\chrome\\css",
            subdir: "Firefox Verzeichnisse",
          },
          {
            name: "JS-Ordner",
            id: "AMJS",
            root: "ProfD",
            path: "\\chrome\\scripts",
            subdir: "Firefox Verzeichnisse",
          },
          {
            name: "Addon-Verzeichniss",
            id: "AMAddons",
            root: "ProfD",
            path: "\\extensions",
            subdir: "Firefox Verzeichnisse",
          },
          {
            name: "Programm-Verzeichniss",
            id: "AMProgramm",
            root: "CurProcD",
            path: "\\",
            subdir: "Firefox Verzeichnisse",
          },
          {
            name: "Startup-Cache",
            id: "AMCache",
            root: "ProfLD",
            path: "\\startupCache",
            subdir: "Firefox Verzeichnisse",
          },
        ],
    
        configs: [
          // Untermenü Firefox Funktionen
          {
            name: "Anpassen",
            id: "AMAnpassen",
            command: "gCustomizeMode.enter()",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Neustart im abgesicherten Modus",
            id: "AMModus",
            command: "safeModeRestart();",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Browser-Konsole",
            id: "AMKonsole",
            command:
              "var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});\
                    var { BrowserConsoleManager } = require('resource://devtools/client/webconsole/browser-console-manager');\
                    BrowserConsoleManager.openBrowserConsoleOrFocus();",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Browser-Werkzeuge",
            id: "AMWerkzeuge",
            command:
              "var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});\
                    var { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs');\
                    BrowserToolboxLauncher.init();",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Web-Entwickler",
            id: "AMEntwickler",
            command:
              "var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});\
                    var { gDevToolsBrowser } = require('resource://devtools/client/framework/devtools-browser');\
                    gDevToolsBrowser.toggleToolboxCommand(window.gBrowser, Cu.now());",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Firefox synchronisieren",
            id: "AMsynchron",
            command: "gSync.openPrefs('menubar');",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Zugangsdaten und Passwörter",
            id: "AMdaten",
            command:
              "LoginHelper.openPasswordManager(window, { entryPoint: 'mainmenu' })",
            tooltiptext: "about:logins",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Task Manager",
            id: "AMManager",
            command: "switchToTabHavingURI('about:processes', true)",
            tooltiptext: "about:processes",
            subdir: "Firefox Funktionen",
          },
          {
            name: "Offline arbeiten",
            id: "AMOffline",
            command: "BrowserOffline.toggleOfflineStatus();",
            subdir: "Firefox Funktionen",
          },
          /*
            {
            name: 'separator',
            },
            */
          {
            name: "Neustart",
            id: "AMreboot",
            tooltiptext: "userChrome.js-Cache wird geleert",
            command:
              "Services.appinfo.invalidateCachesOnRestart(); \
                    Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);",
          },
          {
            name: "Beenden",
            id: "AMquit",
            command: "goQuitApplication(event);",
          },
        ],
      },
    
      _externalAppPopup: null,
      _isready: false,
    
      init: function () {
        this.handleRelativePath(this.toolbar.apps);
        const XULNS =
          "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    
        var ExternalAppBtn = document.createElementNS(XULNS, "toolbarbutton");
    
        ExternalAppBtn.id = "AppMenuButton";
        ExternalAppBtn.setAttribute("label", "AppButton");
        ExternalAppBtn.setAttribute("onclick", "event.preventDefault();event.stopPropagation();");
        ExternalAppBtn.setAttribute("tooltiptext", "Firefox Menü");
        ExternalAppBtn.setAttribute("type", "menu");
        ExternalAppBtn.setAttribute("removable", "true");
    
        // Definiere den Profilpfad
        let ProfilePath = PathUtils.toFileURI(
          PathUtils.join(PathUtils.profileDir, "chrome", "image")
        );
    
        // Symbole
        let DefaultIcon = "Button_groß.png";
        let AlternateIcon = "Button_klein-plus.png";
    
        // Wenn Appmenu.isButton true ist, benutze das große Symbol, sonst das kleine
        if (Appmenu.isButton) {
          ExternalAppBtn.style.listStyleImage = `url('${ProfilePath}/${DefaultIcon}')`; // Großes Symbol
          ExternalAppBtn.style.width = "94px"; // Feste Breite für großes Symbol
          ExternalAppBtn.style.height = "24px"; // Feste Höhe für großes Symbol
        } else {
          ExternalAppBtn.style.listStyleImage = `url('${ProfilePath}/${AlternateIcon}')`; // Kleines Symbol
          ExternalAppBtn.style.width = "16px"; // Feste Breite für kleines Symbol
          ExternalAppBtn.style.height = "21px"; // Feste Höhe für kleines Symbol
        }
    
        // Button in die richtige Toolbar einfügen
        if (Appmenu.isUrlbar === 1) {
          var navBar = document.getElementById("nav-bar-customization-target");
          navBar.insertBefore(ExternalAppBtn, navBar.firstChild);
        } else if (Appmenu.isUrlbar === 2) {
          var menubar = document.getElementById("toolbar-menubar");
          menubar.insertBefore(ExternalAppBtn, menubar.firstChild);
        } else {
          var TabsToolbar = document.getElementById("TabsToolbar");
          TabsToolbar.insertBefore(ExternalAppBtn, TabsToolbar.firstChild);
        }
    
        var ExternalAppPopup = document.createElementNS(XULNS, "menupopup");
        //ExternalAppPopup.setAttribute('onpopupshowing', 'event.stopPropagation(); Appmenu.onpopupshowing();');
        ExternalAppPopup.setAttribute("id", "AMpopup");
        this._externalAppPopup = ExternalAppPopup;
        ExternalAppBtn.appendChild(ExternalAppPopup);
        Appmenu.onpopupshowing();
    
        // Menü mit Tastaturkürzel öffnen
        let key = document.createXULElement("key");
        key.id = "key_AppMenuPopup";
        //   key.setAttribute('key', 'X');
        key.setAttribute("key", Appmenu.hotkey);
        if (Appmenu.hotkeyModifier)
          //   key.setAttribute('modifiers', 'alt');
          key.setAttribute("modifiers", Appmenu.hotkeyModifier);
        key.setAttribute("oncommand", 'document.getElementById("AMpopup").openPopup();');
    /*
        key.setAttribute ('command', function (event) {
          if (event.button == 0) {
            Appmenu.exec(this.path, this.args);
          }
        });
    */
    
    
        document.getElementById("mainKeyset").appendChild(key);
      },
    
      /* ****** NEU ****** */
    
      onpopupshowing: function () {
        if (this._isready) return;
        if (this._externalAppPopup === null) return;
        var ExternalAppPopup = this._externalAppPopup;
    
        // Funktion zum Erstellen eines Menüs mit Untermenüs
        function createMenuItem(parentPopup, item) {
          var menuItem;
          if (item.name == "separator") {
            menuItem = document.createXULElement("menuseparator");
            parentPopup.appendChild(menuItem);
          } else if (item.submenu && item.submenu.length > 0) {
            menuItem = document.createXULElement("menu");
            var subMenuPopup = document.createXULElement("menupopup");
            menuItem.appendChild(subMenuPopup);
            menuItem.setAttribute("class", "menu-iconic");
            menuItem.setAttribute("label", item.name);
            menuItem.setAttribute("image", item.image);
            parentPopup.appendChild(menuItem);
            for (let subItem of item.submenu) {
              createMenuItem(subMenuPopup, subItem);
            }
          } else {
            menuItem = document.createXULElement("menuitem");
            menuItem.setAttribute("class", "menuitem-iconic");
            menuItem.setAttribute("label", item.name);
            menuItem.setAttribute("image", item.image);
            if (item.command) {
              menuItem.setAttribute("oncommand", item.command);
    
    
            } else if (item.path) {
            menuItem.setAttribute('oncommand', 'Appmenu.exec(this.path, this.args);');  
              menuItem.path = item.path;
              menuItem.args = item.args;
            }
            menuItem.setAttribute("tooltiptext", item.tooltiptext || item.name);
            menuItem.setAttribute("id", item.id || "");
            parentPopup.appendChild(menuItem);
          }
        }
    
        // Verarbeitung der Subdirs
        for (let subdir of this.toolbar.subdirs) {
          if (subdir.name == "separator") {
            ExternalAppPopup.appendChild(
              document.createXULElement("menuseparator")
            );
          } else {
            var subdirItem = ExternalAppPopup.appendChild(
              document.createXULElement("menu")
            );
            var subdirItemPopup = subdirItem.appendChild(
              document.createXULElement("menupopup")
            );
            subdirItem.setAttribute("class", "menu-iconic");
            subdirItem.setAttribute("label", subdir.name);
            subdirItem.setAttribute("image", subdir.image);
            Appmenu.subdirPopupHash[subdir.name] = subdirItemPopup;
            Appmenu.subdirMenuHash[subdir.name] = subdirItem;
          }
        }
    
        // Verarbeitung der Apps
        for (let app of this.toolbar.apps) {
          if (app.subdir && Appmenu.subdirPopupHash[app.subdir]) {
            createMenuItem(Appmenu.subdirPopupHash[app.subdir], app);
          } else {
            createMenuItem(ExternalAppPopup, app);
          }
        }
    
        // Verarbeitung der Configs
        for (let config of this.toolbar.configs) {
          if (config.subdir && Appmenu.subdirPopupHash[config.subdir]) {
            createMenuItem(Appmenu.subdirPopupHash[config.subdir], config);
          } else {
            createMenuItem(ExternalAppPopup, config);
          }
        }
    
        if (this.autohideEmptySubDirs) {
          for (let key in Appmenu.subdirPopupHash) {
            if (Appmenu.subdirPopupHash[key].hasChildNodes()) {
              continue;
            } else {
              Appmenu.subdirMenuHash[key].setAttribute("hidden", "true");
            }
          }
        }
    
        if (this.moveSubDirstoBottom) {
          let i = ExternalAppPopup.childNodes.length;
          while (
            ExternalAppPopup.firstChild.getAttribute("class") !=
              "menuitem-iconic" &&
            i-- != 0
          ) {
            ExternalAppPopup.appendChild(ExternalAppPopup.firstChild);
          }
        }
    
        this._isready = true;
      },
    
      handleRelativePath: function (apps) {
        for (let app of apps) {
          if (app.path) {
            app.path = app.path.replace(/\//g, "\\");
            var ffdir = Cc["@mozilla.org/file/directory_service;1"]
              .getService(Ci.nsIProperties)
              .get(app.root, Ci.nsIFile).path;
            if (/^(\\)/.test(app.path)) {
              app.path = ffdir + app.path;
            }
          }
        }
      },
    
      exec: function (path, args) {
        args = args || [];
        var args_t = args.slice(0);
        for (let arg of args_t) {
          arg = arg.replace(/%u/g, gBrowser.currentURI.spec);
        }
        var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
        file.initWithPath(path);
        if (!file.exists()) {
          alert("Datei nicht gefunden: " + path);
          return;
        }
        if (file.isExecutable() && !path.endsWith(".js")) {
          var process = Cc["@mozilla.org/process/util;1"].createInstance(
            Ci.nsIProcess
          );
          process.init(file);
          process.run(false, args_t, args_t.length);
        } else if (file.isFile()) {
          if (this.editor) {
            let UI = Cc[
              "@mozilla.org/intl/scriptableunicodeconverter"
            ].createInstance(Ci.nsIScriptableUnicodeConverter);
            UI.charset = window.navigator.platform.toLowerCase().includes("win")
              ? "Shift_JIS"
              : "UTF-8";
            let path = UI.ConvertFromUnicode(file.path);
            let app = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
            app.initWithPath(this.editor);
            let process = Cc["@mozilla.org/process/util;1"].createInstance(
              Ci.nsIProcess
            );
            process.init(app);
            process.run(false, [path], 1);
          } else {
            file.launch();
          }
        } else if (file.isDirectory()) {
          if (this.fileManager) {
            let args = [this.FMParameter, path];
            let app = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
            app.initWithPath(this.fileManager);
            let process = Cc["@mozilla.org/process/util;1"].createInstance(
              Ci.nsIProcess
            );
            process.init(app);
            process.run(false, args, args.length);
          } else {
            file.launch();
          }
        }
      },
    };
    
    (function () {
      // Definiere den Profilpfad für die Symbole
      let ProfilePath = PathUtils.toFileURI(
        PathUtils.join(PathUtils.profileDir, "chrome", "icons")
      );
    
      // Standard-Symbol-Dateiname
      let ButtonIcon01 = "restart.svg";
      let ButtonIcon02 = "quit.svg";
    
      let Icon01 = "profile.svg";
      let Icon02 = "chrome.svg";
      let Icon03 = "css3.svg";
      let Icon04 = "js.svg";
      let Icon05 = "addons.svg";
      let Icon06 = "folder.svg";
      let Icon07 = "folder-1.svg";
    
      let Icon11 = "Themes.svg";
      let Icon12 = "debugging-workers.svg";
      let Icon13 = "command-console.svg";
      let Icon14 = "window-dev-tools.svg";
      let Icon15 = "developer.svg";
      let Icon16 = "sync.svg";
      let Icon17 = "passwords.svg";
      let Icon18 = "performance.svg";
      let Icon19 = "plug-disconnected.svg";
    
      // StyleSheetService zum Hinzufügen der CSS-Regeln
      let sss = Components.classes[
        "@mozilla.org/content/style-sheet-service;1"
      ].getService(Components.interfaces.nsIStyleSheetService);
      let uri = Services.io.newURI(
        "data:text/css;charset=utf-8," +
          encodeURIComponent(`
    
    
            #AMProfil   { background-image: url('${ProfilePath}/${Icon01}'); 
                          background-repeat: no-repeat !important; 
                          background-position: 11px 3px !important; 
                          background-size: 16px 16px !important; /* Größe des Symbols anpassen */ 
                          -moz-context-properties: fill, fill-opacity;
    			          fill: currentColor;
                          }
            #AMchrome   { background-image: url('${ProfilePath}/${Icon02}'); 
                          background-repeat: no-repeat !important; 
                          background-position: 11px 3px !important; 
                          background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                          -moz-context-properties: fill, fill-opacity;
    			          fill: currentColor; 
                          }
            #AMCSS      { background-image: url('${ProfilePath}/${Icon03}'); 
                          background-repeat: no-repeat !important; 
                          background-position: 11px 3px !important; 
                          background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                          -moz-context-properties: fill, fill-opacity;
    			          fill: currentColor;                       
                          }
            #AMJS       { background-image: url('${ProfilePath}/${Icon04}'); 
                          background-repeat: no-repeat !important; 
                          background-position: 11px 3px !important; 
                          background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                          -moz-context-properties: fill, fill-opacity;
    			          fill: currentColor;                       
                          }
            #AMAddons   { background-image: url('${ProfilePath}/${Icon05}');
                          background-repeat: no-repeat !important; 
                          background-position: 11px 3px !important; 
                          background-size: 16px 16pxx !important; /* Größe des Symbols anpassen */
                          -moz-context-properties: fill, fill-opacity;
    			          fill: currentColor;                       
                          }
            #AMProgramm { background-image: url('${ProfilePath}/${Icon06}'); 
                          background-repeat: no-repeat !important; 
                          background-position: 11px 3px !important; 
                          background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                          -moz-context-properties: fill, fill-opacity;
    			          fill: currentColor;                       
                          }
            #AMCache    { background-image: url('${ProfilePath}/${Icon07}');
                          background-repeat: no-repeat !important; 
                          background-position: 11px 3px !important; 
                          background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                          -moz-context-properties: fill, fill-opacity;
    			          fill: currentColor;                       
                          }
    
            #AMAnpassen     { background-image: url('${ProfilePath}/${Icon11}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important;
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;                          
                            }
            #AMModus        { background-image: url('${ProfilePath}/${Icon12}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important;
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }
            #AMKonsole      { background-image: url('${ProfilePath}/${Icon13}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important;
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }
            #AMWerkzeuge    { background-image: url('${ProfilePath}/${Icon14}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important; 
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }
            #AMEntwickler   { background-image: url('${ProfilePath}/${Icon15}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important;
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }
            #AMsynchron     { background-image: url('${ProfilePath}/${Icon16}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important; 
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }
            #AMdaten        { background-image: url('${ProfilePath}/${Icon17}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important; 
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }        
            #AMManager      { background-image: url('${ProfilePath}/${Icon18}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important; 
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }
            #AMOffline      { background-image: url('${ProfilePath}/${Icon19}');
                              background-repeat: no-repeat !important; 
                              background-position: 11px 3px !important;
                              background-size: 16px 16px !important;
                              -moz-context-properties: fill, fill-opacity;
    			              fill: currentColor;
                            }
    
    
            /* Neustart-Button */
            #AMreboot { 
                background-image: url('${ProfilePath}/${ButtonIcon01}');
                background-repeat: no-repeat !important;
                background-position: 10px 2px !important;
                background-size: 20px 20px !important; /* Größe des Symbols anpassen */
                padding-left: 12px !important; /* Platz für das Symbol lassen */
                -moz-context-properties: fill, fill-opacity !important;
                fill: #fbc96e !important;
            }
    
            /* Beenden-Button */
            #AMquit { 
                background-image: url('${ProfilePath}/${ButtonIcon02}');
                background-repeat: no-repeat !important;
                background-position: 12px 3px !important;
                background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                padding-left: 12px !important; /* Platz für das Symbol lassen */
                -moz-context-properties: fill, fill-opacity !important;
                fill: red !important;
            }
    
            /* Menüleiste ausblenden */
            #main-menubar > menu { 
                display: none !important; 
            }
    
        `),
        null,
        null
      );
    
      // CSS-Regeln registrieren
      sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    })();
    
    if (window.gBrowser) Appmenu.init();
    Alles anzeigen


    JavaScript
    //    Firefox-Menü anpassen
    
    (function () {
        setTimeout(async function () {
            // Menüs einfügen 
            var item2 = document.getElementById('AMreboot')
            var mb = document.getElementById('main-menubar');
            // clone menues
            [...mb.children].forEach(m => {
                if (m.tagName.toLowerCase() === "menu") {
                    let cl = m.cloneNode(true);
                    let t = cl.querySelector('.menubar-text');
                    if (t) cl.removeChild(t);
                    cl = item2.parentNode.insertBefore(cl, item2);
                }
            });
            // bind event
            let source = await readSource('chrome://browser/content/browser-menubar.js');
            source = source.replace(/.*let mainMenuBar/is, 'let mainMenuBar').replace(/},\n\s+{ once: true }.*/is, '').replace("main-menubar", "AMpopup").replace('.getElementById("historyMenuPopup")', '.querySelector("#AMpopup #historyMenuPopup")').replaceAll('getElementById("history-menu")', 'querySelector("#AMpopup #history-menu")').replace('.getElementById("menu_EditPopup")', '.querySelector("#AMpopup #menu_EditPopup")')
            eval(source);
            async function readSource (url) {
                return new Promise(resolve => {
                    let xhr = new XMLHttpRequest();
                    xhr.open('GET', url);
                    xhr.onload = function () {
                        resolve(xhr.responseText);
                    };
                    xhr.send();
                });
            }
        }, 300);
    })();
    Alles anzeigen


    JavaScript
    // Symbole.uc.js
    
    /* ****************************************************************************************************************** */
    /* Die Entstehung des Symbole.css => https://www.camp-firefox.de/forum/thema/134970/?postID=1205292#post1205292       */
    /* ****************************************************************************************************************** */ 
    /* Das JavaScript                                                                                                     */
    /* https://www.camp-firefox.de/forum/thema/134970/?postID=1216936#post1216936                                         */
    /* version 1.0                                                                                                        */
    /* https://www.camp-firefox.de/forum/thema/134970/?postID=1235046#post1235046                                         */
    /* version 2.0                                                                                                        */
    /* ****************************************************************************************************************** */
    
    (function() {
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
    let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
    		/*--------------------------------------------------------------------------*/	
    		/*--------- Texte im Hamburgermenü und in den Submenüs eingerückt ----------*/
    		/*-------------- und in dem Anmeldenbutton das Icon eingefügt --------------*/
    		/*--------------------------------------------------------------------------*/
    
    		.subviewbutton:not(.subviewbutton-iconic, [checked="true"], [targetURI]) > .toolbarbutton-icon {
    			width: 16px;
    			height: 16px;
    			margin-inline-end: 8px !important;
    			-moz-context-properties: fill, fill-opacity;
    			fill: currentColor;
    		}
    
    		#appMenu-fxa-label2::before,
    		#fxa-manage-account-button::after {
    			content: "";
    			display: -moz-box;
    			border-radius: 50%;
    			background: var(--avatar-image-url) no-repeat center/contain;
    			-moz-context-properties: fill;
    			fill: currentColor;
    		}
    
    		#appMenu-fxa-label2::before {
    			width: 16px;
    			height: 16px;
    			margin-inline-end: 8px;
    		}
    
    		/* Neuer Tab */
    		#appMenu-new-tab-button2 { list-style-image: url("${ProfilePath}/tab-open.svg"); }
    		/* Neues Fenster */
    		#appMenu-new-window-button2 { list-style-image: url("${ProfilePath}/session.svg"); }
    		/* Neues privates Fenster */
    		#appMenu-new-private-window-button2 { list-style-image: url("${ProfilePath}/privateBrowsing.svg"); }
    		/* Lesezeichen */
    		#appMenu-bookmarks-button { list-style-image: url("${ProfilePath}/bookmark.svg"); }
    		/* Neues privates Fenster */
    		#appMenu-new-private-window-button2 { list-style-image: url("${ProfilePath}/privateBrowsing.svg"); }
    		/* Lesezeichen */
    		#appMenu-bookmarks-button { list-style-image: url("${ProfilePath}/bookmark.svg"); }
    		/* Chronik */
    		#appMenu-history-button { list-style-image: url("${ProfilePath}/history.svg"); }
    		/* Download */
    		#appMenu-downloads-button { list-style-image: url("${ProfilePath}/downloads.svg"); }
    		/* Passwörter */
    		#appMenu-passwords-button { list-style-image: url("${ProfilePath}/passwords.svg"); }
    		/* Add-ons und Themes */
    		#appMenu-extensions-themes-button { list-style-image: url("${ProfilePath}/addons.svg"); }
    		/* Drucken */
    		#appMenu-print-button2 { list-style-image: url("${ProfilePath}/printer.svg"); }
    		/* Seite speichern unter */
    		#appMenu-save-file-button2 { list-style-image: url("${ProfilePath}/folder-save.svg"); }
    		/* In Seite suchen */
    		#appMenu-find-button2 { list-style-image: url("${ProfilePath}/search.svg"); }
    		/* Seite übersetzen */
    		#appMenu-translate-button { list-style-image: url("${ProfilePath}/translations.svg"); }
    
    		/* Zoom */
    
    		#appMenu-zoom-controls::before {
    			margin-top: 3px !important;
    			margin-right: 10px !important; 
    			margin-left: -1px !important;
    			content: '' !important;
    			display: block !important;
    			width: 16px !important;
    			height: 16px !important;
    			mask-image:  url("${ProfilePath}/screenshot.svg") !important;
    			mask-repeat: no-repeat;
    			mask-position: center;
    			background-color: #e1e1e1 !important;
    		}
    
    		/*Einstellungen */
    		#appMenu-settings-button { list-style-image: url("${ProfilePath}/settings.svg"); }
    		/*Weitere Werkzeuge */
    		#appMenu-more-button2 { list-style-image: url("${ProfilePath}/debugging-workers.svg"); }
    		/* Hilfe */
    		#appMenu-help-button2 { list-style-image: url("${ProfilePath}/help.svg"); }
    		/* Beenden */
    		#appMenu-quit-button2 { list-style-image: url("${ProfilePath}/quit.svg"); }
    
    		/*= Panel - Bookmark =========================================================*/
    	
    		/* Lesezeichen bearbeiten */
    		
    		[data-l10n-id="bookmarks-bookmark-edit-panel"]::before {
    			margin-top: 3px !important;	
    			margin-right: -15px !important;
    			margin-left: -1px !important;
    			content: '' !important;
    			display: block !important;
    			width: 16px !important;
    			height: 16px !important;
    			mask-image: url("${ProfilePath}/window.svg") !important;
    			mask-repeat: no-repeat;
    			mask-position: center;
    			background-color: #e1e1e1 !important;
    		}
    
    		/* Aktuellen Tab als Lesezeichen ... */
    
    		[data-l10n-id="bookmarks-current-tab"]::before {
    			margin-top: 3px !important;	
    			margin-right: -15px !important;
    			margin-left: -1px !important;
    			content: '' !important;
    			display: block !important;
    			width: 16px !important;
    			height: 16px !important;
    			mask-image: url("${ProfilePath}/session.svg") !important;
    			mask-repeat: no-repeat;
    			mask-position: center;
    			background-color: #e1e1e1 !important;
    		}
    
    		/* Dieses Lesezeichen bearbeiten...  */
    		#panelMenuBookmarkThisPage { list-style-image: url("${ProfilePath}/bookmark-hollow.svg"); }
    		/* Lesezeichen durchsuchen */
    		#panelMenu_searchBookmarks { list-style-image: url("${ProfilePath}/search.svg"); }
    		/* Lesezeichen-Symbolleiste ausblenden */
    		#panelMenu_viewBookmarksToolbar { list-style-image: url("${ProfilePath}/bookmarks-toolbar.svg"); }
    		/* Lesezeichen verwalten */
    		#panelMenu_showAllBookmarks { list-style-image: url("${ProfilePath}/bookmarks-tray.svg"); } 
    
    		/*= Panel - Chronik ===========================================================*/
    		/*= Panel - History ==========================================================*/
    	
    		/* Kürzlich geschlossene Tabs */
    		#appMenuRecentlyClosedTabs { list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACcklEQVRYR8WWzVEbQRBGtRHYHHy2iAAIgEJkIEdgcfbBEAEiAhcXrogITAbI5QAMVQ5gdfYBiEB8b6uHaq1md2ZXBk3VlHa0/fOmu6dni8GWR7Fl/4NWgOVyeSvAz5rHRVE8xWAls6//P7h3C8mWuRtLASzN0L2HkNOPWn/XnGgOI86QnwnkMgWSC4CdCkKTHf/UBCI1iMQXgaAbHV0AMIBBv+OF1qQJB7wDamwzpIXUnQgCubXRFcAbuJDRacyopYh3pIkBBHW0Fom+AHMZIx2tQyATCVybUCmd3bpCXwDsUGQnGRBE4tzkSMXM62wCkAVh6SglTE3cC+DgfwJgiyqPFlhwJIhTPf+w9a7vE6kIUDR7iTA3FqMDGOn5ztYU4zy8SwFwrDj3TeOp7Yx7JUUhNLUV4He7CzYGkIGhdsS9kDMe/N1hhfhoit0iYJcN+ctpvR5upsUZILJBd6R9MzrVALv+08N5ALkRwEQAwHzlT61X0p4qwql0QhO50PM8J/6SmQSH+j3U/G16FZC3kQIoJUzef0lxlOl8UMv5P+l9Mt2D+qlJAUSPTg6IIIjWkZO9lHMa0spoBJABdhxtHpkAPn1/SYU/GcFGG0Bj+8wE8Bv4JudXMb02gNCGn6Xc9QhWvlzz4a7gJlz7rnwFsMLhqEBO+x0acTR3mVGYSa46fhqlzbl+sVnBeAAvHOzzybUfI88EIHJEst5BXzflAULF4xRaFKd9nQdAiyz1RFSZwHCJ7dQj0PvI5UQDGcFM9VM1ttARYxEgR8y3GCMZZUYBCHvubbcp3EIRGNZTQH44Lm8NQY2NQ0t+tw+SppBtHeAFE7gPMJeICC4AAAAASUVORK5CYII="); }
    		/* Kürzlich geschlossene Fenster */
    		#appMenuRecentlyClosedWindows { list-style-image: url("${ProfilePath}/window.svg"); }
    		/* Vorherige Sitzung wiederherstellen */
    		#appMenu-restoreSession{ list-style-image: url("${ProfilePath}/session-restore.svg"); }
    		/* Neueste Chronik löschen ... */
    		#appMenuClearRecentHistory { list-style-image: url("${ProfilePath}/history-forget.svg"); }
    		/* Chronik verwalten */
    		#PanelUI-historyMore { list-style-image: url("${ProfilePath}/history.svg"); }
    		/* Alle Tabs wieder öffnen */
    		#appMenu-library-recentlyClosedTabs { list-style-image: url("${ProfilePath}/window-move.svg"); }
    		/* Alle Fenster wieder öffnen */
    		#appMenu-library-recentlyClosedWindows { list-style-image: url("${ProfilePath}/session-restore.svg"); }
    		/* Chronik durchsuchen */
    		#appMenuSearchHistory { list-style-image: url("${ProfilePath}/window-search.svg"); }
    
    		/*= Panel - More tools =======================================================*/
    	
    		/* Symbolleiste anpassen ... */
    		#appmenu-moreTools-button { list-style-image: url("${ProfilePath}/Themes.svg"); }
    		/* Werkzeuge für Web-... */
    		#appmenu-developer-tools-view .subviewbutton:nth-child(1) { list-style-image: url("${ProfilePath}/developer.svg"); }
    		/* Task Manager */
    		#appmenu-developer-tools-view .subviewbutton:nth-child(2) { list-style-image: url("${ProfilePath}/performance.svg"); }
    		/* Externes Debugging - Edge bug.svg */
    		#appmenu-developer-tools-view .subviewbutton:nth-child(3) { list-style-image: url("${ProfilePath}/bug.svg"); }
    		/* Browser-Werkzeuge - Edge webdeveloper.svg */
    		#appmenu-developer-tools-view .subviewbutton:nth-child(4) { list-style-image: url("${ProfilePath}/window-dev-tools.svg"); }
    		/* Browser-Inhaltswerkzeuge */
    		#appmenu-developer-tools-view .subviewbutton:nth-child(5) { list-style-image: url("${ProfilePath}/command-frames.svg"); }
    		/* Browser-Konsole */
    		#appmenu-developer-tools-view .subviewbutton:nth-last-child(5) { list-style-image: url("${ProfilePath}/command-console.svg"); }
    		/* Bildschirmgrößen testen */
    		#appmenu-developer-tools-view .subviewbutton:nth-last-child(4) { list-style-image: url("${ProfilePath}/command-responsivemode.svg"); }
    		/* Farbpipette */
    		#appmenu-developer-tools-view .subviewbutton:nth-last-child(3) { list-style-image: url("${ProfilePath}/command-eyedropper.svg"); }
    		/* Seitenquelltext anzeigen - Edge file-search.svg */
    		#appmenu-developer-tools-view .subviewbutton:nth-last-child(2) { list-style-image: url("${ProfilePath}/document-search.svg"); }
    		/* Erweiterungen für Entwickler */
    		#appmenu-developer-tools-view .subviewbutton:nth-last-child(1) { list-style-image: url("${ProfilePath}/addons.svg"); }
    	
    		/*= Panel - Help =============================================================*/
    	
    		/* Hilfe erhalten */  
    		#appMenu_menu_openHelp { list-style-image: url("${ProfilePath}/help.svg"); }
    		/* Ideen und Feedback teilen ... */
    		#appMenu_feedbackPage { list-style-image: url("${ProfilePath}/send.svg"); }
    		/* Fehlerbehebungsmodus ... */
    		#appMenu_helpSafeMode { list-style-image: url("${ProfilePath}/debugging-workers.svg"); }
    		/* Weitere Informationen zur ... */
    		#appMenu_troubleShooting { list-style-image: url("${ProfilePath}/more.svg"); }
    		/* ?? Eine Glühbirne ?? */
    		#appMenu_help_reportSiteIssue { list-style-image: url("${ProfilePath}/lightbulb.svg"); }
    		/* Betrügerische Website melden ... */
    		#appMenu_menu_HelpPopup_reportPhishingtoolmenu { list-style-image: url("${ProfilePath}/warning.svg"); }
    		/* Zu einem neuen Gerät wechseln */
    		#appMenu_helpSwitchDevice { list-style-image: url("${ProfilePath}/send-to-device.svg"); }
    		/* Über Firefox */
    		#appMenu_aboutName { list-style-image: url("${ProfilePath}/firefox.svg"); }
    
    		/* ================================================================================================== */
    
    		/*Abstände für alle Icons im Kontextmenü*/
    		
    		menupopup:not(.in-menulist) > menu:not(.menu-iconic),
    		menupopup:not(.in-menulist, [aria-label]) > menuitem:not(.menuitem-iconic, [checked="true"]) {
    			padding-inline-start: calc(1em + 24px) !important;
    			background-position: left 1em center;
    			background-repeat: no-repeat;
    			background-size: 16px;
    			-moz-context-properties: fill, fill-opacity;
    			fill: #E0E0E0 !important;
    
    		}
    		/*	
    		menu[_moz-menuactive="true"][disabled="true"],
    		menuitem[_moz-menuactive="true"][disabled="true"] { */
    		/*
    		:is(menu,menuitem)[_moz-menuactive="true"][disabled="true"] {
    			background-color: #5C5C5C !important;
    			border-radius: 4px !important;
    		}	
    		*/
    		#context-savepage { background-image: url("${ProfilePath}/folder-save.svg"); }
    		#context-pocket { background-image: url("${ProfilePath}/pocket-outline.svg"); }
    		#context-selectall { background-image: url("${ProfilePath}/select-all-on.svg"); }
    		#context-take-screenshot { background-image: url("${ProfilePath}/screenshot.svg"); }
    		#context-viewsource { background-image: url("${ProfilePath}/document-search.svg"); }
    		#context-inspect-a11y { background-image: url("${ProfilePath}/tool-accessibility.svg"); }
    		#context-inspect { background-image: url("${ProfilePath}/command-pick.svg"); }
    		#context-copy { background-image: url("${ProfilePath}/edit-copy.svg"); }
    
    #context-closetab { background-image: url("${ProfilePath}/tab-close.svg"); }
    
    		#context-searchselect { background-image: url("${ProfilePath}/search.svg"); }
    		#context-translate-selection { background-image: url(chrome://browser/skin/translations.svg); }
    		#context-viewpartialsource-selection { background-image: url("${ProfilePath}/document-search.svg"); }
    
    		#context-openlinkincurrent { background-image: url("${ProfilePath}/link-square.svg"); }
    		#context-openlinkintab { background-image: url("${ProfilePath}/tab-open.svg"); }
    		#context-openlink { background-image: url("${ProfilePath}/session.svg"); }
    		#context-openlinkprivate { background-image: url("${ProfilePath}/privateBrowsing.svg"); }
    		#context-bookmarklink { background-image: url("${ProfilePath}/folder-save.svg"); }
    		#context-savelink { background-image: url("${ProfilePath}/image-add.svg"); }
    		#context-print-selection { background-image: url("${ProfilePath}/printer.svg"); }
    
    		#context-savelinktopocket { background-image: url("${ProfilePath}/image.svg"); }
    		#context-copylink { background-image: url("${ProfilePath}/link.svg"); }
    		#context-stripOnShareLink { background-image: url("${ProfilePath}/link-track.svg"); }
    		#context-reloadimage { background-image: url("${ProfilePath}/reload.svg"); }
    		#context-viewimage { background-image: url("${ProfilePath}/image-add.svg"); }
    		#context-saveimage { background-image: url("${ProfilePath}/image.svg"); }
    		#context-copyimage-contents  { background-image: url("${ProfilePath}/image-copy.svg"); }
    		#context-copyimage { background-image: url("${ProfilePath}/image-resize.svg"); }
    		#context-sendimage { background-image: url("${ProfilePath}/link.svg"); }
    		#context-setDesktopBackground { background-image: url("${ProfilePath}/image-resize.svg"); }
    
    		#_36bde3a5-9f17-4ad9-a587-d4a3c8e8d200_-menuitem-_background-tab_link { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACcklEQVRYR8WWzVEbQRBGtRHYHHy2iAAIgEJkIEdgcfbBEAEiAhcXrogITAbI5QAMVQ5gdfYBiEB8b6uHaq1md2ZXBk3VlHa0/fOmu6dni8GWR7Fl/4NWgOVyeSvAz5rHRVE8xWAls6//P7h3C8mWuRtLASzN0L2HkNOPWn/XnGgOI86QnwnkMgWSC4CdCkKTHf/UBCI1iMQXgaAbHV0AMIBBv+OF1qQJB7wDamwzpIXUnQgCubXRFcAbuJDRacyopYh3pIkBBHW0Fom+AHMZIx2tQyATCVybUCmd3bpCXwDsUGQnGRBE4tzkSMXM62wCkAVh6SglTE3cC+DgfwJgiyqPFlhwJIhTPf+w9a7vE6kIUDR7iTA3FqMDGOn5ztYU4zy8SwFwrDj3TeOp7Yx7JUUhNLUV4He7CzYGkIGhdsS9kDMe/N1hhfhoit0iYJcN+ctpvR5upsUZILJBd6R9MzrVALv+08N5ALkRwEQAwHzlT61X0p4qwql0QhO50PM8J/6SmQSH+j3U/G16FZC3kQIoJUzef0lxlOl8UMv5P+l9Mt2D+qlJAUSPTg6IIIjWkZO9lHMa0spoBJABdhxtHpkAPn1/SYU/GcFGG0Bj+8wE8Bv4JudXMb02gNCGn6Xc9QhWvlzz4a7gJlz7rnwFsMLhqEBO+x0acTR3mVGYSa46fhqlzbl+sVnBeAAvHOzzybUfI88EIHJEst5BXzflAULF4xRaFKd9nQdAiyz1RFSZwHCJ7dQj0PvI5UQDGcFM9VM1ttARYxEgR8y3GCMZZUYBCHvubbcp3EIRGNZTQH44Lm8NQY2NQ0t+tw+SppBtHeAFE7gPMJeICC4AAAAASUVORK5CYII="); }
    
    		/* Rückgängig */
    		#context-undo { background-image: url("${ProfilePath}/undo.svg"); }
    		/* Wiederherstellen */
    		#context-redo{ background-image: url("${ProfilePath}/sync.svg"); }
    		/* Ausschneiden */
    		#context-cut { background-image: url("${ProfilePath}/edit-cut.svg"); }
    		/* Kopieren */
    		#context-copy { background-image: url("${ProfilePath}/copy.svg"); }
    		/* Einfügen */
    		#context-paste { background-image: url("${ProfilePath}/paste.svg"); }
    		/* Löschen */
    		#context-delete { background-image: url("${ProfilePath}/delete.svg"); }
    		/* Alles auswählen */
    		#context-selectall { background-image: url("${ProfilePath}/select-all-on.svg"); }
    		/* Rechtschreibung prüfen */
    		#spell-check-enabled { background-image: url("${ProfilePath}/spell-check.svg"); }
    
    
    		/* ----------------------------------------- */
    		/* --------- Kontextmenüs der Tabs --------- */
    		/* ----------------------------------------- */
    
    		/* Neuer Tab */
    		#context_openANewTab { background-image: url("${ProfilePath}/tab-open.svg"); }
    		/* Tab neu laden */
    		#context_reloadTab { background-image: url("${ProfilePath}/reload.svg"); }
    		/* Alle Tabs neu laden */
    		#tabContextMenu > menuitem:nth-child(7) { background-image: url("${ProfilePath}/reload.svg");
    		fill: #fbc96e !important; }
    		/* Tab stummschalten */
    		#context_toggleMuteTab { background-image: url("${ProfilePath}/audio-muted.svg"); }
    		/* Stummschaltung für Tab aufheben */
    		#context_toggleMuteTab[muted] { background-image: url("${ProfilePath}/audio.svg"); }
    		/* Tab anheften */
    		#context_pinTab { background-image: url("${ProfilePath}/glyph-pin-16.svg"); }
    		/* Tab klonen */
    		#context_duplicateTab { background-image: url("${ProfilePath}/duplicat.svg"); }
    		/* Tab als Lesezeichen hinzufügen */
    		#context_bookmarkTab { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
    		/* Tab verschieben */
    		#context_moveTabOptions { background-image: url("${ProfilePath}/arrow-swap.svg"); }
    		
    			/* <<< Submenu_Tab verschieben >>> */	
    		
    			/* An Anfang verschieben */
    			#context_moveToStart { background-image: url("${ProfilePath}/arrow-back.svg"); }
    			/* An Ende verschieben */
    			#context_moveToEnd { background-image: url("${ProfilePath}/arrow-forward.svg"); }
    			/* In neues Fenster verschieben */
    			#context_openTabInWindow { background-image: url("${ProfilePath}/session-restore.svg"); }	
    		
    		/* Teilen */
    		.share-tab-url-item { display: none; }
    		/* Alle Tabs auswählen */
    		#context_selectAllTabs { background-image: url("${ProfilePath}/tab-multiple.svg"); }
    		/* Tab schließen */
    		#context_closeTab { background-image: url("${ProfilePath}/tab-close.svg"); }
    		/*Mehrere Tabs schließen */
    		#context_closeTabOptions { background-image: url("${ProfilePath}/tab-close.svg"); }
    
    			/* <<< Submenu_Mehrere Tabs schließen >>> */
    			
    			/* Doppelte Tabs schließen */
    			#context_closeDuplicateTabs { background-image: url("${ProfilePath}/tab-close.svg");
    			fill: #7B7B7B !important; }
    			/* Linke Tabs schließen */
    			#context_closeTabsToTheStart { background-image: url("${ProfilePath}/tab-left.svg"); }
    			/* Rechte Tabs schließen */
    			#context_closeTabsToTheEnd { background-image: url("${ProfilePath}/tab-right.svg"); }
    			/* Andere Tabs schließen */
    			#context_closeOtherTabs { background-image: url("${ProfilePath}/tab-all.svg"); }
    		
    		/* Geschlossenen Tab wieder öffnen */
    		#context_undoCloseTab { background-image: url("${ProfilePath}/tab-restore"); }
    
    		/* Firefox "Beenden" */
    		#context_closeApp{ background-image: url("${ProfilePath}/Power_off_redorange.svg"); }
    
    		/* ================================================================ */
    
    		/* Neuer Tab */
    		#toolbar-context-openANewTab { background-image: url("${ProfilePath}/session.svg"); }
    		/* Ausgewählten Tab neu laden */
    		#toolbar-context-reloadSelectedTab { background-image: url("${ProfilePath}/reload.svg"); }
    		/* Ausgewählten Tab als Lesezeichen hinzufügen... */
    		#toolbar-context-bookmarkSelectedTab { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
    		/* Alle Tabs auswählen */
    		#toolbar-context-selectAllTabs { background-image: url("${ProfilePath}/tab-multiple.svg"); }
    
    		/* Geschlossene Tabs wieder öffnen */
    		#toolbar-context-undoCloseTab { background-image: url("${ProfilePath}/undo.svg"); }
    
    		/* Symbolleiste anpassen... */
    		menuitem.viewCustomizeToolbar { background-image: url("${ProfilePath}/Themes.svg"); }
    
    		/* Lesezeichen-Symbolleiste */
    		#toggle_PersonalToolbar { background-image: url("${ProfilePath}/bookmarks-toolbar.svg"); }
    
    		/* --------------------------------------------- */
    		/* - Kontextmenüs der Lesezeichen-Symbolleiste - */
    		/* --------------------------------------------- */
    
    		/* Löschen */
    		#placesContext_delete { background-image: url("${ProfilePath}/delete.svg"); }
    		/* Ausschneiden */
    		#placesContext_cut { background-image: url("${ProfilePath}/edit-cut.svg"); }
    		/* Kopieren */
    		#placesContext_copy { background-image: url("${ProfilePath}/copy.svg"); }
    		/* Einfügen */
    		#placesContext_paste, #placesContext_paste_group { background-image: url("${ProfilePath}/paste.svg"); }
    
    		/* Alle Lesezeichen öffnen */
    		#placesContext_openBookmarkContainer\:tabs { background-image: url("${ProfilePath}/window-move.svg"); }
    		/* Lesezeichen hinzufügen... */
    		#placesContext_new\:bookmark { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
    		/* Ordner hinzufügen... */
    		#placesContext_new\:folder { background-image: url("${ProfilePath}/folder.svg"); }
    		/* Trennlinie hinzufügen... */
    		#placesContext_new\:separator { background-image: url("${ProfilePath}/vertical-line.svg"); }
    
    		/* Lesezeichen verwalten */
    		#placesContext_showAllBookmarks { background-image: url("${ProfilePath}/bookmarks-tray.svg"); }
    		/* In neuem Tab öffnen */
    		#placesContext_open\:newtab { background-image: url("${ProfilePath}/session.svg"); }
    		/* In neuem Fenster öffnen */
    		#placesContext_open\:newwindow { background-image: url("${ProfilePath}/window.svg"); }
    		/* In neuem privaten Fenster öffnen */
    		#placesContext_open\:newprivatewindow { background-image: url("${ProfilePath}/privateBrowsing.svg"); }
    
    		/* Lesezeichen bearbeiten... */
    		#placesContext_show_bookmark\:info { background-image: url("${ProfilePath}/edit.svg"); }
    		/* Lesezeichen löschen */
    		#placesContext_deleteBookmark { background-image: url("${ProfilePath}/delete.svg"); }
    
    		/* ------------------------------------------ */
    		/* ------- Kontextmenüs der Menuleise ------- */
    		/* ------------------------------------------ */
    
    		/* In Überhangmenü verschieben */
    		.customize-context-moveToPanel { background-image: url("${ProfilePath}/glyph-pin-16.svg"); }
    		/* Aus Symbolleiste entfernen */
    		.customize-context-removeFromToolbar { background-image: url("${ProfilePath}/delete.svg"); }
    
    		/* --------------------------------------------- */
    		/* ------- Kontextmenüs in der Menuleise ------- */
    		/* --------------------------------------------- */
    
    		/* --- Datei --- */
    
    		/* Neuer Tab */
    		#menu_newNavigatorTab { background-image: url("${ProfilePath}/tab-open.svg"); }
    		/* Neues Fenster */
    		#menu_newNavigator { background-image: url("${ProfilePath}/session.svg"); }
    		/* Neues privates Fenster */
    		#menu_newPrivateWindow { background-image: url("${ProfilePath}/privateBrowsing.svg"); }
    		/* Datei öffnen... */
    		#menu_openFile { background-image: url("${ProfilePath}//folder-open.svg"); }^
    		/* Tab schließen ausblenden	! */
    		#menu_close { display: none !important; }
    		/* Fenster schließen ausblenden	! */
    		#menu_closeWindow { display: none !important; }
    		/* Seite speichern unter... */
    		#menu_savePage { background-image: url("${ProfilePath}/folder-save.svg"); }
    		/* Link per E-Mail senden... */
    		#menu_sendLink { background-image: url("${ProfilePath}/mail.svg"); }
    		/* Drucken... */
    		#menu_print { background-image: url("${ProfilePath}/printer.svg"); }
    		/* Daten aus einem anderen Browser importieren... */
    		#menu_importFromAnotherBrowser { background-image: url("${ProfilePath}/import.svg"); }
    		/* Offline arbeiten */
    		#goOfflineMenuitem { background-image: url("${ProfilePath}/plug-disconnected.svg"); }
    		/* Beenden */
    		/* #menu_FileQuitItem { background-image: url("${ProfilePath}/quit.svg"); } */
    		#menu_FileQuitItem { background-image: url("${ProfilePath}/Power_off_redorange.svg"); }
    
    		/* --- Bearbeiten --- */
    
    		/* Rückgängig */
    		#menu_undo { background-image: url("${ProfilePath}/undo.svg"); }
    		/* Wiederherstellen */
    		#menu_redo { background-image: url("${ProfilePath}/sync.svg"); }
    		/* Ausschneiden */
    		#menu_cut { background-image: url("${ProfilePath}/edit-cut.svg"); }
    		/* Kopieren */
    		#menu_copy { background-image: url("${ProfilePath}/copy.svg"); }
    		/* Einfügen */
    		#menu_paste { background-image: url("${ProfilePath}/paste.svg"); }
    		/* Löschen */
    		#menu_delete { background-image: url("${ProfilePath}/delete.svg"); }
    		/* Alles auswählen */
    		#menu_selectAll { background-image: url("${ProfilePath}/select-all-on.svg"); }
    		/* Seite durchsuchen... */
    		#menu_find { background-image: url("${ProfilePath}/search.svg"); }
    
    		/* --- Ansicht --- */
    
    		/* Symbolleisten */
    		#viewToolbarsMenu { background-image: url("${ProfilePath}/toolbar.svg"); }
    		
    			/* <<< Submenu_Symbolleisten >>> */
    			
    			#toggle_PersonalToolbar { background-image: url("${ProfilePath}/bookmarks-toolbar.svg"); }
    			#menu_customizeToolbars { background-image: url("${ProfilePath}/Themes.svg"); }	
    
    			/* ----------------------------------- */
    			/* -- Checkbox und Haken im Submenu -- */
    			/* ----------------------------------- */
    
    			menuitem[checked="true"] > .menu-iconic-left {
    				list-style-image: url("${ProfilePath}/check.svg");
    				fill: #00E400 !important;
    			}
    
    			[data-l10n-id="toolbar-context-menu-bookmarks-toolbar-always-show-2"]:not([checked="true"]),
    			[data-l10n-id="toolbar-context-menu-bookmarks-toolbar-on-new-tab-2"]:not([checked="true"]),
    			[data-l10n-id="toolbar-context-menu-bookmarks-toolbar-never-show-2"]:not([checked="true"]),
    			#menu_zoomReset:not([checked="true"]),
    			#toggle_zoom:not([checked="true"]),
    			#menu_pageStylePersistentOnly:not([checked="true"]) {
    				background-image: url("${ProfilePath}/square.svg");
    				background-repeat: no-repeat;
    			}
    
    			/* ----------------------------------- */
    
    		/* Sidebar */
    		#viewSidebarMenuMenu { background-image: url("${ProfilePath}/Dock Side Left.svg"); }
    
    			/* <<< Submenu_Sidebar >>> */
    
    			#menu_bookmarksSidebar:not([checked="true"]) { 
    				background-image: url("${ProfilePath}/bookmark.svg"); 
    				background-repeat: no-repeat;
    			}
    			#menu_historySidebar:not([checked="true"]) { 
    				background-image: url("${ProfilePath}/history.svg"); 
    				background-repeat: no-repeat;
    			}
    			#menu_tabsSidebar:not([checked="true"]) { 
    				background-image: url("${ProfilePath}/Dock Side Left.svg"); 
    				background-repeat: no-repeat;
    			}
    
    		/* Zoom */
    		#viewFullZoomMenu { background-image: url("${ProfilePath}/screenshot.svg"); }
    		
    			/* <<< Submenu_Zoom >>> */
    
    			#menu_zoomEnlarge { background-image: url("${ProfilePath}/zoom-in.svg"); }	/*  +  */
    			#menu_zoomReduce { background-image: url("${ProfilePath}/zoom-out.svg"); }	/*  -  */
    		
    		/* Webseiten-Stil */
    		#pageStyleMenu { background-image: url("${ProfilePath}/document-css.svg"); }
    		
    			/* <<< Submenu_Webseiten-Stil >>> */
    		
    			#menu_pageStyleNoStyle:not([checked="true"]) { 
    				background-image: url("${ProfilePath}/document-css.svg"); 
    				background-position: left 1em center;
    				background-repeat: no-repeat;
    			}	
    		
    		/* Textkodierung reparieren */
    		#repair-text-encoding { background-image: url("${ProfilePath}/characterEncoding.svg"); }
    		/* Vollbild */
    		#fullScreenItem { background-image: url("${ProfilePath}/fullscreen.svg"); }
    
    		/* --- Chronik --- */
    
    		/* Gesamte Chronik anzeigen */
    		#menu_showAllHistory { background-image: url("${ProfilePath}/history.svg"); }
    		/* Neueste Chronik löschen... */
    		#sanitizeItem { background-image: url("${ProfilePath}/history-forget.svg"); }
    		/* Vorherige Sitzung wiederherstellen */
    		#historyRestoreLastSession { background-image: url("${ProfilePath}/session-restore.svg"); }
    		/* Chronik durchsuchen */
            #menu_searchHistory { background-image: url("${ProfilePath}/window-search.svg"); }
    		/* Kürzlich geschlossene Tabs */
    		#historyUndoMenu { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACcklEQVRYR8WWzVEbQRBGtRHYHHy2iAAIgEJkIEdgcfbBEAEiAhcXrogITAbI5QAMVQ5gdfYBiEB8b6uHaq1md2ZXBk3VlHa0/fOmu6dni8GWR7Fl/4NWgOVyeSvAz5rHRVE8xWAls6//P7h3C8mWuRtLASzN0L2HkNOPWn/XnGgOI86QnwnkMgWSC4CdCkKTHf/UBCI1iMQXgaAbHV0AMIBBv+OF1qQJB7wDamwzpIXUnQgCubXRFcAbuJDRacyopYh3pIkBBHW0Fom+AHMZIx2tQyATCVybUCmd3bpCXwDsUGQnGRBE4tzkSMXM62wCkAVh6SglTE3cC+DgfwJgiyqPFlhwJIhTPf+w9a7vE6kIUDR7iTA3FqMDGOn5ztYU4zy8SwFwrDj3TeOp7Yx7JUUhNLUV4He7CzYGkIGhdsS9kDMe/N1hhfhoit0iYJcN+ctpvR5upsUZILJBd6R9MzrVALv+08N5ALkRwEQAwHzlT61X0p4qwql0QhO50PM8J/6SmQSH+j3U/G16FZC3kQIoJUzef0lxlOl8UMv5P+l9Mt2D+qlJAUSPTg6IIIjWkZO9lHMa0spoBJABdhxtHpkAPn1/SYU/GcFGG0Bj+8wE8Bv4JudXMb02gNCGn6Xc9QhWvlzz4a7gJlz7rnwFsMLhqEBO+x0acTR3mVGYSa46fhqlzbl+sVnBeAAvHOzzybUfI88EIHJEst5BXzflAULF4xRaFKd9nQdAiyz1RFSZwHCJ7dQj0PvI5UQDGcFM9VM1ttARYxEgR8y3GCMZZUYBCHvubbcp3EIRGNZTQH44Lm8NQY2NQ0t+tw+SppBtHeAFE7gPMJeICC4AAAAASUVORK5CYII="); }
    		/* Kürzlich geschlossene Fenster */
    		#historyUndoWindowMenu { background-image: url("${ProfilePath}/window.svg"); }
    
    		/* Lesezeichen */
    
    		/* Lesezeichen verwalten */
    		#bookmarksShowAll { background-image: url("${ProfilePath}/bookmarks-tray.svg"); }
    		/* Aktuellen Tab als Lesezeichen hinzufügen */
    		#menu_bookmarkThisPage { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
    		/* Lesezeichen durchsuchen */
    		#menu_searchBookmarks { background-image: url("${ProfilePath}/search.svg"); }
    		/* Lesezeichen-Symbolleiste */
    		#bookmarksToolbarFolderMenu { list-style-image: url("${ProfilePath}/bookmarksToolbar.svg"); }
    		/* Weitere Lesezeichen */
    		#menu_unsortedBookmarks { list-style-image: url("${ProfilePath}/mail-inbox-all.svg") }
    
    		/* --- Extras --- */
    
    		/* Downloads */
    		#menu_openDownloads { background-image: url("${ProfilePath}/downloads.svg"); }
    		/* Add-ons und Themes */
    		#menu_openAddons { background-image: url("${ProfilePath}/addons.svg"); }
    		/* Firefox View */
    		#menu_openFirefoxView { background-image: url("${ProfilePath}/firefox.svg"); }
    		/* Anmelden */
    		#sync-setup { background-image: url("${ProfilePath}/avatar-empty.svg"); }
    		/* Browser-Werkzeuge */
    		#browserToolsMenu { background-image: url("${ProfilePath}/debugging-workers.svg"); }
    		
    			/* <<< Submenu_Browser-Werkzeuge >>> */	
    
    			/* Werkzeuge für Web-Entwickler */
    			#menu_devToolbox { background-image: url("${ProfilePath}/developer.svg"); }
    			/* Task-Manager */
    			#menu_taskManager { background-image: url("${ProfilePath}/performance.svg"); }
    			/* Externes Debugging */
    			#menu_devtools_remotedebugging { background-image: url("${ProfilePath}/bug.svg"); }
    			/* Browser-Werkzeuge */
    			#menu_browserToolbox { background-image: url("${ProfilePath}/window-dev-tools.svg"); }
    			/* Browser-Inhaltswerkzeuge */
    			#menu_browserContentToolbox { background-image: url("${ProfilePath}/command-frames.svg"); }
    			/* Browser-Konsole */
    			#menu_browserConsole { background-image: url("${ProfilePath}/command-console.svg"); }
    			/* Bildschirmgrößen testen */
    			#menu_responsiveUI { background-image: url("${ProfilePath}/command-responsivemode.svg"); }
    			/*Farbpipette */
    			#menu_eyedropper { background-image: url("${ProfilePath}/command-eyedropper.svg"); }
    			/* Seitenquelltext anzeigen */
    			#menu_pageSource { background-image: url("${ProfilePath}/document-search.svg"); }
    			/* Erweiterungen für Entwickler */
    			#extensionsForDevelopers { background-image: url("${ProfilePath}/addons.svg"); }	
    		
    		/* Seiteninformationen */
    		#menu_pageInfo { background-image: url("${ProfilePath}/document-endnote.svg"); }
    		/* Einstellungen */
    		#menu_preferences { background-image: url("${ProfilePath}/settings.svg"); }
    
    		/* --- Hilfe --- */
    
    		/* Hilfe erhalten */
    		#menu_openHelp { background-image: url("${ProfilePath}/help.svg"); }
    		/* Ideen und Feedback teilen... */
    		#feedbackPage { background-image: url("${ProfilePath}/send.svg"); }
    		/* Fehlerbehebungsmodus... */
    		#helpSafeMode { background-image: url("${ProfilePath}/debugging-workers.svg"); }
    		/* Weitere Informationen zur Fehlerbehebung */
    		#troubleShooting { background-image: url("${ProfilePath}/more.svg"); }
    		/* Betrügerische Website melden... */
    		#menu_HelpPopup_reportPhishingtoolmenu { background-image: url("${ProfilePath}/warning.svg"); }
    		/* Zu einem neuen Gerät wechseln */
    		#helpSwitchDevice { background-image: url("${ProfilePath}/send-to-device.svg"); }
    		/* Über Firefox */
    		#aboutName { background-image: url("${ProfilePath}/firefox.svg"); }
    
    		/* ---------------------------------------------- */
    		/* ------------- Kontextmenü Frames ------------- */
    		/* ---------------------------------------------- */
    		
    		/* Aktueller Frame */
    		#frame { background-image: url("${ProfilePath}/command-frames.svg"); 
    		background-repeat: no-repeat;
    		}
    
    			/* <<< Submenu_Aktueller Frame >>> */	
    
    			/* Nur diesen Frame anzeigen */
    			#context-showonlythisframe { background-image: url("${ProfilePath}/tab.svg"); }
    			/* Frame in neuem Tab öffnen */
    			#context-openframeintab { background-image: url("${ProfilePath}/open-in-new.svg"); }
    			/* Frame in neuem Fenster öffnen */
    			#context-openframe { background-image: url("${ProfilePath}/window.svg"); }
    			/* Frame neu laden */
    			#context-reloadframe { background-image: url("${ProfilePath}/reload.svg"); }
    			/*Lesezeichen für diesen Frame hinzufügen */
    			#context-bookmarkframe { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
    			/*Frame speichern unter... */
    			#context-saveframe { background-image: url("${ProfilePath}/folder-save.svg"); }
    			/* Frame drucken... */
    			#context-printframe { background-image: url("${ProfilePath}/printer.svg"); }
    			/* Bildschirmfoto aufnehmen */
    			#context-take-frame-screenshot { background-image: url("${ProfilePath}/screenshot.svg"); }
    			/* Frame-Quelltext anzeigen */
    			#context-viewframesource { background-image: url("${ProfilePath}/document-search.svg"); }
    			/* Frame-Informationen anzeigen */
    			#context-viewframeinfo { background-image: url("${ProfilePath}/info.svg"); }
    
    		/* ---------------------------------------------- */
    		/* ----------- Kontextmenü Adressfeld ----------- */
    		/* ---------------------------------------------- */
    		/*	
    		#urlbar-input-container {
    			padding-inline-start: calc(1em + 24px) !important;
    			background-position: left 1em center;
    			background-repeat: no-repeat;
    			background-size: 16px;
    			-moz-context-properties: fill, fill-opacity;
    			fill: currentColor;
    		}
    		*/
    		/* Rückgängig */
    		[data-l10n-id="text-action-undo"] {
    			background-image: url("${ProfilePath}/undo.svg");
    		}
    		/* Wiederherstellen */
    		[data-l10n-id="text-action-redo"] {
    			background-image: url("${ProfilePath}/sync.svg");
    		}
    		/* Ausschneiden */
    		[data-l10n-id="text-action-cut"] {
    			background-image: url("${ProfilePath}/edit-cut.svg");
    		}
    		/* Kopieren */
    		[data-l10n-id="text-action-copy"] {
    			background-image: url("${ProfilePath}/copy.svg");
    		}
    		/* Kopieren ohne Tracking */
    		#strip-on-share {
    			background-image: url("${ProfilePath}/copy_without.svg");
    		}		
    		/* Einfügen */
    		[data-l10n-id="text-action-paste"] {	
    			background-image: url("${ProfilePath}/paste.svg");
    		}
    		/* Einfügen & Los */
    		#paste-and-go {
    			background-image: url("${ProfilePath}/redo.svg");
    		}
    		/* Löschen */
    		[data-l10n-id="text-action-delete"] {
    			background-image: url("${ProfilePath}/delete.svg");
    		}
    		/* Alles auswählen */
    		[data-l10n-id="text-action-select-all"] {
    			background-image: url("${ProfilePath}/select-all-on.svg");
    		}
    
    		/* ------------------------------------------- */
    		/* ---------- Symbole der Menuleise ---------- */
    		/* ------------------------------------------- */
    
    		/* Datei  */
    		#file-menu::before { background: url("${ProfilePath}/mail-inbox-all.svg") no-repeat !important; }
    		/* Bearbeiten  */
    		#edit-menu::before { background: url("${ProfilePath}/edit.svg") no-repeat !important; }
    		/* Ansicht  */
    		#view-menu::before { background: url("${ProfilePath}/content-view.svg") no-repeat !important; }
    		/* Chronik  */
    		#history-menu::before { background: url("${ProfilePath}/history.svg") no-repeat !important; }
    		/* Lesezeichen  */
    		#bookmarksMenu::before { background: url("${ProfilePath}/bookmark.svg") no-repeat !important; }
    		/* Extras  */
    		#tools-menu::before { background: url("${ProfilePath}/toolbox.svg") no-repeat !important; }
    		/* Hilfe  */
    		#helpMenu::before { background: url("${ProfilePath}/help.svg") no-repeat !important; }
    
    		/* Einstellungen  */
    		#file-menu::before,
    		#edit-menu::before,
    		#view-menu::before,
    		#history-menu::before,
    		#bookmarksMenu::before,
    		#tools-menu::before,
    		#helpMenu::before {
    	
    		margin-left: -24px !important;
    		content: '' !important;
    		display: block !important;
    		
    		width: 16px !important;
    		height: 16px !important;
    		padding-left: 8px !important;
    			background-repeat: no-repeat !important;
    			-moz-context-properties: fill, fill-opacity;
    			fill: currentColor;
    		}
    		#menu_FilePopup,
    		#menu_EditPopup,
    		#menu_viewPopup,
    		#historyMenuPopup,
    		#bookmarksMenuPopup,
    		#menu_ToolsPopup,
    		#menu_HelpPopup {
    			margin-top: 5px !important;
    		}
    
    		/* ------------------------------------ */
    		/* *** neuer Button "Erweiterungen" *** */
    		/* ******* Symbole im Popup-Menü ****** */
    		/* ------------------------------------ */
    
    		.unified-extensions-context-menu-pin-to-toolbar {   
    			background: url("${ProfilePath}/glyph-pin-16.svg") no-repeat !important;
    			background-position: 9px 4px !important;
    		}
    		.unified-extensions-context-menu-move-widget-up {   
    			background: url("${ProfilePath}/Pfeil-hoch_hellgrau.svg") no-repeat !important;
    			background-position: 6px 0px !important;
    		}
    		.unified-extensions-context-menu-move-widget-down {   
    			background: url("${ProfilePath}/Pfeil-runter_hellgrau.svg") no-repeat !important;
    			background-position: 6px 0px !important;
    		}
    		.unified-extensions-context-menu-manage-extension {
    			background: url("${ProfilePath}/extension.svg") no-repeat !important;
    			background-position: 9px 4px !important;
    		}
    		.unified-extensions-context-menu-remove-extension {
    			background: url("${ProfilePath}/delete.svg") no-repeat !important;
    			background-position: 9px 4px !important;
    		}
    		.unified-extensions-context-menu-report-extension {
    			background: url("${ProfilePath}/warning.svg") no-repeat !important;
    			background-position: 9px 4px !important;
    		}
    
    		/* ---------------------------------------------- */
    		/* ------------- Kontextmenü Video -------------- */
    		/* ---------------------------------------------- */
    
    		/* Pause */
    		#context-media-pause { background-image: url("${ProfilePath}/pause-1.svg"); }
    		/* Abspielen */
    		#context-media-play { background-image: url("${ProfilePath}/play-1.svg"); }
    		/* Ton aus */
    		#context-media-mute { background-image: url("${ProfilePath}/audio-16-mute.svg"); }
    		/* Ton an */
    		#context-media-unmute { background-image: url("${ProfilePath}//audio-16.svg"); }
    		/* Geschwindigkeit */
    		#context-media-playbackrate { background-image: url("${ProfilePath}/performance-16.svg"); }
    		/* Endlosschleife */
    		#context-media-loop { background-image: url("${ProfilePath}/repeat-1.svg"); }
    		/* Vollbild */
    		#context-video-fullscreen { background-image: url("${ProfilePath}/maximize-1.svg"); }
    		/* Vollbild beenden */
    		#context-leave-dom-fullscreen { background-image: url("${ProfilePath}/minimize-1.svg"); }
    		/* Steuerung ausblenden	! */
    		#context-media-hidecontrols { display: none !important; }
    		/* Steuerung anzeigen	! */
    		#context-media-showcontrols { display: none !important; }
    
    		/* -------------------------- */
    
    		/* Video in neuem Tab öffnen */
    		#context-viewvideo { background-image: url("${ProfilePath}/session.svg");; }
    		/* In Bild-im-Bild ansehen */
    		#context-video-pictureinpicture { background-image: url("${ProfilePath}/info.svg"); }
    
    		/* -------------------------- */
    
    		/* Standbild aufnehmen...	! */
    		#context-video-saveimage { display: none !important; } 
    		/* Video speichern unter...	! */
    		#context-savevideo { display: none !important; }
    		/* Video-Adresse kopieren	! */
    		#context-copyvideourl { display: none !important; }
    		/* Video per E-Mail senden...	! */
    		#context-sendvideo { display: none !important; }
    
    		#context-sep-setbackground { display: none !important; }
    
    		.bookmark-item[container] {
    			list-style-image: url("${ProfilePath}/folder-fat.svg") !important;
    		  }
    
    	`), null, null);
    
       sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
    })();
    Alles anzeigen


    Wer die passenden Symbole braucht, bitte melden.

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mira_Belle
    • 28. Januar 2025 um 16:27

    Frage!

    Was ist der Vorteil des Skripts aus #36 gegenüber jenem aus #21 ?
    Oder ist das egal?

  • Script oder besser CSS, um die Rechtschreibvorschläge im Menu nach unten zu holen

    • Mira_Belle
    • 27. Januar 2025 um 10:36
    Zitat von Sören Hentzschel
    Zitat von Mira_Belle

    Und welche Erweiterung ist das, um Textvorschläge anzuzeigen?

    Das ist eine Standardfunktion von Firefox. Die Installation eines Wörterbuchs wird vorausgesetzt. Das kann in der deutschsprachigen Firefox-Version, anders als bei anderen Sprachen, aus Lizenzgründen nicht standardmäßig mitgeliefert werden.

    Muss man da etwas aktivieren? Denn bei mir wird da nichts angezeigt, habe aber das aktuelle Wörterbuch installiert.

  • Script oder besser CSS, um die Rechtschreibvorschläge im Menu nach unten zu holen

    • Mira_Belle
    • 27. Januar 2025 um 07:38

    Und welche Erweiterung ist das, um Textvorschläge anzuzeigen?
    Bitte um Erleuchtung. :D

  • Das Script Forward_Back_Button.uc.js funktioniert nicht mehr

    • Mira_Belle
    • 27. Januar 2025 um 07:31

    Es ging mir um diese Aussage:

    Zitat

    und erstellt eine Kopie von Zurück/Vor,

    Ob nun die Funktion von Vor/Zurück, per Code, verschoben oder kopiert werden soll,
    und ob dieser Code dann im gleichen, oder in einem anderen Skript steht,
    alles, habe ich damals versucht, spielt wohl keine Rolle.

  • Das Script Forward_Back_Button.uc.js funktioniert nicht mehr

    • Mira_Belle
    • 26. Januar 2025 um 23:57

    Ach, kopieren von Funktionen! Da habe ich mir schon die Zähne ausgebissen!
    Das funktioniert leider nicht immer. Da müsste dann ein Profi ran.
    Und zwar wollte ich die kompletten Menüs der Menüleiste in das Appmenü verschieben, bzw. kopieren.
    Geht aber warum auch immer nicht!

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mira_Belle
    • 26. Januar 2025 um 23:54
    Zitat von Horstmann

    Danke Mira!:)
    Klappt das auch im aktuellen Nightly bei dir?

    Ja! Habe nur ein Skript, das sich so verhält, wie von Dir beschrieben.
    Nutze 40.

  • Das Script Forward_Back_Button.uc.js funktioniert nicht mehr

    • Mira_Belle
    • 26. Januar 2025 um 21:05

    milupo Danke für die Erklärung.

  • Das Script Forward_Back_Button.uc.js funktioniert nicht mehr

    • Mira_Belle
    • 26. Januar 2025 um 20:25
    Zitat von Boersenfeger

    Moin, willkommen im Forum!

    Was soll das Script machen?

    Die Frage stelle ich mir auch gerade?

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mira_Belle
    • 26. Januar 2025 um 20:22

    Also, wenn man mit mehren Browserfenster arbeitet, würde sich ein solches Skript anbieten.
    Das funktioniert egal, aus welchem Fester aus es gestartet wird.

    JavaScript
    // Browser-Werkzeuge.uc.js
    // Author @aborix
    // https://www.camp-firefox.de/forum/thema/135383/?postID=1210514#post1210514
    
    (function() {
        if (location.href !== 'chrome://browser/content/browser.xhtml') return;
        try {
            CustomizableUI.createWidget({
                id: 'browser-toolbox-button',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                label: 'Browser-Werkzeuge',
                tooltiptext: 'Browser-Werkzeuge',
    
                onCommand: function (event) {
                    let document = event.target.ownerDocument;
                    if (!document.getElementById('menu_browserToolbox')) {
                        let { require } = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs", {});
                        let { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs');
                        BrowserToolboxLauncher.init();
                    }
                    document.getElementById('menu_browserToolbox').click();
                }
            });
        } catch(e) {
            return;
        }
    
        let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
        let ButtonIcon = "window-dev-tools.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
        let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
        let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
     
            #browser-toolbox-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
            #browser-toolbox-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
              width: 28px !important;
              height: 28px !important;
              fill: #83ee1a !important;
              fill-opacity: 1 !important;
              }
     
           `), null, null);
     
        sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); 
    })();
    Alles anzeigen

    Bitte den eigenen Bedürfnissen anpassen!

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mira_Belle
    • 25. Januar 2025 um 18:16

    ot. Irgendwie geht das, so finde ich, an der eigentlichen Kritik der Unübersichtlichkeit vorbei.
    Und im Besonderen, wenn mehrere Skripte oder Fragen gleichzeitig behandelt werden.
    Von daher wäre es wirklich gut gewesen, die Funktion des Zitates oder eben des Verlinkens zu nutzen.
    Aber das Sehen einige hier anders, weil sie halt die Zeit haben und am Ball sind.
    Aber ist jetzt eh absolut egal, es lässt sich ja nun im Nachhinein nicht mehr ändern,
    und ob ich, oder andere, hier noch irgendwas nachvollziehen können, scheint auch völlig Banane zu sein.
    Wenn ich noch Fragen habe, muss ich halt einen neuen Thread aufmachen und die "Uhr" wieder auf Null stellen.

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • Mira_Belle
    • 25. Januar 2025 um 12:05
    Zitat von BrokenHeart

    Wäre vielleicht ganz gut, wenn ein paar Nutzer des Skripts mal ihre Version hier posten würden.

    Oh, ich nutze da zwei verschiedene und von mir angepasste Skripte.
    Einmal eines, welches eine Schaltfläche im Hamburgermenü erzeugt
    und eines, welches einen Button erstellt.

    JavaScript
    /* Restart item script for Firefox 89+ by Aris
    
      - left-click on restart item: normal restart
      - middle-click on restart item: restart + clear caches
      - right-click on restart item: no special function
      
      - option: display restart icon in menubars 'File' menu
      - option: display restart icon in main menus popup
    
      - based on 'addRestartButton.uc.js' script by Alice0775
      - restart code from Classic Theme Restorer add-on
      - invalidate caches from Session Saver add-on
    
      https://github.com/Aris-t2/CustomJSforFx/blob/master/scripts/restart_item_in_menu.uc.js
    */
    
    var appversion = parseInt(Services.appinfo.version);
    var menuicon = false;
    var appmenuicon = false;
    
    var RestartMenuFileAppItems = {
      init: function() {
    
    	var button_label = "Neustart";
    	/*
    	try {
    	  restartitem_filemenu = document.createXULElement("menuitem");
    	  if(menuicon) restartitem_filemenu.setAttribute("class","menuitem-iconic");
    	  restartitem_filemenu.setAttribute("label", button_label);
    	  restartitem_filemenu.setAttribute("id","fileMenu-restart-item");
    	  restartitem_filemenu.setAttribute("accesskey", "R");
    	  restartitem_filemenu.setAttribute("acceltext", "R");
    	  restartitem_filemenu.setAttribute("insertbefore", "menu_FileQuitItem");
    	  restartitem_filemenu.setAttribute("onclick", "if (event.button == 0) {RestartMenuFileAppItems.restartApp(false);} else if (event.button == 1) {RestartMenuFileAppItems.restartApp(true)};");
    	  restartitem_filemenu.setAttribute("oncommand", "RestartMenuFileAppItems.restartApp(false);");
    
    	  if(document.getElementById("menu_FileQuitItem").previousSibling.id != "fileMenu-restart-item" )
    		document.getElementById("menu_FileQuitItem").parentNode.insertBefore(restartitem_filemenu,document.getElementById("menu_FileQuitItem"));
    	} catch(e) {}
    	*/
    	try {
    	  restartitem_appmenu = document.createXULElement("toolbarbutton");
    	  restartitem_appmenu.setAttribute("label", button_label);
    	  restartitem_appmenu.setAttribute("id","appMenu-restart-button");
    	 // if(appmenuicon) restartitem_appmenu.setAttribute("class","subviewbutton subviewbutton-iconic");
    	 //   else 
    	  restartitem_appmenu.setAttribute("class","subviewbutton");
    	 //  restartitem_appmenu.setAttribute("accesskey", "R");
    	 //  restartitem_appmenu.setAttribute("shortcut", "Alt+R");
    	  restartitem_appmenu.setAttribute("insertbefore", "appMenu-quit-button2");
    	  restartitem_appmenu.setAttribute("onclick", "if (event.button == 0) {RestartMenuFileAppItems.restartApp(false);} else if (event.button == 1) {RestartMenuFileAppItems.restartApp(true)};");
    	  restartitem_appmenu.setAttribute("oncommand", "RestartMenuFileAppItems.restartApp(false);");  
    	  	  
    	  var AMObserver = new MutationObserver(function(mutations) {
    	    mutations.forEach(function(mutation) {
    			if(document.querySelector("#appMenu-restart-button") == null ) document.querySelector("#appMenu-quit-button2").parentNode.insertBefore(restartitem_appmenu,document.getElementById("appMenu-quit-button2"));
    	    });    
    	  });
    	
    	 AMObserver.observe(document.querySelector("#PanelUI-menu-button"), { attributes: true, attributeFilter: ['open'] });
    	
    	} catch(e) {}
    		  
    	 let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
    	 let ButtonIcon = "restart.svg"; // Name & Dateiendung des anzuzeigenden Symbols!    
    	 let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
    	 let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
       
    		#appMenu-restart-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
    		#appMenu-restart-button > .toolbarbutton-icon {
    			margin-inline-end: 6px !important;
    			width: 19px !important;
    			height: 19px !important;
    			}
       		#appMenu-restart-button > image:nth-child(1) {
    			margin-left: -2px !important;
    			}
    
    		`), null, null);
       
    	 sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    	
      },
    
      restartApp: function(clearcaches) {
    
    	var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
    	var observerSvc = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
    
    	if(clearcaches) {
    	  Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).invalidateCachesOnRestart();
    	}
    	observerSvc.notifyObservers(cancelQuit, "quit-application-requested", "restart");
    	if(cancelQuit.data) return false;
    	Services.startup.quit(Services.startup.eRestart | Services.startup.eAttemptQuit);
    
      }
    }
    
    RestartMenuFileAppItems.init();
    Alles anzeigen


    JavaScript
    // Restart_Firefox.uc.js
    // RestartFirefoxButtonM.uc.js
    // v. 0.6
    // Source file https://www.camp-firefox.de/forum/thema/126132/?postID=1093563#post1093563
    
    (function() {
        if (location.href !== 'chrome://browser/content/browser.xhtml') return;
        try {
            CustomizableUI.createWidget({
                id: 'restart-button2a',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                onBuild: function(aDocument) {
                    var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');                
                    let props = {
                        id: 'restart-button2a',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        label: 'Neustart',
                        tooltiptext: 'Neustart (der userChrome.js-Cache wird geleert)',
                    };             
                    for (let p in props)
                        toolbaritem.setAttribute(p, props[p]);  
                    
                    toolbaritem.addEventListener('click', event => {
                        if (event.button == 1) {
                          Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
                        }
                    
                        if (event.button == 0 || event.button == 2) {
                          event.preventDefault();
                          Services.appinfo.invalidateCachesOnRestart();
                          Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
                        }
                      });
    
                    return toolbaritem;
                }        
            });
        } catch(e) { };
    
        let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
        let ButtonIcon = "restart.svg"; // Name & Dateiendung des anzuzeigenden Symbols!    
        let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
        let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
      
            #restart-button2a { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
            #restart-button2a.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
              width: 32px !important;
              height: 32px !important;
              fill: #f60000 !important;
              fill-opacity: 1 !important;
              }
      
           `), null, null);
      
        sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
    })();
    Alles anzeigen
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mira_Belle
    • 25. Januar 2025 um 10:27

    Ulf3000 Alles i.O.
    Mir ging es lediglich um die Übersichtlichkeit!
    Es stellt sich mir dann aber auch die Frage, wo für ein Forum in einzelne Bereiche unterteilt wird,
    und wofür diese wiederum einzelne Threads haben. Kann man ja immer alles in einem Sammelthread unterbringen. ;)
    Ich hoffe, es kommt rüber, was ich damit sagen will!

    offtoppic: Ich nutze auch VScode, welche Add-ons wären das und sind diese Kostenpflichtig?

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mira_Belle
    • 24. Januar 2025 um 09:42

    Mh. Also ich finde auch, dass dieser Thread mittlerweile etwas unübersichtlich geworden ist!
    Mag ja sein, dass User, die eine Frage stellen und zig spätere Beiträge dann eine Antwort erhalten,
    damit zurechtkommen.
    Aber wenn man hier immer nur von Zeit zu Zeit reinschaut, gar nicht direkt betroffen ist, war,
    sieht man nur noch ein heilloses Durcheinander!
    Selbst wenn ich versuche eine bestimmte "Besprechung" eines Skriptes zu folgen, kann es ganz schnell passieren,
    dass ich den Faden verliere.
    Und ich frage mich, warum es nicht möglich ist, wenigstens hin und wieder,
    mal auf den anfänglichen Beitrag, also die Fragestellung, zu verweisen!
    Das Board hat hier für doch so viele Möglichkeiten!
    Es geht mir also nicht darum, dass beteiligte User wissen, worum es geht, sondern dass andere es auch nachvollziehen können.

    Aber jetzt ist es gut mit Kritik und Anmerkungen! Ich bitte der Übersichtlichkeit einfach mal die Möglichkeit des Zitats zu nutzen,
    wenn die Frage oder der Bezug zig Beiträge davor sich befindet.
    Und wenn betreffender Beitrag noch "älter" ist, schadet auch ein #XXX Link nicht.
    <3lichen Dank. :*

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mira_Belle
    • 22. Januar 2025 um 19:55

    Ich hätte da mal eine Verständnisfrage!
    Warum solche Monster!
    Ist da der Wurm drinnen, kann das einen ganzen Rattenschwanz an Auswirkungen haben.
    Nutze ich für jeden Button ein eigenes Skript inkl. CSS, sehe ich doch sofort an welchem Skript es hakt
    und die Fehlersuche gestaltet sich viel einfacher.
    Ist aber nur meine pers. Meinung.

  • Seit heute Profile in der Menü-Leiste

    • Mira_Belle
    • 19. Januar 2025 um 20:44
    Zitat von .DeJaVu

    Er hat doch schön öfters bekundet, dass der Inspector oder Browser-Werkzeuge nicht sein Ding sind. Muss man da jetzt so doll drauf rumreiten? Es sollte jedoch möglich sein, das CSS in der eigenen Sammlung zu finden und für diesen Punkt zu erweitern, dass die gleiche Optik vorhanden ist.

    Also von mir ist es wirklich nicht böse gemeint und auch kein drauf rumreiten!
    Und ich kann mir auch beim besten Willen nicht vorstellen, dass Andy ihm da irgendwas Schlechtes will.
    Er möchte es doch einfach noch einmal versuchen, und wenn es doch nicht so klappt,
    einfach fragen, Andreas, aber auch ich, aber womöglich auch viele andere werden ihm mit Sicherheit weiterhelfen.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mira_Belle
    • 19. Januar 2025 um 19:09

    Hi lenny2
    Versuche einmal CSS in das Skript zu basteln!
    Dann kannst Du bestimmen, wie breit das Submenü und die "Texte" sein sollen!
    Schau Dir mein angepasstes Skript an.

    CSS
    // ==UserScript==
    // @name           UndoListInTabmenuToo
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    UndoListInTabmenuToo.uc.js
    // @include        main
    // @compatibility  Firefox 135
    // @author         Alice0775
    // @version        2025/01/19 width of the submenu adjusted via CSS, by Mira Bellenbaum
    // @version        2025/01/18 fix bug via CSS thanks 2002Andreas
    // @version        2025/01/15 fix bug by Mira Bellenbaum (Tooltips deleted because incorrect)
    // @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 Tooltip zeigt jetzt den Verlauf in Tabs an
    // @Note           Fügt die UndoClose Tab List für Tabs und Kontextmenüs hinzu
    // @OriginalCode   Orginalcode aus browser.js für populateUndoSubmenu verwendet
    // @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 Mittlere Klickverarbeitung
    // @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 FFx3.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    : false,  //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(){
          var css =`
          .restoreallitem {
            order: -1 !important;
          }
          #tabContextUndoList :is(menu,menuitem),
          #ContextUndoList :is(menu,menuitem) {
            min-height: 20px !important;
            padding-top: 0 !important; 
            padding-bottom: 0 !important;
          }
          #tabContextUndoList > menupopup:nth-child(4) {
            min-width: 500px !important;
          }
          #tabContextUndoList :is(menu, menuitem) {
            min-width: 550px !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));
      sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
        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");
        }
        // Geschlossene Tabs dem NS-Sitzungsspeicher entnehmen
        this._ss = SessionStore;
    
      },
    
      makePopup: function(popup, refItem, id){
        var menu;
        //label
        const locale = "de";
        
        // "Liste Kürzlich geschlossener Fenster"
        menu = document.createXULElement("menu");
        menu.setAttribute("id", "historyUndoWindowMenu3");
        menu.setAttribute("label", "K\u00FCrzlich geschlossene Fenster");
        menu.setAttribute("accesskey", "F");
        menu.setAttribute("disabled", "true");
        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 geschosener Tabs
        const LABELTEXT = "K\u00FCrzlich geschlossene Tabs";    //create menu
        menu = document.createXULElement("menu");
        menu.setAttribute("label", LABELTEXT);
        menu.setAttribute("accesskey", "K");
        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);
    
        //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);
      },
    
      /**
       * Auffüllen, wenn das Chronik-Menü geöffnet wird
       */
      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);
    
        // Erstelle einen Separator unter dem Eintrag "Alle Tabs wieder öffnen"
        let separator = document.createXULElement("menuseparator");
        separator.classList.add("restoreall-separator");
        undoPopup.insertBefore(separator, undoPopup.children[0]);  // Direkt nach dem ersten Eintrag ("Alle Tabs wieder öffnen")
    
        // populate tab historis for tooltip
      //  var undoItems = UndoListInTabmenu._ss.getClosedTabDataForWindow(window);
      //  for (var i = 0; i < undoItems.length; i++) {
      //    var entries = undoItems[i].state ? undoItems[i].state.entries : undoItems[i].entries;
      //    var tooltiptext = "";
      //    for (var j = entries.length - 1; j > -1; j--){
      //      if (j != entries.length - 1)
      //        tooltiptext += "\n";
      //      tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title;
      //    }
      //    undoPopup.childNodes[i + 2/*restore all, sep*/].setAttribute("tooltiptext", tooltiptext);
      //  }
    
        // "Append Clear undo close tb list"
        //undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        // "Liste der letzten Tabs löschen"-Eintrag hinzufügen
        let clearListItem = undoPopup.appendChild(document.createXULElement("menuitem"));
        clearListItem.setAttribute("label", "Liste der letzten Tabs l\u00F6schen");
        clearListItem.setAttribute("accesskey", "C");
        clearListItem.addEventListener("command", () => {
            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", "C");
        m.addEventListener("command", () => {
          for (let i = SessionStore.getClosedWindowCount() -1; i >= 0; i--)
            SessionStore.forgetClosedWindow(i);
        }, false);
      }
    };
    
    // Wir sollten die Umleitung nur starten, wenn das Browser-Fenster den Startvorgang abgeschlossen hat. 
    // Andernfalls sollten wir warten, bis der Startvorgang 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");
    }
    Alles anzeigen

Unterstütze uns!

Jährlich (2026)

69,4 %

69,4% (538,17 von 775 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon