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. Endor

Beiträge von Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 15. August 2026 um 08:31

    Mira_Belle

    Danke.

    Ist erledigt:

    userChrome.js/Firefox 153 at master · Endor8/userChrome.js
    Skripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.
    github.com

    Mfg.
    Endor

  • 1 Script funktioniert nicht mehr und ich weiss nicht, welches es von diesen 2 (Zusatzleisten) ist.

    • Endor
    • 14. August 2026 um 11:56

    omar1979

    das Script verticale addonbar wurde nochmals aktualisiert.

    Siehe hier:

    CustomJSforFx/scripts/addonbar_vertical.uc.js at master · Aris-t2/CustomJSforFx
    custom scripts. Contribute to Aris-t2/CustomJSforFx development by creating an account on GitHub.
    github.com

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 13. August 2026 um 15:25

    Danke für den Hinweis.:thumbup:


    Habe ich hier bereits entsprechend geändert.

    Zeile 52: tooltiptext: "Extra Config Menü\nMittelklick öffnet about:config"

    Wenn Mira_Belle Ihr Ok gibt lade ich diese Version dann bei mir rauf.
    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 13. August 2026 um 15:17

    Prima. Danke für den Test.

    Dann würde ich es so lassen. Wenn Mira_Belle einverstanden ist,
    also mit Mittel Klick.

    Bei Rechts klick in Windows öffnet sich standardmäßig das selbe Menü
    wie in Linux. Nur wenn es im Script anders definiert ist funktioniert das
    mir Rechts Klick.

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 13. August 2026 um 15:04

    Mitleser

    Gerne. Ich ziehe auch dem Mittel klick vor.
    Funktioniert das nun so bei Dir?

    Ich habe Windows und kann es daher nicht testen.

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 13. August 2026 um 14:31

    Hallo zusammen.
    Hallo Mira_Belle!
    Ja mit dem Original Script öffnet sich bei Mittelklick about:config hier in einem neuen Tab.
    Beim aktuellen Script von Dir öffnet es sich mit rechts klick.

    Schöne Reise und erhole dich gut.
    Viele Grüße
    Endor


    Mitleser

    Zeile 64

    if (event.button == 2 && !this.open) {

    so ändern:

    if (event.button == 1 && !this.open) {

    dann funktioniert es wieder mit Mittelklick.
    Mfg.
    Endor

  • Der Glückwunsch-Thread

    • Endor
    • 13. August 2026 um 13:59

    Hallo milupo.

    Auch von mir alles alles Gute zum Geburtstag.
    Vor allem viel Gesundheit, aber auch Glück und Wohlergehen,
    wünsche ich Dir von ganzem Herzen.

    Viele Grüße
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 11. August 2026 um 08:57
    Zitat von FuchsFan

    Wenn ich mich mal einmischen darf

    immer :thumbup:

    Ok. Dann belasse ich es mal so wie ich es jetzt habe.
    Teste aber Deine Version weiter.

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 11. August 2026 um 08:12

    Hallo Mira_Belle.

    Woran ich das fest gemacht habe ;)

    Deine Version hat auf Anhieb funktioniert, die von FuchsFan nicht.
    Nun habe ich bemerkt, dass der Grund dafür vor dem PC saß. <X
    Spricht hatte beim einbauen eine Fehler gemacht.
    Nun funktioniert die auch bestens. Und nun weiß ich nicht welche
    Version besser ist. Hast Du eine Empfehlung für mich?

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 10. August 2026 um 20:09

    Ist nun auf Github zu finden:

    userChrome.js/Firefox 153/extras_config_menu.uc.js at master · Endor8/userChrome.js
    Skripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.
    github.com

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 10. August 2026 um 16:39

    Hallo FuchsFan und Mira_Belle

    Vielen vielen Dank für Eure Mühe.
    Habe jetzt Mira_Belles Version genommen.
    Werde diese dann auch bei Github hochladen.
    Funktioniert in alles Versionen 153, 154 Beta und 155 Nightly.

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 10. August 2026 um 12:37
    Zitat von FuchsFan

    schalter immer wieder auf true

    Hast Du eine user.js Datei im Profil, wenn ja vielleicht hast Du da ja etwas entsprechendes drinnen.

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 10. August 2026 um 12:36

    Ja, danke.
    Wäre halt aus Sicherheits- Gründen vielleicht besser,
    wenn es das nicht mehr bräuchte.

    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 10. August 2026 um 12:20

    Das ist aber schade. Hatte gehofft jemand findet dafür eine Lösung.

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 10. August 2026 um 12:14

    Generell.

    Teste jetzt mal FuchsFan s Version
    Mfg.
    Endor

  • extra_config_menu.uc.js > ohne security.allow_unsafe_dangerous_privileged_evil_eval auf false

    • Endor
    • 10. August 2026 um 12:10

    Hallo Mira_Belle .
    Funktioniert das Script extra_config_menu.uc.js bei Dir , bzw. Euch
    wenn in about:config security.allow_unsafe_dangerous_privileged_evil_eval auf false steht?
    Hier nicht. Das ist die von mir verwendete Version:

    CSS
    // ==UserScript==
    // @name           extras_config_menu.uc.js
    // @compatibility  Firefox 141*.*
    // @include        main
    // @version        1.0.20251030
    // @edit           @aborix 7/21 CSS Dateien als Untermenü eingefügt 
    // @edit           @2002Andreas 8/21 Shadow CSS Dateien als Untermenü + Ordner eingefügt 
    // @edit           @BrokenHeart 1/25 Anpass. wg. Änderung der Sicherheitsrichtlinien bei 'inlineEvents'
    // ==/UserScript==
    var uProfMenu = {
      // Beginn der Konfiguration
      // In der folgenden Zeile (11) den Pfad zum Texteditor eintragen (unter Ubuntu 10.04 z.B.: '/usr/bin/gedit'). Bei Fehleintrag wird view_source.editor.path ausgelesen:
      //TextOpenExe: 'C:\\Program Files (x86)\\Notepad++\\notepad++.exe',
      TextOpenExe: 'C:\\Program Files\\Notepad++\\notepad++.exe',
      // Falls gewuenscht, in Zeile 15 einen Dateimanager eintragen (komplett leer lassen fuer Dateimanager des Systems) Beispiele:
      // vFileManager: 'E:\\Total Commander\\Totalcmd.exe',
      // vFileManager: 'C:\\Program Files (x86)\\FreeCommander\\FreeCommander.exe'
      vFileManager: '',
      // In der folgenden Zeile (19) 'menu' eintragen, damit es unter "Extras" als Menue erscheint, sonst die id des gewuenschten
      // Elements *nach* dem der Button erscheinen soll (z.B. 'urlbar', 'searchbar', 'undoclosetab-button','abp-toolbarbutton')
      // Bitte nicht so etwas wie die Menue- oder Navigationsleiste (sondern einen Menuepunkt oder einen Button mit id auf diesen Leisten) eintragen:
      warpmenuto: 'usercssloader-menu',
      // Unter Linux sollte/kann versucht werden, die userChromeJS-Skripte zu sortieren, unter Windows ist das evtl. nicht noetig (die Sortierung wird Gross- und Kleinschreibung *nicht*     beruecksichtigen - dazu wird die sort()-Funktion entsprechend mit einer Vergleichsfunktion aufgerufen)
      sortScripts: 0,   // 1 zum Erzwingen der Sortierung
      // Einbindung GM-Skripte-Ordner (0: nein, 1: Greasemonkey [Profil-Verzeichnis], 2: UserScriptLoader [Chrome-Verzeichnis], 3: Scriptish [Profil-Verzeichnis]):
      gmOrdner: 0,
      // Einbindung CSS-Ordner (0: nein, 1: UserCSSLoader-Ordner im Chrome-Verzeichnis):
      cssOrdner: 1,
      CSSWebOrdner: 1,
      // In Zeile 30 gueltige about:Adressen eintragen, die ebenfalls aufgerufen werden sollen.
      // - Zum Ausblenden: abouts: [],
      // - Damit die about:-Seiten nicht als Untermenue, sondern direkt als Menuepunkte aufgefuehrt werden, muss das erste Element '0' sein:
      // abouts: ['0','about:about','about:addons','about:cache','about:config','about:support'],
      abouts: ['about:about','about:addons','about:cache','about:config','about:crashes','about:downloads','about:home','about:logins','about:memory','about:support','about:preferences','about:performance','about:profiles'],
      // Die normalen Firefox-Einstellungen auch zur Verfuegung stellen (0: nein, 1: ja):
      showNormalPrefs: 1,
      // Stellt "Skriptliste in Zwischenablage" zur Verfuegung (1: ja, 2: mit getrennter Nummerierung, 3: mit gemeinsamer Nummerierung) oder nicht (0):
      enableScriptsToClip: 2,
      // Um den Eintrag "Neustart" zu erzwingen (falls z.B. das andere Skript zu spaet eingebunden und nicht erkannt wird), auf 1 setzen:
      enableRestart: 1,
      // Ende der Konfiguration
    
      init: function() {
        if (this.warpmenuto.toLowerCase() == 'menu') {
          // aufgrund des gewaehlten warpmenuto als Untermenue von Extras anlegen
          var zielmenu = document.getElementById('menu_ToolsPopup');
          if (zielmenu==null) {
            userChrome.log("extras_config_menu.uc.js findet Zielmenue nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
                           "geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
                           "von 'zielmenu' kontrollieren.");
            return
          }
          var menu = zielmenu.appendChild(this.createME("menu","Config Men\u00FC",0,0,"ExtraConfigMenu"));
          menu.setAttribute("class","menu-iconic");
          menu.setAttribute("ondblclick","openTrustedLinkIn('about:config', 'tab');");
         } else {
    
          // als verschiebbaren Button anlegen
          if (window.__SSi == "window0") {
            CustomizableUI.createWidget({
              id: "ExtraConfigMenu-button",
              defaultArea: CustomizableUI.AREA_NAVBAR,
              label: "Extra Config Menü",
              tooltiptext: "Extra Config Menü\nMittelklick \öffnet about:config"
            });
          }
          var menu = document.getElementById("ExtraConfigMenu-button");
          menu.setAttribute("type", "menu");
          menu.addEventListener('click', function(event) {
                if (event.button == 1 && !this.open) { 
                    openTrustedLinkIn("about:config", "tab");
                    event.preventDefault();
                };
         },true);
    	}
    	
        //ab hier ist alles gleich, egal ob Button oder Menue
        var css = " \
          #ExtraConfigMenu, #ExtraConfigMenu-button { \
            list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII=)  \
          } \
          #ExtraConfigMenu-button > dropmarker, #ExtraConfigMenu-button > hbox > .toolbarbutton-menu-dropmarker { \
            display: none !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.AGENT_SHEET);
        menu.addEventListener('popupshowing', function(event) {
                uProfMenu.getScripts(0);
                uProfMenu.getCss(3);
                uProfMenu.getCss(4);
                uProfMenu.getCss(5);
         },true);
    	 
        var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup"));
        // Anlegen von Untermenues fuer userChromeJS-Skripte und CSS-Dateien (befuellen spaeter)
        var submenu = menupopup.appendChild(this.createME("menu","Meine Scripte",0,0,"submenu-ucjs"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucjs-items"));
        // var submenu = menupopup.appendChild(this.createME("menu","uc.xul",0,0,"submenu-ucxul"));
        // var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucxul-items"));
        var submenu = menupopup.appendChild(this.createME("menu","css",0,0,"submenu-css"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-css-items"));
        var submenu = menupopup.appendChild(this.createME("menu","CSSShadow",0,0,"submenu-CSSShadow"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-CSSShadow-items"));
        var submenu = menupopup.appendChild(this.createME("menu","cssweb",0,0,"submenu-cssweb"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-cssweb-items"));
        if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0));
        // Ende Anlegen von Untermenues
        menupopup.appendChild(document.createXULElement('menuseparator'));
        // Einbindung von Konfigdateien
        menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(0,'userChrome.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userChromeShadow.css","uProfMenu.edit(0,'userChromeShadow.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(0,'userContent.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(0,'userChrome.js');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","prefs.js","uProfMenu.edit(1,'prefs.js');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","user.js","uProfMenu.edit(1,'user.js');","uProfMenu_edit"),0);
    
        // Ende Einbindung von Konfigdateien
        menupopup.appendChild(document.createXULElement('menuseparator'));
        // Einbindung von Ordnern
        switch (this.gmOrdner) {
          case 1:
            menupopup.appendChild(this.createME("menuitem","GM-skripty","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0);
            break;
          case 2:
            menupopup.appendChild(this.createME("menuitem","USL-skripty","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0);
            break;
          case 3:
            menupopup.appendChild(this.createME("menuitem","Skripty Scriptish","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0);
            break;
        }
    
        menupopup.appendChild(this.createME("menuitem","CSSShadow-Ordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSSShadow');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","CSSWeb-Ordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSSWeb');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","CSS-Ordner ","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'css');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Chromeordner","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Profilordner","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Installationsordner","uProfMenu.prefDirOpen('CurProcD');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Addonordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Startup-Cacheordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0);
      /*   menupopup.appendChild(this.createME("menuitem","Ordner about","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'about');","uProfMenu_folder"),0); */
        // Ende Einbindung von Ordnern
        // Einbindung von abouts
        if (this.abouts.length>0) {
          menupopup.appendChild(document.createXULElement('menuseparator'));
          // falls der erste Eintrag des Arrays = '0' ist, dann kein Untermenue anlegen, sondern direkt als Menuepunkte einbinden
          if (this.abouts[0]=='0') {
            for (var i = 1; i < this.abouts.length; i++) {
            menupopup.appendChild(this.createME("menuitem",this.abouts[i],"openTrustedLinkIn('"+this.abouts[i]+"','tab')","uProfMenu_about"),0);
            }
           } else {
            // der erste Eintrag des arrays ist ungleich '0', deshalb als Untermenue einrichten
            var submenu = menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-about"));
            var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-about-items"));
            this.fillMenu("submenu-about","submenu-about-items", "about:",this.abouts,"uProfMenu_about",1);
          }
        }
        // Ende Einbindung von abouts
        // Separator, falls dieser nicht schon durch abouts generiert wurde und weitere Menuepunkte folgen werden
        if (this.abouts.length==0 && (this.showNormalPrefs || typeof(ToolRstartMod) != "undefined")) menupopup.appendChild(document.createXULElement('menuseparator'));
        // Falls gewuenscht (s. Konfigurationsabschnitt), Zugriff auf die normalen Einstellungen
        if (this.showNormalPrefs) menupopup.appendChild(this.createME("menuitem","Einstellungen","try{openOptionsDialog();}catch(e){openPreferences();}","uProfMenu_prefs"),0);
        //Neustart Eintrag einfügen
        if(this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart",
        "Services.appinfo.invalidateCachesOnRestart(); Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit,0);"));
      },
    
      getDirSep:function() {
        // Betriebssystem nach https://developer.mozilla.org/en/Code_snippets/Miscellaneous ermitteln
        var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
        var dirsep = "/";
        switch(osString) {
          case "WINNT":
            dirsep = "\\";
            break;
          case "Linux":
            dirsep = "/";
            break;
          case "Darwin":
            dirsep = "/";
            break;
        }
        return dirsep;
      },
    
      edit:function(OpenMode,Filename){
        var Path = "";
        var dSep = this.getDirSep();  // die Trennzeichen zwischen Ordnern abhaengig vom Betriebssystem machen
        switch (OpenMode){
          //Current is Chrome Directory
          case 0:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename;
            break;
          //Current is Profile Directory
          case 1:
            var Path = this.getPrefDirectoryPath("ProfD") + dSep + Filename;
            break;
          //Current is Root
          case 2:
            var Path = Filename;
            break;
          //Current is CSS folder
          case 3:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + "CSS" + dSep + Filename;
            break;
          //Current is CSSWeb folder
          case 4:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + "CSSWeb" + dSep + Filename;
            break;
            //Current is CSSShadow folder
          case 5:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + "CSSShadow" + dSep + Filename;
            break;
        }
        this.launch(this.TextOpenExe,Path);
      },
    
      dirOpen:function(Path){
        if (this.vFileManager.length != 0) {
          var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
          var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
          var args = [Path];
          file.initWithPath(this.vFileManager);
          process.init(file);
          // Verzeichnis mit anderem Dateimanager oeffnen
          process.run(false, args, args.length);
         } else {
          // Verzeichnis mit Dateimanager des Systems oeffnen
          var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          dir.initWithPath(Path);
          dir.launch();
        }
      },
    
      prefDirOpen:function(prefDir){
        Path = this.getPrefDirectoryPath(prefDir);
        this.dirOpen(Path);
      },
    
      getPrefDirectoryPath:function(str){
        // get profile directory
        var file = Components.classes["@mozilla.org/file/directory_service;1"]
          .getService(Components.interfaces.nsIProperties)
          .get(str, Components.interfaces.nsIFile);
        if (str == 'CurProcD') {
          file = file.parent;
        };
        return file.path;
      },
    
      launch:function(RanPath,OpenPath){
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
        var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
        var args = [OpenPath];
        file.initWithPath(RanPath);
        // falls der im Konfigurationsabschnitt definierte Editor nicht gefunden wird, auf Einstellung in about:config ausweichen:
        if (!file.exists()) {
          var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
          RanPath = pref.getCharPref("view_source.editor.path");
          file.initWithPath(RanPath);
        }
        proc.init(file);
        proc.run(false, args, args.length);
      },
    
      stringComparison:function(a, b){
        a = a.toLowerCase();
        a = a.replace(/ä/g,"a");
        a = a.replace(/ö/g,"o");
        a = a.replace(/ü/g,"u");
        a = a.replace(/ß/g,"s");
        b = b.toLowerCase();
        b = b.replace(/ä/g,"a");
        b = b.replace(/ö/g,"o");
        b = b.replace(/ü/g,"u");
        b = b.replace(/ß/g,"s");
        return(a==b)?0:(a>b)?1:-1;
      },
    
      getScripts:function(iType) {
        // Arrays (jeweils ein Array fuer uc.js und uc.xul) nehmen Namen der gefundenen Skripte auf
        let ucJsScripts = [];
        let ucXulScripts = [];
        // Suchmuster, also die Dateierweiterungen uc.js und uc.xul
        let extjs = /\.uc\.js$/i;
        //let extxul = /\.uc\.xul$/i;
        let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path);
        // files mit Eintraegen im Chrome-Ordner befuellen
        let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
        // Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind
        while (files.hasMoreElements()) {
          let file = files.getNext().QueryInterface(Ci.nsIFile);
          // keine gewuenschte Datei, deshalb continue
          //if (!extjs.test(file.leafName) && !extxul.test(file.leafName)) continue;
          // uc.js gefunden -> im Array ablegen
          if (extjs.test(file.leafName)) ucJsScripts.push(file.leafName);
          // uc.xul gefunden -> im Array ablegen
          //if (extxul.test(file.leafName)) ucXulScripts.push(file.leafName);
        }
        if (this.sortScripts) {
          ucJsScripts.sort(this.stringComparison);
          //ucXulScripts.sort(this.stringComparison);
        }
        // Aufruf der naechsten Methoden um die beiden Untermenues oder die Zwischenablage zu befuellen
        if (iType==0) {
          this.fillMenu("submenu-ucjs","submenu-ucjs-items", "Meine Scripte",ucJsScripts,"uProfMenu_ucjs",0);
          //this.fillMenu("submenu-ucxul","submenu-ucxul-items", "uc.xul",ucXulScripts,"uProfMenu_ucxul",0);
         } else {
          var result = this.fillClipboardValue(ucJsScripts,ucXulScripts);
          Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(result);
        }
      },
    
      getCss:function(iType) {
        // Array nimmt Namen der gefundenen css-Dateien auf
        let cssFiles = [];
        // Suchmuster, also die Dateierweiterung css
        let extcss = /\.css$/i;
        let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        if (iType==3) {
          aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+this.getDirSep()+"CSS");
         } else if (iType==4) {
          aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+this.getDirSep()+"CSSWeb");
        }  else if (iType==5) {
          aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+this.getDirSep()+"CSSShadow");
        }
        // files mit Eintraegen im CSS- bzw. CSSWeb-Ordner befuellen
        let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
        // Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind
        while (files.hasMoreElements()) {
          let file = files.getNext().QueryInterface(Ci.nsIFile);
          // css gefunden -> im Array ablegen
          if (extcss.test(file.leafName)) cssFiles.push(file.leafName);
        }
        if (this.sortScripts) {
          cssFiles.sort(this.stringComparison);
        }
        // Untermenue befuellen
        if (iType==3) {
          this.fillMenu("submenu-css","submenu-css-items","Meine CSS-Dateien",cssFiles,"uProfMenu_css",3);
         } else if (iType==4) {
          this.fillMenu("submenu-cssweb","submenu-cssweb-items","Meine CSSWeb-Dateien",cssFiles,"uProfMenu_css",4);
        }  else if (iType==5) {
          this.fillMenu("submenu-CSSShadow","submenu-CSSShadow-items","Meine CSSShadow-Dateien",cssFiles,"uProfMenu_css",5);
        }
      },
    
      fillMenu:function(whichsubmenu, whichsubmenuitems, strlabel, scriptArray,sClass,sTyp) {
        // Beschriftung des Untermenues mit Anzahl der gefundenen Dateien ergaenzen
        var e = document.getElementById(whichsubmenu);
        e.setAttribute('label',strlabel + ' (' + scriptArray.length + ')');
        var popup = document.getElementById(whichsubmenuitems);
        // zunaechst Untermenue zuruecksetzen
        while(popup.hasChildNodes()){
          popup.removeChild(popup.firstChild);
        }
        // Untermenue endlich befuellen
        for (var i = scriptArray.length-1; i > -1; i--) {
          // Typunterscheidung (userChromeJS-Skript oder about: oder css)
          if (sTyp==0){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0);
            mitem.addEventListener('click', function(event) {
                uProfMenu.openAtGithub(event,'"+scriptArray[i]+"');
                event.preventDefault();
            },true);
            mitem.setAttribute("tooltiptext"," Linksklick: Bearbeiten,\n Mittelklick: https://github.com/.../"+this.cleanFileName(scriptArray[i])+" oeffnen,\n Rechtsklick: Suche auf GitHub");
           } else if (sTyp==1){
            var mitem = this.createME("menuitem",scriptArray[i],"openTrustedLinkIn('"+scriptArray[i]+"','tab')",sClass,0);
           } else if (sTyp==3){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(3,'"+scriptArray[i]+"')",sClass,0);
           } else if (sTyp==4){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(4,'"+scriptArray[i]+"')",sClass,0);
          }
          else if (sTyp==5){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(5,'"+scriptArray[i]+"')",sClass,0);
          }
          popup.insertBefore(mitem, popup.firstChild);
        }
      },
    
      fillClipboardValue:function(sArray,xArray) {
        var retValue;
        var s = 0;
        var x = 0;
        s = sArray.length;
        x = xArray.length;
        switch(this.enableScriptsToClip) {
          case 1:
            retValue = "userChromeJS/uc.js ("+s+"):\n------------------------\n"+sArray.join("\n")+
                       "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------\n"+xArray.join("\n");
            break;
          default:
            retValue = "userChromeJS/uc.js ("+s+"):\n------------------------";
            for (var i = 0; i < s ; i++) {
              j = i + 1;
              retValue = retValue + "\n" + j + ". " + sArray[i];
            }
            retValue = retValue + "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------";
            if (this.enableScriptsToClip==2) s = 0;
            for (var i = 0; i < x ; i++) {
              j = i + s + 1;
              retValue = retValue + "\n" + j + ". " + xArray[i];
            }
            break;
        }
        return retValue;
      },
    
      createME:function(sTyp,sLabel,sCommand,sClass,sId) {
        // Anlegen von menuitem, menu oder menupop - fuer bestimmte Typen nicht eingesetzte Parameter werden als 0 uebergeben
        const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        var m = document.createElementNS(XUL_NS, sTyp);
        switch (sTyp) {
          case "menuitem":
            // this.createME("menuitem","Label des Items","ZuzuweisenderCodeFueroncommand","GewuenschteKlasseDesItems",0)
            m.setAttribute('label', sLabel);											 
            m.setAttribute('class',sClass);
            m.addEventListener('command', function(event) {
                Function("return " + sCommand)();
            }, true);
    		
            break;
          case "menu":
            // this.createME("menu","Label des Menues",0,0,"GewuenschteIdDesMenues")
            m.setAttribute('label', sLabel);
            m.setAttribute('id', sId);
            break;
          case "menupopup":
            //this.createME("menupopup",0,0,0,"GewuenschteIdDesMenupopups");
            m.setAttribute('id', sId);
            break;
        }
        return m;
      },
      openAtGithub:function(e,sScript) {
        if (e.button==1){
          // Mittelklick - Seite auf GitHub oeffnen (funktioniert nur, wenn Ordner- und bereinigter Dateiname [ohne Erweiterung] uebereinstimmen):
          var sUrl = "https://github.com/ardiman/userChrome.js/tree/master/"+this.cleanFileName(sScript);
          openWebLinkIn(sUrl, 'tab');
        }
        if (e.button==2){
          // Rechtsklick - Suche auf GitHub starten (funktioniert nur, wenn der Dateiname im Code hinterlegt ist):
          e.preventDefault();
          var sUrl = "https://github.com/search?langOverride=&language=&q="+sScript+"&repo=&start_value=1&type=Code";
          openWebLinkIn(sUrl, 'tab');
        }
      },
    
      cleanFileName:function(sName) {
        sName = sName.toLowerCase();
        /* Das folgende Array enthaelt regulaere Ausdruecke, um ungueltige Zeichenfolgen entfernen:
        /Datei-Erweiterungen am Ende/, /"ucjs_" am Anfang/, /"_"gefolgtVonZahlUndDanachBeliebigenZeichen/
        / "_fx"gefolgtVonZahl(en)/, /"-" oder "+" oder "."/, /"_v"gefolgtVonZahlen
        */
        var regs = [/\.uc\.js$/,/\.uc\.xul$/,/^ucjs_/,/_\d.+/,/_fx\d+/,/[-+\.]/g,/_v\d+/];
        for (var i = 0; i < regs.length; i++) {
          sName = sName.replace(regs[i],"");
        }
        return sName;
      }
    
    };
    
    uProfMenu.init();
    Alles anzeigen
  • 1 Script funktioniert nicht mehr und ich weiss nicht, welches es von diesen 2 (Zusatzleisten) ist.

    • Endor
    • 8. August 2026 um 20:19

    Hallo omar1979

    Für Vertikale Addonleiste verwende ich dieses Script hier.
    Die funktioniert einwandfrei. Hat eine Schaltfläche zum ein und ausblenden
    und kann links oder rechts angezeigt werden.

    CSS
    // New switchable toolbar rechts/links – Version mit gleitendem Slide‑In/Out‑Effekt
    
    // TEST mit Anpassenfenster
    
    (function() {
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
        id           = 'NewToolbar_fly_button',
        label        = 'Toggle New Toolbar',
        tooltiptext  = 'Toggle New toolbar',
        // Icon-------------------------------------------------------
        icon         = 'sidebar1.svg',   // Icon-Dateiname
        //icon = 'flower-satt32.png';
    
        iconPath     = '/chrome/icons/',
        visible      = '38px',                  // Sichtbare Leistenbreite
        isPosH       = 0,                       // 0 = rechts, 1 = links
        isPosV       = '48%',                   // vertikale Position der Leiste
      // isPosV      = '0%',       Leiste am oberen Fensterrand;
      // isPosV      = '50%',      Leiste mittig zur Fensterhöhe;
      // isPosV      = '100%',     Leiste am unteren Fensterrand;
         delay       = '0.6s';                  // Dauer (schneller/langsamer)
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    
      const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
      if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
        Services.prefs.setBoolPref('svg.context-properties.content.enabled', true);
      }
    
      const flybox_new = document.createXULElement('toolbox');
      flybox_new.setAttribute('orient','horizontal');
      flybox_new.id = 'flybox_new';
    
      const fly_bar = document.createXULElement('toolbar');
      fly_bar.id = 'new_flybar';
      fly_bar.setAttribute('orient', 'vertical');
      fly_bar.setAttribute('customizable', true);
      fly_bar.setAttribute('mode', 'icons');
      fly_bar.setAttribute('context', 'toolbar-context-menu');
      fly_bar.setAttribute('class','toolbar-primary chromeclass-toolbar browser-toolbar customization-target');
      fly_bar.setAttribute('toolboxid', 'navigator-toolbox');
      fly_bar.setAttribute('toolbarname', 'New Toolbar');
      fly_bar.setAttribute('label', 'New Toolbar');
    
      let savedState = false;
      try {
        savedState = Services.prefs.getBoolPref("userChrome.newFlybar.off");
      } catch(e) {}
    
      if (savedState) fly_bar.classList.add("fly_off_mode");
    
      flybox_new.appendChild(fly_bar);
      document.getElementById('browser').parentNode.appendChild(flybox_new);
    
      CustomizableUI.registerArea(fly_bar.id, {legacy: true});
      CustomizableUI.registerToolbarNode(fly_bar);
    
      try {
        CustomizableUI.createWidget({
          id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label,
          tooltiptext,
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity, stroke-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
          }
        });
      } catch(e) {};
    
      document.getElementById('NewToolbar_fly_button').addEventListener("click", flybar);
    
      function flybar(event) {
        if (event.button === 0) {
          const new_flybar = document.getElementById('new_flybar');
          new_flybar.classList.toggle("fly_off_mode");
          const state = new_flybar.classList.contains("fly_off_mode");
          Services.prefs.setBoolPref("userChrome.newFlybar.off", state);
        }
      }
    
      if (isPosH === 1)
        flybox_new.classList.add("fly_left");
      else
        flybox_new.classList.remove("fly_left");
    
      const css = `
        :root {
          --ug-toolbar_width: ${visible};
          --ug-bg_fly_color: #E7E7E7;
          --ug-fly_border_width: 1px;
          --ug-border_radius: 8px;
          --ug-border_color: #f3a200;
        }
    
        #flybox_new {
          position: fixed !important;
          display: flex !important;
          ${isPosH === 0
            ? `right: 0 ; margin-right: calc(-1 * var(--ug-fly_border_width));`
            : `left: 0 ; margin-left: calc(-1 * var(--ug-fly_border_width));`}
          top: ${isPosV} !important;
          transform: translateY(-${isPosV}) !important;
          height: fit-content !important;
          z-index: 4 !important;
          pointer-events: none;
    	  margin-right: 19px;
          /*outline: 4px solid red !important;*/
        }
    
        #new_flybar {
          display: flex;
          width: calc(var(--ug-toolbar_width) + 2*var(--ug-fly_border_width));
          min-width: 0px !important;
          overflow: hidden !important;
          justify-content: center !important;
          padding-block: 4px;
          background-color: var(--ug-bg_fly_color) !important;
          border: var(--ug-fly_border_width) solid var(--ug-border_color) !important;
          ${isPosH === 0
            ? `border-radius: var(--ug-border_radius) 0 0 var(--ug-border_radius);`
            : `border-radius: 0 var(--ug-border_radius) var(--ug-border_radius) 0;`}
          transition: transform ${delay} ease-in-out,
                      opacity ${delay} ease-in-out,
                      border-width ${delay} ease-in-out,
                      width ${delay} ease-in-out;
          transform: translateX(0);
          opacity: 1;
          pointer-events: auto;
        }
    
        #new_flybar.fly_off_mode:not([customizing]) {
          transform: ${isPosH === 0 ? 'translateX(100%)' : 'translateX(-100%)'};
          opacity: 0;
          border-width: 0px !important;
          /*width: 0px !important;*/
        }
    
        #new_flybar > :is(.toolbarbutton-1, toolbaritem),
        #new_flybar toolbarpaletteitem > :is(.toolbarbutton-1, toolbaritem) {
          margin-inline: 0px !important;
          margin-block: 1px !important;
          padding: 0px !important;
          /*transition: none;*/
        }
    
        /*---  customizing  ---*/
    
        #main-window[customizing]  #flybox_new.fly_left {
          left: unset !important;
          right: 0px !important;
          margin-inline: 0px calc(-1 * var(--ug-fly_border_width)) !important;
        }
    
        #new_flybar[customizing] {
          align-items: center !important;
          /*width: calc(var(--ug-toolbar_width) + 2*var(--ug-fly_border_width)) !important;*/
          min-width: calc(var(--ug-toolbar_width) + 2*var(--ug-fly_border_width)) !important;
          width: initial !important;      
          min-height: var(--ug-toolbar_width) !important;
          padding-bottom: 48px !important;
          border-radius: var(--ug-border_radius) 0 0 var(--ug-border_radius) !important;
          transition: none !important;
        }
    
        #main-window:not([customizing]) #new_flybar.fly_off_mode[customizing] {
          transition: none !important;
          opacity: 0 !important;
        }
    
        #customization-content-container {
          margin-right: var(--ug-toolbar_width) !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);
    
    })();
    Alles anzeigen

    Symbol für Schaltfläche:

    Symbol muss im Chrome Ordner im Ordner icons abgelegt werden.
    Kann aber alles im Script geändert werden. Zeile 15 und 18.
    Ob links oder rechts wird auch im Script in Zeile 20 definiert.
    Nach Installation muss man die gewünschten Schaltflächen dann über
    den Anpassen Dialog in diese Leiste schieben.

    Mfg.
    Endor

  • 1 Script funktioniert nicht mehr und ich weiss nicht, welches es von diesen 2 (Zusatzleisten) ist.

    • Endor
    • 7. August 2026 um 20:02

    Hallo omar1979 .

    Das erste Script: Vertical Add-on Bar' script for Firefox by Aris wurde bei Aris aktualisiert:

    CustomJSforFx/scripts/addonbar_vertical.uc.js at master · Aris-t2/CustomJSforFx
    custom scripts. Contribute to Aris-t2/CustomJSforFx development by creating an account on GitHub.
    github.com

    Mfg.
    Endor

  • Skripte für die Nightly Version wieder anpassen

    • Endor
    • 4. August 2026 um 10:43

    Ja die kannst Du löschen.
    Da soll eine Text Information in Github rein.
    Damit man dann auch genau weiß was wo hin soll usw.
    Wenn ich Zeit dazu habe.

    Danke für die Info, dass es in Thunderbird auch funktioniert.
    :thumbup:

    Mfg.
    Endor

  • Skripte für die Nightly Version wieder anpassen

    • Endor
    • 4. August 2026 um 09:54

    Hallo edvoldi.

    Du musst die Dateien vom loader aktualisieren.
    Siehe hier:

    userChrome.js/Firefox 155/userChrome at master · Endor8/userChrome.js
    Skripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.
    github.com

    Dann müsste alles wieder funktionieren.
    Ob die in Thunderbird auch gehen weiß ich leider nicht.
    Mfg.
    Endor

Unterstütze uns!

Jährlich (2026)

70,5 %

70,5% (546,48 von 775 EUR)

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