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

  • Neue Lesezeichen oben im Ordner

    • Mira_Belle
    • 22. Mai 2025 um 16:32

    StandingBill Danke. :thumbup:

  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • Mira_Belle
    • 22. Mai 2025 um 14:37

    Horstmann Mit "Freundin"?

    Aber wenn Du jetzt JavaScript-Profi bist, kann ich mich ja immer an Dich wenden.

    Och, habe gerade gesehen, dass Du das über CSS realisiert hast. Schade.
    Mit JS geht es doch auch, nur schöner, wie ich finde.

  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • Mira_Belle
    • 22. Mai 2025 um 09:27

    Sehr schöne Spielerei.
    Das Skript lädt ja gerade zu dazu ein.

    Farbspiele sind keine Herausforderung, weder bei den Symbolen,
    wenn es sich um anpassbare SVG handelt, noch bei der Schriftfarbe.

    Auch Größe und Schriftdicke sollten für Dich absolut kein Problem sein.

    Aber, ich habe da noch was!
    Ich habe gesehen, dass Du in einem Ordner über 180 Lesezeichen hast.
    Also ich finde mach ja schon nicht mehr zurecht, wenn da mehr als 10 drin sind. ^^

    Wie wäre es, einen Schwellenwert zu definieren, darf natürlich der Nutzer selbst festlegen,
    ab dem der Zählwert nicht mehr "normal" angezeigt wird, sondern FETT und ROT?
    Wobei auch das Fett und die Schriftfarbe vom Nutzer "eingestellt" werden sollte.

    Ich mein' ja nur, damit Dir am Ende nicht langweilig wird.

  • extras_config_menu.uc.js in Fx 139 keine Funktion mehr

    • Mira_Belle
    • 21. Mai 2025 um 20:55

    omar1979 Ist doch recht einfach!
    1. Eintrag "Firefox Verzeichnisse" führt zu den verschiedenen Ordner, z.B. "Profil-Verzeichniss", .... , bis "Startup-Cache".
    D. h. wenn Du da drauf klickst, öffnet sich der Explorer mit entsprechenden Ordner.

    2. Eintrag "Firefox Funktionen", auch selbsterklärend! Öffnet die jeweilige Firefoxfunktion.
    "Anpassen", bis "Offline arbeiten"!

    Danach gibt es noch, getrennt durch einen Separator, 'Neustart' & 'Beenden'.

  • Diskussion über neues Unterforum nur für Skripte

    • Mira_Belle
    • 21. Mai 2025 um 09:14

    Mach einfach einen Thread auf und schaue, was daraus wird.
    Grundsätzlich wäre ich dabei, aber ich werde mich für so etwas nicht mehr ins Zeug werfen.

  • extras_config_menu.uc.js in Fx 139 keine Funktion mehr

    • Mira_Belle
    • 20. Mai 2025 um 21:06

    Ich stelle hier mal "mein" Skript rein, dass ohne Veränderungen in about:config auskommt und auch in der Nightly funktioniert.

    JavaScript
    // ==UserScript==
    // @name           Appmenu.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
    // @version        2025.01.15 EventListener korrigiert und angepasst, by Mira Bellenbaum
    // @version        2025.04.03 Zeile 340 "eval()" ersetzt. Nachfolgend Zeilen 381-416 ergänzt und Parameter (command:) angepasst
    // ==/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: "f",
        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: [
    
            // 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: "goKonsole",
    //            "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: "goWerkzeuge",
    //            "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: "goEntwickler",
    //            "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",
    //          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: "goReeboot",
    //          "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.addEventListener('click', event => {
          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-5.png";
    
    
        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.width = "16px";
          ExternalAppBtn.style.height = "21px"; // Feste Höhe für kleines Symbol
        }
          
        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.addEventListener('click', event => {
          event.stopPropagation();
        });
        ExternalAppPopup.setAttribute('id', 'AMpopup');
        this._externalAppPopup = ExternalAppPopup;
        ExternalAppBtn.appendChild(ExternalAppPopup);
        Appmenu.onpopupshowing();
          
        // Menü mit Tastaturkürzel öffnen
        if (Appmenu.hotkey) {
        let key = document.createXULElement('key');
          key.id = 'key_AppMenuPopup';
          key.setAttribute('key', Appmenu.hotkey);
          if (Appmenu.hotkeyModifier)
          key.setAttribute('modifiers', Appmenu.hotkeyModifier);
        //  key.setAttribute('oncommand', 'document.getElementById("AMpopup").openPopup();');
    
          key.addEventListener('command', function () {
            document.getElementById("AMpopup").openPopup();
            });
          document.getElementById('mainKeyset').appendChild(key);
        }
      },
    
      onpopupshowing: function() {
        if (this._isready) return;
        if (this._externalAppPopup === null) return;
        var ExternalAppPopup = this._externalAppPopup;
    
        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;
          }
        }
    
        for (let app of this.toolbar.apps) {
          var appItem;
          if (app.name == 'separator') {
            appItem = document.createXULElement('menuseparator');
          } else {
            appItem = document.createXULElement('menuitem');
            appItem.setAttribute('class', 'menuitem-iconic');
            appItem.setAttribute('label', app.name);
            appItem.setAttribute('image', app.image);
            //appItem.setAttribute('oncommand', "Appmenu.exec(this.path, this.args);");
            appItem.addEventListener('command', function () {
              Appmenu.exec(this.path, this.args);
              });
            appItem.setAttribute('tooltiptext', app.name);
            appItem.path = app.path;
            appItem.args = app.args;
          }
          if (app.subdir && Appmenu.subdirPopupHash[app.subdir])
            Appmenu.subdirPopupHash[app.subdir].appendChild(appItem);
          else ExternalAppPopup.appendChild(appItem);
        }
    
        for (let config of this.toolbar.configs) {
          var configItem;
          if (config.name == 'separator') {
            configItem = document.createXULElement('menuseparator');
          } else {
            configItem = ExternalAppPopup.appendChild(document.createXULElement('menuitem'));
            configItem.setAttribute('class', 'menuitem-iconic');
            configItem.setAttribute('label', config.name);
            configItem.setAttribute('image', config.image);
            //configItem.setAttribute('oncommand', config.command);
    //        configItem.addEventListener('command', () => {
    //          eval(config.command);
    //        });
    
            configItem.addEventListener('command', () => {
              Appmenu.executeCommand(config.command);
            });
    
            if (config.tooltiptext) {
              configItem.setAttribute('tooltiptext', config.tooltiptext);
            } else {
              configItem.setAttribute('tooltiptext', config.name);
            }
            configItem.setAttribute('id', config.id);
          }
              
          if (config.subdir && Appmenu.subdirPopupHash[config.subdir]) {
            Appmenu.subdirPopupHash[config.subdir].appendChild(configItem);
          } else {
            ExternalAppPopup.appendChild(configItem);
          }
        }
    
        if (this.autohideEmptySubDirs) {
          for (let i = 0; i < Appmenu.subdirPopupHash.length; i++) {
            if (Appmenu.subdirPopupHash[i].hasChildNodes()) {
              continue;
            } else {
              Appmenu.subdirMenuHash[i].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;
      },
    
      executeCommand: function(command) {
        const commandMap = { 
          "gCustomizeMode.enter()": () => gCustomizeMode.enter(),
          "safeModeRestart();": () => safeModeRestart(),
          "goKonsole": () => {
                  var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
                  var { BrowserConsoleManager } = require('resource://devtools/client/webconsole/browser-console-manager');
                  BrowserConsoleManager.openBrowserConsoleOrFocus();
                },
          "goWerkzeuge": () => {
                  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();
                },
          "goEntwickler": () => {
                  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());
                },
          "gSync": () => gSync.openPrefs('menubar'),
          "LoginHelper.openPasswordManager(window, { entryPoint: 'mainmenu' })": () => LoginHelper.openPasswordManager(window, { entryPoint: 'mainmenu' }),
          "switchToTabHavingURI('about:processes', true)": () => switchToTabHavingURI('about:processes', true),
          "BrowserOffline.toggleOfflineStatus();": () => BrowserOffline.toggleOfflineStatus(),      
          "goReeboot": () => {
                    Services.appinfo.invalidateCachesOnRestart();
                    Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
                  },
          "goQuitApplication(event);": () => goQuitApplication(event),
        };
        
        if (commandMap[command]) {
          commandMap[command]();
        } else {
          console.warn("Unbekannter Befehl: ", command);
        }
      },
    
      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()) {
          //Cu.reportError('Datei nicht gefunden: ' + path);
          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(`
      
              menuitem[label="Profil-Verzeichniss"] { 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;
                            }
              menuitem[label="Chrome-Ordner"] { 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; 
                            }
              menuitem[label="CSS-Ordner"] { 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;                       
                            }
              menuitem[label="JS-Ordner"] { 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;                       
                            }
              menuitem[label="Addon-Verzeichniss"] { 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;                       
                            }
              menuitem[label="Programm-Verzeichniss"] { 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;                       
                            }
              menuitem[label="Startup-Cache"] { 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: 10px !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: 10px !important; /* Platz für das Symbol lassen */
                  -moz-context-properties: fill, fill-opacity !important;
                  fill: red !important;
              }
      
          `),
          null,
          null
        );
      
        // CSS-Regeln registrieren
        sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
      })();
      
      if (window.gBrowser) Appmenu.init();
    Alles anzeigen

    Wie immer, es darf gebastelt werden.

  • Menü "Einstellungen" erfordert neuerdings Passwort

    • Mira_Belle
    • 20. Mai 2025 um 15:59
    Zitat von scotti

    Nach einer kompletten Neuinstallation ist das Problem immer noch vorhanden. Jetzt muss ich sogar zwei mal auf "Abbrechen" klicken.

    Eventuell gar kein Firefox-Problem!?
    Wenn auch andere Zugriff auf Deinen Rechner haben, warum nicht die von Windows bereitgestellte Möglichkeit nutzen?

  • Entwicklung Firefox

    • Mira_Belle
    • 20. Mai 2025 um 10:30
    Zitat von Sören Hentzschel

    Wieso überrascht dich das?

    Erstaunt ich bin.
    Habe ich doch in der aktuellen Version diesen Schalter ausprobiert, und es funktionierte.
    Aber wieder gelöscht, da es mir nichts brachte.

  • Menü "Einstellungen" erfordert neuerdings Passwort

    • Mira_Belle
    • 20. Mai 2025 um 08:45

    :/ Aber Du schriebst doch, dass Du das "Masterpasswort" aktiviert hast. Warum, wenn Du es doch gar nicht brauchst?
    Das kann ich gerade nicht nachvollziehen.

    Lass das deaktiviert und es sollte gut sein, denke ich.

  • Entwicklung Firefox

    • Mira_Belle
    • 20. Mai 2025 um 08:41
    Zitat von Sören Hentzschel

    In diesem Thema geht es immer um die Nightly-Version.

    Oh. 8|

  • Entwicklung Firefox

    • Mira_Belle
    • 19. Mai 2025 um 23:46

    <3lichen Dank.

  • Entwicklung Firefox

    • Mira_Belle
    • 19. Mai 2025 um 21:09

    Und wo und wie kann man diese lokalen KI-Modelle herbekommen?

  • Menü "Einstellungen" erfordert neuerdings Passwort

    • Mira_Belle
    • 19. Mai 2025 um 15:37
    Zitat von scotti

    Wie bekomme ich den früheren Zustand denn wieder hin?

    :/ Wofür?

  • Firefox kaputt

    • Mira_Belle
    • 19. Mai 2025 um 15:34
    Zitat

    Allerdings hätte das Moskauer Unternehmen im Zweifel keine Wahl. Denn in Russland gibt es Gesetze, mit denen Kaspersky gezwungen werden könnte, Rechner im Ausland anzugreifen oder auszuspionieren. Für die USA Grund genug für ein Verbot. Und auch die Niederlande und Litauen schätzen die Software bereits seit Jahren als Bedrohung ein.

    Mh, :/.

    Trifft aber genau SO auch auf alle Software aus den USA zu:!:
    Auf des Orangen geheiß, alle Dienste für den Internationalen Gerichtshof in Den Haag gekappt!
    Und einige UNI's in China wurden auch die Dienste gekündigt und verweigert.

  • Menü "Einstellungen" erfordert neuerdings Passwort

    • Mira_Belle
    • 19. Mai 2025 um 08:26

    Hast Du in den Einstellungen unter "Datenschutz & Sicherheit" \ "Passwörter"
    den Punkt "Hauptpasswort verwenden" aktiviert?

    Denn

    Zitat

    Wichtig: Wenn Sie ein Hauptpasswort definiert und festgelegt haben, werden Sie einmal pro Browsersitzung danach gefragt, sobald Firefox auf die durch das Hauptpasswort geschützten Zugangsdaten zugreifen muss. Das trifft auch dann zu, wenn Sie ein Passwort hinzufügen, entfernen oder anzeigen möchten.

  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • Mira_Belle
    • 18. Mai 2025 um 18:52
    Zitat von Horstmann

    PS: Ab Fx 139 sollte das alte Script nicht mehr funktionieren, und evtl. kommen dann Anfragen und weitere Kommentare; ...

    Nach Belieben veränder, zerpflücken und anpassen, funktioniert in der Nightly.

    JavaScript
    // BookmarkCount.uc.js
    
    /* ******************************************************************************************************************* */
    /* Author BrokenHeart               => https://www.camp-firefox.de/forum/thema/136572/?postID=1229536#post1229536 **** */
    /* Correction from BrokenHeart      => https://www.camp-firefox.de/forum/thema/136572/?postID=1229696#post1229696 **** */
    /* Extension from Sören Henschel    => https://www.camp-firefox.de/forum/thema/136572/?postID=1229555#post1229555 **** */
    /* Customized by Mira inspired by grisu2099     ********************************************************************** */
    /* Source                           => https://www.camp-firefox.de/forum/thema/136572/?postID=1229875#post1229883 **** */
    /* Customized by Mira inspired by Horstmann     ********************************************************************** */
    /* Source                           => https://www.camp-firefox.de/forum/thema/136572/?postID=1229993#post1229993 **** */
    /* Adjustments for 139 and customized by Mira inspired by Horstmann     ********************************************** */
    /* Source                           => https://www.camp-firefox.de/forum/thema/136572/?postID=1270254#post1270254 **** */
    /* ******************************************************************************************************************* */
    /* Version 1.01                     => https://www.camp-firefox.de/forum/thema/136572/?postID=1230128#post1230128 **** */
    /* Version 1.02                     => https://www.camp-firefox.de/forum/thema/136572/?postID=1230334#post1230334 **** */
    /* Version 1.03a                    => https://www.camp-firefox.de/forum/thema/136572/?postID=1270258#post1270258 **** */
    /* ******************************************************************************************************************* */
    /* Custom Counter in the Bookmarks for folders and links ************************************************************* */
    /* ******************************************************************************************************************* */
    
    (function() {
    
      if (!window.gBrowser)
          return;
    
      setTimeout(function() {
        setFunction();
      },50);
    
      //Custom icons in profile/chrome/icons folder
      let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
      let icon1 = "folder-fat.svg";                     //  Custom  Folder Icon
      let icon2 = "bookmark-hollow.svg";                //  Custom  Link Icon              
      let icon3 = "arrow-right.svg";                    //  Custom  Arrow Icon
    
      // Custom settings
      let bm_font_size = 12; 
      let cs_font_weight = 700;
      let bm_icon_size = 16;
    
      // NEU: Schriftfarbe getrennt definieren
      //let cs_font_color_1 = "#FFA500";                 // Farbe für Folder-Zähler (links)
      //let cs_font_color_2 = "#00FFFF";                 // Farbe für Link-Zähler (rechts)
      let cs_font_color_1 = "#FFD700";                 // Farbe für Folder-Zähler (links)
      let cs_font_color_2 = "#FFD700";                 // Farbe für Link-Zähler (rechts)
    
      // NEU: Symbolfarber getrennt definieren 
      //let cs_icon_color_1 = "#5fe575";                 // Farbe für "Ordner", 1.Symbol
      //let cs_icon_color_2 = "#fbf328";                 // Farbe für "Link", 2.Symbol
      //let cs_icon_color_3 = "#bbf700";                 // Farbe für den Pfeil
      let cs_icon_color_1 = "#C0C0C0";                 // Farbe für "Ordner", 1.Symbol
      let cs_icon_color_2 = "#C0C0C0";                 // Farbe für "Link", 2.Symbol
      let cs_icon_color_3 = "#C0C0C0";                 // Farbe für den Pfeil
    
    
      // Calculated settings
      let cs_font_size = `${bm_font_size}px`;
      let cs_icon_size = `${bm_icon_size}px`;
      let cs_width_one = `calc(${bm_icon_size}px + 1.4em)`;
      let cs_width_uno = `calc(${bm_icon_size}px)`;
      let cs_width_two = `calc(${bm_icon_size}px + 1.4em)`;
      let cs_width_due = `calc(${bm_icon_size}px)`;
    
      //let useStyle1 = true; // <- HIER Weiche setzen: true = Variante 1, false = Variante 2
      let useStyle = 1; // <- HIER Weiche setzen:  0 = Symbole hinter den Zählern, 1 = Symbole vor den Zählern
    
      // Symbole vor den Zählern
      let css_one = `
    
        /* Counter #1 Folder */
        #bmContent::before {
          content: attr(data-value1) !important;
          width: ${cs_width_one} !important;
          align-items: center !important;
          display: flex !important;
          justify-content: end !important;
          /*margin-inline: 16px 4px;         */               /* min. Abstand links für enge Popups, rechts zum 2ten Counter */
    
          margin-left: 16px !important;                       /* Abstand links minimum für schmale Popus  CHANGE  */
          margin-right: -1px !important;                      /* Abstand Icon "Ordner" bis zum "Zähler" */ 
    
          background-image: url("${ProfilePath}/${icon1}")!important;
          background-position: center right calc(${cs_width_one} - ${cs_icon_size}) !important;
          background-repeat: no-repeat !important;
          background-size: ${cs_icon_size} ${cs_icon_size} !important;     
          color: ${cs_font_color_1} !important;               /* Farbe der 1. Zahl */
          fill: ${cs_icon_color_1} !important;                /* Farbe des 1. Symbols */
        }
    
        /* Counter #2 Links */
        #bmContent::after {
          content: attr(data-value2) !important;
          width: ${cs_width_two} !important;
          align-items: center !important;
          display: flex !important;
          justify-content: end !important;
          /*margin-inline: -2px;*/
    
          margin-left: 4px !important;                          /* Abstand "Zähler 1" zum Icon2 */
          margin-right: -1px !important;                        /* Abstand Icon "Links" bis zum "Zähler" */
    
    
          background-image: url("${ProfilePath}/${icon2}") !important;
          background-position: center right calc(${cs_width_two} - ${cs_icon_size}) !important;
          background-repeat: no-repeat !important;
          background-size: ${cs_icon_size} ${cs_icon_size} !important;            
          color: ${cs_font_color_2} !important;                 /* Farbe der 2. Zahl */
          fill: ${cs_icon_color_2} !important;                  /* Farbe des 2. Symbols */
        }
      `;
    
      // Symbole hinter den Zählern
      let css_two = `
    
        /* Counter #1 Folder */
        #bmContent::before {
          content: attr(data-value1) !important;
          width: ${cs_width_one} !important;
          align-items: center !important;
          display: flex !important;
          justify-content: end !important;
          background-image: url("${ProfilePath}/${icon1}")!important;
          background-position: center right calc(${cs_width_uno} - ${cs_icon_size}) !important;
          background-repeat: no-repeat !important;
          background-size: ${cs_icon_size} ${cs_icon_size} !important;     
          color: ${cs_font_color_1} !important;                 /* Farbe der 1. Zahl */
          fill: ${cs_icon_color_1} !important;                  /* Farbe des 1. Symbols */
          padding: 2px 20px 0px 10px !important;                /* top | right | bottom | left */
          /*margin-inline: 0px -10px; */
    
          margin-left: 16px !important;                         /* Abstand links minimum für schmale Popus  CHANGE  */
          margin-right: 12px !important;                        /* Abstand Icon "Ordner" bis zum "Zähler" */ 
    
        }
    
      	#bmContent::after {
    			content: attr(data-value2) !important;
          width: ${cs_width_two} !important;
          align-items: center !important;
          display: flex !important;
          justify-content: end !important;
          /*justify-content: flex-end; */
          background-image: url("${ProfilePath}/${icon2}")!important;
          background-position: center right calc(${cs_width_due} - ${cs_icon_size}) !important;
          background-repeat: no-repeat !important;
          background-size: ${cs_icon_size} ${cs_icon_size} !important;            
          color: ${cs_font_color_2} !important;                 /* Farbe der 2. Zahl */
          fill: ${cs_icon_color_2} !important;                  /* Farbe des 2. Symbols */
    			padding: 2px 22px 0 0 !important;                     /* top | right | bottom | left */
    
          margin-left: -14px !important;                        /* Abstand "Zähler 1" zum Icon2 */
          margin-right: -1px !important;                        /* Abstand Icon "Links" bis zum "Zähler" */
    
    		}
      `;
    
      function setFunction() {
    
        const css =`
    
          /* Counter rechtsbuendig */
          #bmContent {
            display: flex !important;
            margin-inline: auto 0 !important;
            font-family:  Consolas, "Lucida Console", "Courier New", monospace !important;
            font-size: ${cs_font_size} !important;
            font-weight: ${cs_font_weight} !important;
            height: ${cs_icon_size} !important;
          }
    
          /* Dynamisch gewählter before-Block */
          ${useStyle ? css_one : css_two}
    
          /* Pfeil */
          menupopup > menu::after {
            content: "" !important;
            background-image: url("${ProfilePath}/${icon3}")!important;
            height: ${cs_icon_size} !important;
            height: ${cs_icon_size} !important;
            fill: ${cs_icon_color_3} !important;
          }
    
        `;
    
        const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
        const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
        sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    
        let bmbMenu = document.getElementById('bookmarks-menu-button');
        let bookMenu = document.getElementById('bookmarksMenu');
        let persToolBar = document.getElementById('PersonalToolbar');
    
        if(bmbMenu)
            bmbMenu.addEventListener('popupshowing', onPopupShowing );
        if(bookMenu)
            bookMenu.addEventListener('popupshowing', onPopupShowing );
        if(persToolBar)
            persToolBar.addEventListener('popupshowing', onPopupShowing );
      }
    
      function onPopupShowing(aEvent) {
    
        let popup = aEvent.originalTarget;
    
        for (let item of popup.children) {
          if (item.localName != 'menu' || item.id?.startsWith('history'))
            continue;
            setTimeout(() => {
              let itemPopup = item.menupopup;
    			    itemPopup.hidden = true;
    			    itemPopup.collapsed = true;
              itemPopup.openPopup();
              itemPopup.hidePopup();
              let menuitemCount = 0;
              let menuCount = 0;
              for (let subitem of itemPopup.children) {
                if (subitem.classList.contains('bookmark-item') && !subitem.disabled && !subitem.hidden) {
                  if (subitem.localName == 'menuitem') {
                    menuitemCount++;
                  } else if (subitem.localName == 'menu') {
                      menuCount++;
                    }
                }
              }
              itemPopup.hidden = false;
              itemPopup.collapsed = false;
    
              // Neues Element für Zaehler
              let bmCounta = item.childNodes[1];
                if (!bmCounta) return;                            // Falls undefiniert
              bmCounta.innerHTML = ""
              let bmContent = document.createElement("bmContent");
              bmContent.id = "bmContent";
              bmCounta.appendChild(bmContent);
    
              //let strCountOut1 = " " + menuCount + " ";         //  Has no brackets
              //let strCountOut1 = "(" + menuCount + ")";         //  Has round brackets
              //let strCountOut1 = "[" + menuCount + "]";         //  Has square brackets
              let strCountOut1 = String(menuCount).padEnd(2, " ");
              bmContent.setAttribute('data-value1', strCountOut1);
    
              //let strCountOut2 = " " + menuitemCount + " ";      //  Has no brackets
              //let strCountOut2 = "(" + menuitemCount + ")";      //  Has round brackets
              //let strCountOut2 = "[" + menuitemCount + "]";      //  Has square brackets
        //      let strCountOut2 = String(menuitemCount).padEnd(2, " ");
        //      bmContent.setAttribute('data-value2', strCountOut2);
    
              let strCountOut2 = (useStyle === 0) 
                ? String(menuitemCount).padStart(4, "/  ")
                : String(menuitemCount).padEnd(2, " ");
              bmContent.setAttribute('data-value2', strCountOut2);
              
            }, 100);
        }
      }
    })();
    Alles anzeigen
  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • Mira_Belle
    • 18. Mai 2025 um 14:16

    Vorschlag.

    JavaScript
        // Variable zur Auswahl der Klammern
        let out = 0; // 0 für "ohne Klammern", 1 für "runde Klammern", 2 für "eckige Klammern"

    und ganz unten dann:

    JavaScript
                  //Zaehler Design Optionen => mit, ohne, eckige, runde Klammern
                  let strCountOut1, strCountOut2;
    
                  if (out === 0) {
                      strCountOut1 = "" + menuCount + "";
                      strCountOut2 = "" + menuitemCount + "";
                  } else if (out === 1) {
                      strCountOut1 = "(" + menuCount + ")";
                      strCountOut2 = "(" + menuitemCount + ")";
                  } else if (out === 2) {
                      strCountOut1 = "[" + menuCount + "]";
                      strCountOut2 = "[" + menuitemCount + "]";
                  }
    
                  bmVario.setAttribute('data-value1', strCountOut1);
                  bmVario.setAttribute('data-value2', strCountOut2);
    Alles anzeigen
  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • Mira_Belle
    • 18. Mai 2025 um 11:02

    Nur, wenn Du möchtest!!

    Du könntest oben Variablen definieren, die die Einstellung für das Klammergedöhns vereinfachen,
    und niemand müsste im Code groß was verändern.
    Einfach eine "0" für ohne, eine "1" für runde oder eine "2" für eckige Klammern.

    Und das mit der Trennlinie ließe sich auch so lösen.
    "0" keine, "1" eine Trennlinie, ginge auch mit true & false.

    Aber ist nur so eine Idee und muss ja auch nicht sein.
    Finde Dein Skript gut. :thumbup:

  • Youtube - wie Download ?

    • Mira_Belle
    • 17. Mai 2025 um 17:25

    Dato Wenn Du das unbedingt mit einem Rechtsklick machen möchtest,
    dann in Zeile 58 "if (event.button == 0) {" zu "if (event.button == 2) {" ändern.

  • Beenden Button

    • Mira_Belle
    • 17. Mai 2025 um 12:59
    Zitat von BrokenHeart

    In deinem Beispiel hast du der Funktion aber keinen Namen verpasst, sondern du hast einen "Parameter" übergeben?!

    Oh, stimmt, da war was!
    In der Klammer nicht keine "Namen" oder "Bezeichnungen" sondern Parameter!
    Solche Sachen vergesse ich hin und wieder. Danke für den "Klaps".

Unterstütze uns!

Jährlich (2025)

94,2 %

94,2% (612,48 von 650 EUR)

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