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

Beiträge von FuchsFan

  • Profilmanager

    • FuchsFan
    • 21. Mai 2026 um 10:34
    Zitat von Mira_Belle

    Mist, kannst Du mir den noch einmal erklären,
    oder darauf verlinken, wenn es schon eine Erklärung hier im Board gibt?
    Ich komme gerade nicht darauf, was genau das für ein Test war.

    Das Script besteht nicht den Elchtest, dass heißt, im ersten Fenster wird das Script bedient, dann wird das Fenster geschlossen. Jetzt soll das Script auch in den weiteren geöffneten Fenstern funktionieren, aber das macht es nicht.

  • Profilmanager

    • FuchsFan
    • 21. Mai 2026 um 09:46
    Zitat von Mira_Belle

    Mag jemand testen?

    Mira_Belle

    Getestet aus portable Nightly 153, funktioniert alles wie gewünscht. Nur als Hinweis, bei den installierten reicht es vollkommen aus, wenn nur der Name des Profiles angegeben wird. Aus installierter Beta/Nightly kann ich nicht testen, weil nicht vorhanden. Ein Nachteil deines Scriptes ist der, dass es den Elchtest nicht besteht.

  • FF 151 startet immer mit Popup "Firefox-Profi wählen"

    • FuchsFan
    • 21. Mai 2026 um 09:17
    Zitat von Sören Hentzschel

    Wenn es um die neue Profilverwaltung geht, gibt es keinen Grund, das Profilsystem als Ganzes abzuschalten (und damit ggf. Profile zu verlieren). Dann öffnet man einfach Menü → Profile → Profile verwalten. Und dort deaktiviert man dann die Checkbox „Ein Profil wählen, wenn Firefox geöffnet wird”.

    Ich bedanke mich auch, obwohl ich die Profilverwaltung nutze, darauf bin ich noch nie gestoßen.

  • FF 151 startet immer mit Popup "Firefox-Profi wählen"

    • FuchsFan
    • 20. Mai 2026 um 21:51

    Ich gehe mal davon aus, dass bei dir jetzt die neue Profilauswahl aktiviert ist. Wenn du das abstellen möchtest, so gib in die Adressleiste about:config ein, bestätige die Warnung, und gib oben in die Leiste browser.profiles.enabled ein, wenn auf true dann auf false setzen. Firefox Neustart, dann sollte es wieder ohne die Auswahl starten.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:39
    Zitat von milupo

    Außerdem wird offensichtlich eine Klasse für alle Symbole verwendet, sodass man etwas tricksen muss

    Ja, damit .page-nav-icon kannst du alle auf einmal farblich anpassen, das geht. Jetzt daraus aber einzeln ein Icon anzusprechen scheitert immer wieder, finde keine Weg dafür. Wenn ich mal viel Mut habe, dann baue ich eventuell eigene Icons ein, jetzt lasse ich es erst einmal so.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:13
    Zitat von grisu2099

    Die habe ich in der alten Version durch eigene Icons ersetzt.

    Das habe ich auch getestet, funktioniert jetzt im Nightly auch, aber 17 Button, das wollte ich mir ersparen.;)

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:07
    Zitat von grisu2099

    Welche meinst du genau?

    Links bei den Button (Home, usw.)

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:06
    Zitat von grisu2099

    (Habe bis vorhin noch Anpassungen an der "alten" Ansicht probiert... ;) )

    Hast du mal probiert die Farbe der Icons einzeln anzupassen? Ich habe schon mal mit Andreas probiert, und jetzt habe ich wiederholt Anlauf genommen, nichts zu machen.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 12:43
    Zitat von Sören Hentzschel

    Wer dann?

    Das frage ich mich auch. ;) Mal im Ernst, wie sollte ich darauf kommen?:/

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 12:33
    Zitat von Sören Hentzschel

    Bei Screenshot 1 steht browser.settings-redesign.enabled auf true, bei Screenshot 2 auf false.

    Dankeschön, das war die Ursache. Nun steht natürlich die Frage im Raum, warum in dieser Version true, und in der anderen false, denn ich habe nicht daran geschraubt.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 11:24
    Zitat von 2002Andreas

    Evtl. kann Sören ja etwas dazu sagen, ob die Ansicht noch nicht für alle Nutzer erstellt wurde.

    Also, ich habe auch in der unberührten Version (meine Reserve Portable) versucht, keine Veränderung, immer Bild 2.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 10:39
    Zitat von 2002Andreas

    Und du bist sicher, dass es wirklich ein Profil vom Nightly ist?

    Ja, absolut, ich habe ja mehrere, alle aktualisiert, trotzdem Darstellung nach Bild 2, ist schon sehr komisch. Wenn du das bei beiden hast, dann gehe ich mal davon aus, dass es dann zum Standard wird.


    Fehlerbehebungsmodus ohne Ergebnis, Darstellung wie Bild 2.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 10:19

    Bitte um Aufklärung zu about:preferences, weil es dort seit geraumer Zeit doch einige Änderungen gab. Was mich aber ganz besonders interessiert, sind die im Folgenden gezeigten Darstellungen in zwei Profilen vom aktuellen Nightly. Das Bild 1 ist nur in einer Version so zu sehen, alle anderen gemäß Bild 2. Wie kann das sein?

    Bild 1: Bild 2:

  • FF150 Scripte funktionieren nicht

    • FuchsFan
    • 18. Mai 2026 um 18:38
    Zitat von milupo
    Zitat von milupo

    Außerdem hat er mehrere Skripte in einem (function() { … })();- Bereich eingebettet.

    Ab wo hast du denn kopiert?

    Slash ausgenommen. Das betrifft auch andere Button, die lassen sich auch verschieben.

  • FF150 Scripte funktionieren nicht

    • FuchsFan
    • 18. Mai 2026 um 18:24

    Auch dein Script Adressleiste_verschiebbar funktioniert hier in v152.

  • FF150 Scripte funktionieren nicht

    • FuchsFan
    • 18. Mai 2026 um 17:55

    Dein Script für die Tastatur habe ich in Version 152 getestet, es legt den Button in der Navbar an, und startet auch die Tastatur. da stimmt dann wohl doch etwas nicht mit deinem Profil.

  • Thunderbird 102.11 userChromeJS, Services is not defined in config.js

    • FuchsFan
    • 17. Mai 2026 um 12:58

    laxx

    Warum keine aktuelle Version, die Frage wurde gestellt?

    Nur als Hinweis, natürlich funktioniert es auch in TB, wenn die Vorbereitungen alle sauber erledigt wurden. Bei mir laufen vier Scripte, mehr brauche ich nicht. So sieht der Ordner chrome aus:

  • Profilmanager

    • FuchsFan
    • 16. Mai 2026 um 13:45

    Mira_Belle

    Das ist jetzt meine favorisierte Version, alle Profile können beliebig oft gestartet werden. Dieses Script, getestet von v150 bis
    v152, funktioniert ohne Probleme. Alle Profile müssen manuell eingetragen werden, wobei Unterschiede bei installierten und portablen Versionen weiterhin bestehen. Bei den installierten Versionen wird bei profile: immer der Name des Profils eingegeben (bei about:profiles entnehmen), bei den portablen dagegen muss hier immer der genaue Pfad zum Profilordner angegeben werden.
    Alle Versionen werden grundsätzlich über die firefox.exe aus dem Installationsordner gestartet (also nicht über die FirefoxLoader.exe, usw.). Dafür ist dementsprechend bei exe: der genaue Pfad zur firefox.exe anzugeben. Beispiele sind dafür im Script für alle Versionen enthalten. Dann bitte testen!

    CSS
    // ==UserScript==
    // @name           FoxStarter Auto Stable + Icons
    // @description    Firefox / Portable Starter mit Icons + CSS
    // @author         FuchsFan (KI)
    // @version        1.3.1  150+
    // @note           -no-remote entfernt
    // @include        main
    // ==/UserScript==
    
    (function () {
    
      if (!window.gBrowser) return;
    
      const btn_id = "foxstarter_auto";
      const POPUP_ID = btn_id + "-popup";
    
      const btn_icon = "file:///C:/FoxIcons2/Bild206.png";
      const ICON_BASE = "file:///C:/FoxIcons2/";
    
      const btn_tooltiptext = "Firefox Profile starten (Auswahl)";
    
      const { classes: Cc, interfaces: Ci } = Components;
    
      let cssInjected = false;
    
      // =========================================================
      // CSS
      // =========================================================
    
      function injectUserCSS() {
    
        try {
    
          if (cssInjected) return;
    
          const css = `
            #${btn_id} image.toolbarbutton-icon {
              transform: scale(1.0) !important;
              padding: 6px !important;
            }
    
            #${POPUP_ID} {
              max-width: 285px !important;
            }
    
            #${POPUP_ID} menuitem {
              padding-inline-start: 8px !important;
              padding-inline-end: 8px !important;
              margin: 0 !important;
              min-height: 24px !important;
            }
    
            #${POPUP_ID} menuitem.menuitem-iconic .menu-icon {
              margin-inline-end: 8px !important;
              margin-inline-start: -30px !important;
              width: 16px !important;
              height: 16px !important;
            }
    
            #${POPUP_ID} menuitem.menuitem-iconic .menu-text {
              margin-left: 8px !important;
              font-weight: 500 !important;
              padding: 2px 0 2px 0 !important;
            }
    
            #${POPUP_ID} menuitem.menuitem-iconic:hover .menu-text {
              margin-left: 8px !important;
              font-weight: 600 !important;
              color: red !important;
            }
          `;
    
          const sss =
            Cc["@mozilla.org/content/style-sheet-service;1"]
            .getService(Ci.nsIStyleSheetService);
    
          const uri =
            Services.io.newURI(
              "data:text/css;charset=utf-8," +
              encodeURIComponent(css)
            );
    
          if (!sss.sheetRegistered(uri, sss.AUTHOR_SHEET)) {
            sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
          }
    
          cssInjected = true;
    
        } catch (e) {
          console.error("[FoxStarter CSS]", e);
        }
      }
    
      // =========================================================
      // ITEMS + ICONS
      // =========================================================
    
      const ITEMS = {
    
        // installierte Versionen
        "ArbeitsFox 🏠": {
          exe: "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
          profile: "ArbeitsFox",
          icon: "Finale.png"
        },
    
        "Reserve 1 🏠": {
          exe: "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
          profile: "Reserve",
          icon: "Finale.png"
        },
    
        "Reserve 2 🏠": {
          exe: "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
          profile: "Reserve-Profil 2",
          icon: "Finale.png"
        },
    
        // portable Versionen
    	"Firefox3p > portable < 🟢": {
          exe: "G:\\Firefox Test\\Firefox3p\\Firefox64\\firefox.exe",
          profile: "G:\\Firefox Test\\Firefox3p\\Profilordner",
          icon: "Finale.png"
        },
    
        "Nightly1 > portable < 🔵": {
          exe: "G:\\Firefox Test\\Nightly1\\Firefox64\\firefox.exe",
          profile: "G:\\Firefox Test\\Nightly1\\Profilordner",
          icon: "Nightly.png"
        },
    
        "Portable U Stable 3 🔥": {
          exe: "G:\\Portable.Firefox.Updater.3\\Firefox Stable x64\\firefox.exe",
          profile: "G:\\Portable.Firefox.Updater.3\\Firefox Stable x64\\profile",
          icon: "Finale.png"
        }
      };
    
      // =========================================================
      // START
      // =========================================================
    
      function launch(item) {
    
        try {
    
          const file =
            Cc["@mozilla.org/file/local;1"]
            .createInstance(Ci.nsIFile);
    
          file.initWithPath(item.exe);
    
          const process =
            Cc["@mozilla.org/process/util;1"]
            .createInstance(Ci.nsIProcess);
    
          process.init(file);
    
          let args = [];
    
          const isFirefox =
            item.exe.toLowerCase().includes("firefox.exe");
    
          const isProfilePath =
            item.profile &&
            (item.profile.includes("\\") || item.profile.includes("/"));
    
          if (isFirefox && isProfilePath) {
    
            // -no-remote entfernt
            args = [
              "-profile",
              item.profile,
              "-foreground"
            ];
    
          } else if (isFirefox) {
    
            // -no-remote entfernt
            args = [
              "-P",
              item.profile,
              "-foreground"
            ];
    
          }
    
          process.run(false, args, args.length);
    
        } catch (e) {
          console.error("[FoxStarter]", e);
        }
      }
    
      // =========================================================
      // MENU MIT ICONS
      // =========================================================
    
      function buildMenu() {
    
        const btn = document.getElementById(btn_id);
    
        if (!btn || btn.querySelector("menupopup")) return;
    
        const popup =
          document.createXULElement("menupopup");
    
        popup.setAttribute("id", POPUP_ID);
    
        for (const key of Object.keys(ITEMS)) {
    
          const item = ITEMS[key];
    
          const mi =
            document.createXULElement("menuitem");
    
          mi.setAttribute("label", key);
    
          mi.setAttribute("class", "menuitem-iconic");
    
          const icon =
            item.icon
              ? ICON_BASE + item.icon
              : btn_icon;
    
          mi.setAttribute("image", icon);
    
          mi.style.listStyleImage =
            `url("${icon}")`;
    
          mi.addEventListener("command", () => {
            launch(item);
          });
    
          popup.appendChild(mi);
        }
    
        btn.appendChild(popup);
      }
    
      // =========================================================
      // BUTTON
      // =========================================================
    
      try {
    
        CustomizableUI.createWidget({
    
          id: btn_id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: "FoxStart",
          tooltiptext: btn_tooltiptext,
    
          onCreated: (btn) => {
    
            btn.style.listStyleImage =
              `url("${btn_icon}")`;
    
            btn.setAttribute("type", "menu");
    
            injectUserCSS();
            buildMenu();
          }
        });
    
      } catch (e) {}
    
      setTimeout(() => {
    
        injectUserCSS();
        buildMenu();
    
      }, 500);
    
    })();
    Alles anzeigen
  • Profilmanager

    • FuchsFan
    • 15. Mai 2026 um 16:51
    Zitat von Mira_Belle

    Ja, auf diese Idee war ich auch schon gekommen.

    Mira_Belle Ich auch!;)

    Deshalb habe ich mal versucht daraus etwas Brauchbares zu schaffen, und bin damit eigentlich zufrieden. Es wird in der Navbar ein Button erstellt, über den dann das Menü mit den Profilen zur Auswahl geöffnet wird. Im Script selbst erfolgt eine besondere Einstufung für installierte und portable Versionen. Versucht habe ich bisher ergebnislos die Funktion einzubauen, sofern ein Firefox gestartet ist, dieser beim zweiten Aufruf dann ein Hinweis erfolgt (Alert), dass er bereits gestartet ist. Bisher alle Versuche erfolglos. Schau es dir an, eventuell findest du eine Lösung. So dann zum Test freigegeben:

    Code
    // ==UserScript==
    // @name           FoxStarter.uc.js
    // @description    Navbar Button (verschiebbar) +  Menü für Start von Profilen
    // @version        1.0.1
    // @author         FuchsFan (KI)
    // @include        main
    // @charset        UTF-8
    // ==/UserScript==
    
    (function () {
    
      if (!window.gBrowser) return;
    
      // Start User Einstellungen
      let btn_id = 'start_profile_btn';           // Button #id
      const btn_label = 'ProfileStart';
      const btn_tooltiptext = 'Firefox Profile starten (Auswahl)';
    
      const btn_icon = 'Bild206.png';
      const iconPath = 'file:///C:/FoxIcons2/';   // Icon-Ordner (für Button)
      const ImagePath = iconPath + btn_icon;      
      // Ende User Einstellungen
    
      const { classes: Cc, interfaces: Ci } = Components;
    
      const BrowserPath = {
    	  
    	// installierte Versionen 
    
        "ArbeitsFox 🏠": {
          cmd: "C:\\Program Files\\Mozilla Firefox\\firefox.exe<>$1 -P \"ArbeitsFox\"",
          icon: "Finale.png"
        },	
        "Reserve-Profil 1 🏠": {
          cmd: "C:\\Program Files\\Mozilla Firefox\\firefox.exe<>$1 -P \"Reserve\"",
          icon: "Finale.png"
        },
        "Reserve-Profil 2 🏠": {
          cmd: "C:\\Program Files\\Mozilla Firefox\\firefox.exe<>$1 -P \"Reserve-Profil 2\"",
          icon: "Finale.png"
        },
    	"Reserve-Profil 3 🏠": {
          cmd: "C:\\Program Files\\Mozilla Firefox\\firefox.exe<>$1 -P \"Reserve 3\"",
          icon: "Finale.png"
        },
    	
    	// portable Versionen 
    	
    	"Portable.Firefox.Updater.3 Nightly 🟠 ": {
          cmd: "G:\\Portable.Firefox.Updater.3\\Firefox Nightly x64 Launcher.exe",
          icon: "Nightly.png"
        },
    	"Firefox 3 portable 🔥": {
          cmd: "G:\\Firefox Test\\Firefox3p\\FirefoxLoader.exe",
          icon: "Finale.png"
        },
        "Nigtly 1 portable 🔵": {
          cmd: "G:\\Firefox Test\\Nightly1\\FirefoxLoader.exe",
          icon: "Nightly.png"
        }
      };
    
      function menuIconUrl(pngName) {
        // Direkte Bild-URL (am zuverlässigsten für PNG)
        const fileUrl = "file:///C:/FoxIcons2/" + pngName;
        return encodeURI(fileUrl);
      }
    
      function launch(browserPathEntry, openURL) {
        // browserPathEntry ist jetzt ein Objekt: { cmd, icon }
        let [path, argsRaw] = browserPathEntry.cmd.split("<>");
        if (!argsRaw) argsRaw = "";
    
        // Tokenizer respektiert "..." / '...' 
        const tokens = [];
        const re = /"([^"]*)"|'([^']*)'|(\S+)/g;
        let m;
        while ((m = re.exec(argsRaw)) !== null) {
          tokens.push(m[1] ?? m[2] ?? m[3]);
        }
    
        const finalArgs = tokens.map(t => t.replace(/\$1/g, openURL));
    
        const file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
        file.initWithPath(path);
    
        const process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
        process.init(file);
        process.run(false, finalArgs, finalArgs.length, {});
      }
    
      function ensurePopup() {
        const btn = document.getElementById(btn_id);
        if (!btn) return;
    
        if (btn.querySelector('#' + btn_id + '_popup')) return;
    
        const popup = document.createXULElement('menupopup');
        popup.setAttribute('id', btn_id + '_popup');
    
        for (const key of Object.keys(BrowserPath)) {
          const itemData = BrowserPath[key];
          const iconUrl = menuIconUrl(itemData.icon);
    
          const mi = document.createXULElement('menuitem');
          mi.setAttribute('label', ' ' + key);
          mi.setAttribute('value', key);
    
          // ikonisch machen + Icon setzen
          mi.setAttribute('class', 'menuitem-iconic');
          mi.setAttribute('image', iconUrl);                 // direkt als Bild-URL
          mi.style.listStyleImage = 'url("' + iconUrl + '")'; // Fallback
    
          mi.addEventListener('command', (ev) => {
            const k = ev.target.getAttribute('value');
            const url = (gBrowser.currentURI && gBrowser.currentURI.spec) ? gBrowser.currentURI.spec : '';
            launch(BrowserPath[k], url);
          }, false);
    
          popup.appendChild(mi);
        }
    
        btn.appendChild(popup);
      }
    
      try {
        CustomizableUI.createWidget({
          id: btn_id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: btn_label,
          tooltiptext: btn_tooltiptext,
          onCreated: (this_button) => {
            this_button.style.MozContextProperties = 'fill, stroke, fill-opacity, stroke-opacity';
            this_button.style.listStyleImage = 'url("' + ImagePath + '")';
            this_button.style.minWidth = 'fit-content';
    
            // Dropdown
            this_button.setAttribute('type', 'menu');
    
            ensurePopup();
    
            this_button.addEventListener('click', (event) => {
              if (event.button !== 0) return;
              ensurePopup();
              const popup = document.getElementById(btn_id + '_popup');
              if (popup && typeof popup.openPopup === 'function') {
                popup.openPopup(this_button, 'after_start', 0, 0, true, false);
              }
            }, true);
          }
        });
      } catch (e) {
        setTimeout(() => ensurePopup(), 200);
      }
    
      if (window.readyState !== "loading") {
        setTimeout(() => ensurePopup(), 500);
      } else {
        window.addEventListener("DOMContentLoaded", () => ensurePopup(), { once: true });
      }
    
      window.addEventListener('aftercustomization', () => {
        setTimeout(() => ensurePopup(), 100);
      }, false);
    
    })();
    Alles anzeigen
  • Profilmanager

    • FuchsFan
    • 14. Mai 2026 um 19:52
    Zitat von 2002Andreas

    Ich kenne mich mit Skripten ja nicht aus, aber wozu brauchst du die Ordner überhaupt

    Ja, sonst startet der Firefox nicht, und Icons werden auch nicht angezeigt. Du weißt, ich habe auch keine Ahnung, aber KI hat das nun mal so eingerichtet, und es funktioniert .

Unterstütze uns!

Jährlich (2026)

59,3 %

59,3% (459,86 von 775 EUR)

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