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

Beiträge von lenny2

  • Icons fehlen in der Statusleiste

    • lenny2
    • 10. November 2023 um 16:10
    Zitat von graubaer

    An der Schrift habe ich, soweit ich weiß, nichts geändert.

    Möglicherweise haben Sie den Zeilenabstand im Kontextmenü in userChrome.css geändert, und der von Ihnen verwendete Code enthält den Code zum Ändern des Zeilenabstands im Menü "hamburger". Der falsche Code für "hamburger" erzeugt also nur Zeilen, die sich überlappen, wie bei Ihnen. Der korrekte Code unterbricht die Zeilendarstellung der Schaltfläche "Unified Extensions" nicht:

    CSS
    :root {
    --arrowpanel-menuitem-padding: 4px !important;
    }
  • Plötzlich kein Speichern mehr der Chronik

    • lenny2
    • 10. November 2023 um 10:17
    Zitat von Sören Hentzschel

    Aber gerade in Bezug auf Firefox ist es bestenfalls nutzlos und im schlechtesten Fall schädlich und muss bei Datenverlust-Themen immer als potenzielle Ursache mit berücksichtigt werden.

    CCleaner ist nicht an Firefox gebunden, sie sind gleichgültig gegenüber einander. Nicht ein einziges Byte ist in 5 Jahren der Nutzung verloren gegangen. CCleaner ist anders, Sie müssen Portable und ohne Telemetrie verwenden, Sie müssen nicht neue Versionen mit Müll gefüllt verwenden.

  • Script für kürzlich geschlossene Tabs anpassen: Anzahl der Tabs begrenzen (UndoListInTabmenuToo.uc.js)

    • lenny2
    • 10. November 2023 um 10:10

    Button die Dateigröße ist dreimal kleiner.

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

    • lenny2
    • 10. November 2023 um 09:30
    Zitat von harff182

    Das tuts:

    Wunderbar, jetzt weiß ich, wie ich hier ein lokales icon schreiben kann.

  • Plötzlich kein Speichern mehr der Chronik

    • lenny2
    • 10. November 2023 um 09:25
    Zitat von Leviathan34

    addonStartup.json.lz4, compatibility,

    Diese beiden Dateien können problemlos gelöscht werden, beim Neustart werden sie ohne Schaden neu erstellt.

    ExperimentStoreData.json webappsstore.sqlite-wal datum der letzten Änderung vor 10 Tagen.

    Ich würde damit beginnen, die Erweiterungen eine nach der anderen oder alle zu deaktivieren. Übrigens benutze ich auch CCleaner, und es gibt keine negativen Auswirkungen.

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

    • lenny2
    • 9. November 2023 um 14:39
    Zitat von Mira_Belle

    Und woher stammt das Skript, eventuell gibt es da noch ein paar Informationen dazu,

    also zum Skript?

    Original source ist unbekannt, ich habe das Skript von einem anderen Studenten erhalten.

    Zitat von 2002Andreas

    Änderungen in der userContent.css per Rechtsklick hier zumindest nicht.

    Die rechte Schaltfläche prüfe ich auf CSS für Firefox View Next, es funktioniert, userContent.css wird neu geladen. Es ist durchaus möglich, dass etwas im Skript korrigiert werden muss, aber ich weiß es nicht.

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

    • lenny2
    • 9. November 2023 um 08:57

    Die Dateien reload_userChrome.uc.js (das ist nur die Grafik Schaltfläche) und reload_userChrome.txt (Funktionalität) müssen sich im selben Ordner befinden, die Dateinamen können unterschiedlich sein, aber der Name der txt-Datei muss im Skriptcode angegeben werden. reload_userChrome.txt ist der alte Code für die Erweiterung Custom Buttons. Die Linksklick- und Rechtsklick-Funktionen funktionieren, die Rechtsklick-Funktion kann in reload_userChrome.txt deaktiviert werden.

    Sicherlich können fortgeschrittene Experten dies verbessern.

    Code
    // reload_userChrome.uc.js
    // Applying changes to userChrome.css and userContent.css styles without restarting Firefox
    // The file reload_userChrome.txt should be in the same folder with the script
    
    window.__SSi == "window0" && CustomizableUI.createWidget({
    id: "Reload_userChrome",
    label: "Reload userChrome",
    localized: false,
    onCreated(btn) {
    var u = Services.io.newURI;
    var code = Cu.readUTF8URI(u(
    u(Components.stack.filename).resolve("reload_userChrome.txt")
    )).replace(
    'Components.utils.import("resource://gre/modules/Services.jsm", {})',
    "Cu.getGlobalForObject(Cu)"
    );
    var del = function() {
    this.previousSibling.remove();
    this.remove();
    };
    (this.onCreated = btn => {
    btn.setAttribute("image", "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABPElEQVQ4ja3TsU6UQRQF4G8D7jaS2EqhwMaYSGHnI1BQ+ATaUtqR0BJIDGjhMxhKKgLxEQStDFYmGpTKqC8grMdiZ80w4d/KSW5xM/ece2fuOTQnDMOL8D78DL/CSdgJd0vN7XAeDmrgbHgZRiEdcRk2w2rJ//QmYBxhpfB9wR4+4AaW8RQL1f1S3f151WU7Y1D7tEHYbacSlqqxt1tgAd8PayVOW4KtkpyFfgfBu44/Gc3iUal73eP3dQTYxy3MXOV1IDwIG2GuA/z/T7gZnoWh8Cp8buJTWJ9CMPm3Q1OEc9wBHoRvpWZLAzqt1nWvg2BnsoGw0BKk+GBwDbBfgf9pppfxOrgqz6/GUv6IER7iiWImvMHjHpf1BKvFKBdTzDQqU8zUox0Va86X/E7xxtvwI3wvStwNi+3T/gL+gPNd4cyuEQAAAABJRU5ErkJggg==");
    btn.defaultContextId = "toolbar-context-menu";
    var win = btn.ownerGlobal;
    var wdp = new win.DOMParser();
    var parser = class {
    parseFromString(...args) {
    var doc = wdp.parseFromSafeString(...args);
    doc.documentElement.lastChild.appendChild = del;
    return doc;
    }
    }
    win.setTimeout(() => new win.Function("DOMParser", code).call(btn, parser), 50);
    })(btn);
    }
    });
    Alles anzeigen
    Code
    // reload_userChrome.txt
    // Applying changes to userChrome.css and userContent.css styles without restarting Firefox
    // Place in the same folder as the reload_userChrome.uc.js script
    // To deactivate the reload function of userContent.css, comment out lines 82-88, edit tooltiptext line 11
    
    
    var c = msg => Services.console.logStringMessage(String(msg)), i = obj => inspectObject(obj), n = node => inspectDOMNode(node);
    
    
    (obj => {
    this.onclick = obj.click.bind(obj);
    this.oncontextmenu = obj.contextmenu.bind(obj);
    this.tooltipText = "L: Reload userChrome.css\nR: Reload userContent.css";
    })({
    async click(e) {
    if (e.button == 1) return gShowPopup(self);
    if (e.button || !this.chromeSheet) return;
    await this.reload(this.chromeSheet);
    this.restyle(0);
    },
    re: /^(?:web.*|file|extension|privilegedabout)$/,
    get url() {
    delete this.url;
    return this.url = `chrome://extensions/content/dummy.x${
    parseInt(Services.appinfo.platformVersion) >= 74 ? "htm" : "u"
    }l`;
    },
    async contextmenu(e) {
    if (e.ctrlKey || e.shiftKey || e.detail != 1 || !this.contentSheetURL) return;
    e.preventDefault();
    
    
    var count = Services.ppmm.childCount, one = count == 1;
    var data = await this.reloadTab(this.url, one ? false : {});
    if (one) this.reloadTab();
    else if (data) {
    var url = "data:," + encodeURIComponent(
    self.Help + this.contentSheetURL + '", ' + JSON.stringify(data) + ");"
    );
    for(var ind = 0; ind < count; ind++) {
    var child = Services.ppmm.getChildAt(ind);
    var rt = child.remoteType;
    rt && this.re.test(rt) && child.loadProcessScript(url, false);
    }
    }
    this.restyle(250);
    },
    async reload(sheet, obj) {
    try {var style = await (await fetch(sheet.href)).text();}
    catch (ex) {return obj;}
    InspectorUtils.parseStyleSheet(sheet, style);
    if (obj) obj[sheet.href] = style;
    for(var ind = 0, len = sheet.cssRules.length; ind < len; ind++) {
    var rule = sheet.cssRules.item(ind);
    
    
    rule.type == rule.IMPORT_RULE
    && rule.styleSheet.href.startsWith("file:///")
    && await this.reload(rule.styleSheet, obj);
    }
    return obj;
    },
    reloadTab(url, obj) {
    var tab = gBrowser.addTab(url, {skipAnimation: true, triggeringPrincipal: document.nodePrincipal});
    tab.style.setProperty("display", "none", "important");
    return new Promise(resolve => {
    var result, stop, destroy = () => {
    if (!stop) resolve(result), gBrowser.removeTab(tab), stop = true;
    }
    setTimeout(destroy, 500);
    try {
    tab.linkedBrowser.addEventListener("DOMContentLoaded", async e => {
    var sheet = this.getSheet(e.target, this.contentSheetURL);
    if (sheet) result = await this.reload(sheet, obj);
    destroy();
    }, {once: true});
    } catch(ex) {
    destroy();
    }
    });
    },
    getSheet(doc, href) {
    var sheets = InspectorUtils.getAllStyleSheets(doc);
    return sheets.find(sheet => sheet.href == href);
    },
    get contentSheetURL() {
    var file = Services.dirsvc.get("UChrm", Ci.nsIFile);
    file.append("userContent.css");
    if (!file.exists()) return null;
    delete this.contentSheetURL;
    return this.contentSheetURL = Services.io.newFileURI(file).spec;
    },
    get restyle() {
    var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
    var uri = Services.io.newURI("data:text/css,:root{}"), type = sss.USER_SHEET;
    delete this.restyle; return this.restyle = delay => setTimeout(() => {
    sss.loadAndRegisterSheet(uri, type);
    sss.unregisterSheet(uri, type);
    }, delay);
    },
    get chromeSheet() {
    var file = Services.dirsvc.get("UChrm", Ci.nsIFile);
    file.append("userChrome.css");
    if (!file.exists()) return null;
    
    
    var href = Services.io.newFileURI(file).spec;
    var sheet = this.getSheet(document, href);
    if (!sheet) return null;
    
    
    delete this.chromeSheet; return this.chromeSheet = sheet;
    }
    });
    Alles anzeigen

    Möglicherweise stimmen die Zeilennummern nach der Veröffentlichung des Codes nicht mit denen in den lokalen Dateien in Notepad++ überein :/

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

    • lenny2
    • 8. November 2023 um 07:06
    Zitat von Mira_Belle

    Heißt das, ich ändere Code z.B. in der userChrome.css brauche ich nur auf dem Button mit der linken Maustaste klicken,

    und die Änderungen werden ohne Neustart übernommen?

    Und ändere ich etwas an der userContent.css, dasselbe Prozedere mit rechts?

    Ja, das ist richtig, Änderungen an userChrome.css, den darin importierten .css-Dateien, userContent.css. Ohne Firefox neu zu starten. Es funktioniert wirklich.

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

    • lenny2
    • 7. November 2023 um 17:40
    Zitat von Mira_Belle

    Kannst noch kurz erklären, was der Sinn und Zweck dieses Skriptes ist?

    Bitte,

    Die Schaltfläche wird verwendet, um Änderungen an den Stilen userChrome.css (Links-klick) und userContent.css (Rechts-klick) zu aktivieren, ohne den Browser neu zu starten. Das Skript liest die Funktionalität aus der .txt-Datei in Zeile 8, die den Code für Custom Buttons.

  • Entwicklung Firefox

    • lenny2
    • 6. November 2023 um 08:18

    Es gibt einen Fehler in Firefox v120.0beta6, der Kontextmenüpunkt [Copy Link Without Site Tracking] ist auf allen Links vorhanden, nicht nur auf Links mit Tracking. In der Adressleiste ist es dasselbe.

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

    • lenny2
    • 5. November 2023 um 16:22

    Ich habe es selbst herausgefunden, fügen Sie nach Zeile 17 diesen Code ein

    Code
    btn.setAttribute("image", "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABPElEQVQ4ja3TsU6UQRQF4G8D7jaS2EqhwMaYSGHnI1BQ+ATaUtqR0BJIDGjhMxhKKgLxEQStDFYmGpTKqC8grMdiZ80w4d/KSW5xM/ece2fuOTQnDMOL8D78DL/CSdgJd0vN7XAeDmrgbHgZRiEdcRk2w2rJ//QmYBxhpfB9wR4+4AaW8RQL1f1S3f151WU7Y1D7tEHYbacSlqqxt1tgAd8PayVOW4KtkpyFfgfBu44/Gc3iUal73eP3dQTYxy3MXOV1IDwIG2GuA/z/T7gZnoWh8Cp8buJTWJ9CMPm3Q1OEc9wBHoRvpWZLAzqt1nWvg2BnsoGw0BKk+GBwDbBfgf9pppfxOrgqz6/GUv6IER7iiWImvMHjHpf1BKvFKBdTzDQqU8zUox0Va86X/E7xxtvwI3wvStwNi+3T/gL+gPNd4cyuEQAAAABJRU5ErkJggg==");
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • lenny2
    • 5. November 2023 um 09:57

    Hallo

    Diese Skript erstellt eine leere Schaltfläche namens Reload ohne Icon und ohne Funktionalität. Bitte fügen Sie den Code, um eine lokale oder Ressource-Symbol anzeigen, dann mein Wissen wird genug sein, um ein Symbol meiner Wahl zuweisen.

    Code
    window.__SSi == "window0" && CustomizableUI.createWidget({
    id: "Reload_userChrome",
    label: "Reload userChrome",
    localized: false,
    onCreated(btn) {
    var u = Services.io.newURI;
    var code = Cu.readUTF8URI(u(
    u(Components.stack.filename).resolve("reload_userChrome.txt")
    )).replace(
    'Components.utils.import("resource://gre/modules/Services.jsm", {})',
    "Cu.getGlobalForObject(Cu)"
    );
    var del = function() {
    this.previousSibling.remove();
    this.remove();
    };
    (this.onCreated = btn => {
    btn.defaultContextId = "toolbar-context-menu";
    var win = btn.ownerGlobal;
    var wdp = new win.DOMParser();
    var parser = class {
    parseFromString(...args) {
    var doc = wdp.parseFromSafeString(...args);
    doc.documentElement.lastChild.appendChild = del;
    return doc;
    }
    }
    win.setTimeout(() => new win.Function("DOMParser", code).call(btn, parser), 50);
    })(btn);
    }
    });
    Alles anzeigen

    Vielen Dank für Ihre Hilfe

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

    • lenny2
    • 3. November 2023 um 09:03
    Zitat von BrokenHeart

    Wie ich weiter oben schon geschrieben hatte, ist es notwendig, dass in Zeile 4 die ID des Original-Buttons eingetragen wird. Dann sollte man noch, falls vorhanden, 'Label' und 'Tooltip' auf die gleichen Werte setzen.

    :thumbup: Mit Hilfe Ihrer Anweisungen war es einfach, die Skriptschaltfläche extras_config_menu.uc.js beweglich zu machen, die vorher nicht beweglich war. Am Ende des Hauptcodes wurde zusätzlicher Code eingefügt.

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

    • lenny2
    • 2. November 2023 um 08:51
    Zitat von BrokenHeart

    Bitte wieder testen:

    Superb! :thumbup: Jetzt ist alles bestens. Vielen Dank für Ihre Hilfe und Ihre Zeit.

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

    • lenny2
    • 1. November 2023 um 18:50
    Zitat von BrokenHeart

    und jetzt?

    Geändert 8px zu 12px. Bitte beachten Sie die Hover, alle anderen Schaltflächen sind hintergrundbeleuchtet wie die auf der rechten Seite und die Schaltfläche unter Diskussion ist drastisch anders. Wenn die Schaltfläche auf der Navigationsleiste platziert ist, wenn schwebte, wird seine Hervorhebung nicht quadratisch wie alle anderen Schaltflächen, sondern rechteckig, wo die Höhe größer ist als die Breite.

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

    • lenny2
    • 1. November 2023 um 17:46
    Zitat von BrokenHeart

    Bitte testen: Dieses Skript zusätzlich ausführen oder an das bestehende AppMenü-Skript anhängen!

    Danke, Ich habe den neuen Code am Ende des Hauptcodes hinzugefügt. Es funktioniert, aber wenn man die Schaltfläche auf der vertikalen Aris-t2-Symbolleiste platziert, bewegt sich das Symbol nach links. Wenn Sie das Symbol durch ein anderes ersetzen, bleibt der Fehler bestehen. Die Schaltflächen anderer Skripte werden korrekt angezeigt.

    Wenn Sie die Schaltfläche in der Navigationsleiste platzieren, bleibt der Fehler bestehen, aber er ist nicht bemerkbar, da die Verschiebung horizontal ist.

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

    • lenny2
    • 1. November 2023 um 15:07

    Hallo,

    Das Skript öffnet Firefox-Ordner und startet externe Anwendungen. Die Skript-Schaltfläche nimmt eine feste Position in der Nähe der Hamburger-Schaltfläche ein, sie kann verschoben werden, aber nur bis der Browser neu gestartet wird.

    Bitte korrigieren Sie den Code so, dass die Schaltfläche vollständig verschoben werden kann und die Position beim Neustart erhalten bleibt.

    Code
    // ==UserScript==
    // @name           Appmenu_Lite.uc.js
    // @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
    //                 ### Z.181 geändert von Toolbar in Menüleiste
    //                 zurück in Toolbar (Z.191)
    // https://www.camp-firefox.de/forum/thema/112673/?postID=1159814#post1159814
    // ==/UserScript==
    
    
    var Appmenu = {
    // Editor mit angegebenem Pfad verwenden
    editor: 'notepad.exe',
    
    
    // in 'view_source.editor.path' eingetragenen Editor verwenden
    editor: Services.prefs.getCharPref('view_source.editor.path'),
    
    
    // Dateimanager mit angegebenem Pfad verwenden
    //fileManager: '""',
    
    
    autohideEmptySubDirs: true,
    // Submenüs ohne Inhalt im Hauptmenü automatisch ausblenden
    moveSubDirstoBottom: true,
    // Submenüs im Hauptmenü nach unten verschieben
    subdirPopupHash: [],
    subdirMenuHash: [],
    toolbar: {
    // Submenüs des Hauptmenüs definieren; Separator einfügen mit {name: 'separator'}
    subdirs: [
    
    
    ],
    // Untermenü Firefox Funktionen
    apps: [{
    name: 'userChrome.css',
    path: '\\chrome\\userChrome.css',
    image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFklEQVQ4jXXR3U9bdQDG8fMHbFcjLjFRE2PIEhsTTfTOK++8UmNc2JzeaIQ0GzFBnSxLUDvs1DnCRJSgvIjsFUYXNg/Ki8IKnfQFCm3T0xZq11Eobc/pK6ft+fXrxYyhMT7Jc/l8bh5J2heLZeKxmZlQdGU1oblXtjWXN6m5fBlt2ZfRFr2aKk/Hfzt84PAj0v/lwjcLjelkTvBP8gIeFAWr6Qq3lQLTgTIX+mZ+P7AfmYjSfS0o+q9E6B9yF8cmAyVjJlrlTrjCLaXMgLfEoCeDM17E5lZxx+BM38KCdPDgIUmSJOlnP7WLdsHQSpWh1QoDrj0653L0O3K8O7bDs71/0XIjSDRdYno9hyOgsxiBiz/MLTQ0NDwqjfrQupcENwNVuhb3sPl0+hx5bKt5Prid5LneKO9PBNnN6Tg3Svy6nuXassovCrSe7uqRBjcQX3lgJAwjCnzrrHD+bpEue573bCkaL8Uwjytki2UiqoE7UWZ2o4QtbGD97s6S9NTRsz1PvH5m9PFXP/rpyTfOTjYPOIzWy25ahpd550cHb35vp3tqjVTRYFM1WNup4IjrzCfB0ntrqe6Fl196q3Ezsq0blRJqrviw2QKpfJlEocb9nCCUruJNVnCp8FnPxGIdYLXOPq1Es/oesFuCnSIkCrCVrxHPGsQ0QSRtEEhV8Rfgk0s364GOjkmTP5LRCwK2C4KtvCCeE9zPCmJZQVQ1iKhVQqpAKUFH93g90N4+bvKGUrpWhQf7h5ogouko2Sz2eBRHPE9Yh/avx+qBtrYrJldwV09X+Xe4oQoiWo3lrTh3E2HkYIZR/xoezeDjL/8DDJuWAkk9WYZNTRBWBUrmYWeDGtfXfVz1xBj88x72ZIXTX1yvB06dGjbN+5J6ogwhtUYwLQikBYGMYH6zwohTYdC+zpgzgTsHbZ9frQdaWoee+SOQZxuI6hDZA6UE/iKs5cCegLkYONLg0qHt/A1PHXDkyAuHXjvx4eW3T1qmTpgt8nGzRT7Wck4+2nxObmrulJvMVvmY2So3NXfKx09ap55/8ZVP/waJWLfEOCt3rAAAAABJRU5ErkJggg=='
    },
    {
    name: 'userContent.css',
    path: '\\chrome\\userContent.css',
    image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFklEQVQ4jXXR3U9bdQDG8fMHbFcjLjFRE2PIEhsTTfTOK++8UmNc2JzeaIQ0GzFBnSxLUDvs1DnCRJSgvIjsFUYXNg/Ki8IKnfQFCm3T0xZq11Eobc/pK6ft+fXrxYyhMT7Jc/l8bh5J2heLZeKxmZlQdGU1oblXtjWXN6m5fBlt2ZfRFr2aKk/Hfzt84PAj0v/lwjcLjelkTvBP8gIeFAWr6Qq3lQLTgTIX+mZ+P7AfmYjSfS0o+q9E6B9yF8cmAyVjJlrlTrjCLaXMgLfEoCeDM17E5lZxx+BM38KCdPDgIUmSJOlnP7WLdsHQSpWh1QoDrj0653L0O3K8O7bDs71/0XIjSDRdYno9hyOgsxiBiz/MLTQ0NDwqjfrQupcENwNVuhb3sPl0+hx5bKt5Prid5LneKO9PBNnN6Tg3Svy6nuXassovCrSe7uqRBjcQX3lgJAwjCnzrrHD+bpEue573bCkaL8Uwjytki2UiqoE7UWZ2o4QtbGD97s6S9NTRsz1PvH5m9PFXP/rpyTfOTjYPOIzWy25ahpd550cHb35vp3tqjVTRYFM1WNup4IjrzCfB0ntrqe6Fl196q3Ezsq0blRJqrviw2QKpfJlEocb9nCCUruJNVnCp8FnPxGIdYLXOPq1Es/oesFuCnSIkCrCVrxHPGsQ0QSRtEEhV8Rfgk0s364GOjkmTP5LRCwK2C4KtvCCeE9zPCmJZQVQ1iKhVQqpAKUFH93g90N4+bvKGUrpWhQf7h5ogouko2Sz2eBRHPE9Yh/avx+qBtrYrJldwV09X+Xe4oQoiWo3lrTh3E2HkYIZR/xoezeDjL/8DDJuWAkk9WYZNTRBWBUrmYWeDGtfXfVz1xBj88x72ZIXTX1yvB06dGjbN+5J6ogwhtUYwLQikBYGMYH6zwohTYdC+zpgzgTsHbZ9frQdaWoee+SOQZxuI6hDZA6UE/iKs5cCegLkYONLg0qHt/A1PHXDkyAuHXjvx4eW3T1qmTpgt8nGzRT7Wck4+2nxObmrulJvMVvmY2So3NXfKx09ap55/8ZVP/waJWLfEOCt3rAAAAABJRU5ErkJggg=='
    },
    {
    name: 'user.js',
    path: '\\user.js',
    image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqMU11IFFEU/vbO7Iyuums/GvmXhISBiOWWGFgGiyaC0UMkWRT11FNPQbEl9iNb0mtgUEQW+xjUQ5RrlClZ5IbaQ0bpw+paSGLGbrs7O3emc2d/kKjowBnm3HvnO9/5vju2Tb4ARJiUOjcQ1fhizUZnkVORsBzXMT7/HZLNZp0RT8ZssEuUjEGVWZWMdJimibhuXO4/UFvUWVeKf0Xg0yJcOXa03359i2UWDQKIackTmY91qkXyVWmmz/qezyBBbCvX5TXLGfpUo7mquETUEY1bgKtD0JeIvsMu4cXsNxz2R6DIDHJGAOqQX6CmyjjnEN/bfqPuYJIFrPLY5Ly346RYyzLQE/Hq7SUu66CWNFJd0+KZaTYFioxgeAV2mKH1vYPBfFVCWgOa0eB76stcpHwSmmFAQMiktkjxLpJUR2glBtlIzArsn9QoxYAaGJxXr8lVECHruGHSrEDxhccWfLinLcXozEM4cmTkJmITWVuzNkpKQ32pC1GuW1039DzB6OlWSCQaSUoacTCJYfiUB2ZRxR3RRAzGLAeIQmFeTrkAUumCVF4ZxMCR3bg0HLaU13UDMaJr0GjnhkLoP9gIjXNT1CxJUHT7zKhuFO68MYKqa8/g62jEgw/LePP5I3ZVroV/cgGin9m3HyPT0/BPLcHbskOMasoJQl+52Ja1ip19hIWoBofKLG2ut29Fp/8duraVIvwjBiGe2AtHEpYIjGnRt30vZxCizTnKJRLs7qsp5NOdONRQi703x9Dt2QInWbj56hC6GutQoNpxb+w9vpzf57Y5Pcc9SlNngEaxRJFpZoVEFN4fbarDwMhkyiXaFYofo7X7oxP42t3mrvAFgsIJlbLmTz9NWe/TcRvxnPO2uEVd3js4LrSY97a66S8O4j+iPp1/q/FLgAEAGto2bg8Nx1UAAAAASUVORK5CYII='
    },
    {
    name: 'separator'
    },
    // Lokaler Pfad
    {
    name: 'Profiles folder',
    path: '\\',
    image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAABqUlEQVQ4jZWRvYsTURTFf2/mhYiwIqjFEvxYRIlVQFgUbC0strSwsxC009ZuwcZa7AT9G0QrEW0EWUUEBbVQBDG6hKjrJqvJvDfvXot5SWZMNuLAhXnnnnPulwG4f31f68jyymWTpqAKCL3up87LR49XL93CM+ez91bZ2zp94e7+5qlDIKA5qEfy39TqtWM36g/OXblJtp2Beffw/Frz5NkTZTGagWZIGNB+/+KLIWyNc3iCG+Rvnj2/uHK1/9R8fX0tLC61koLgYmSTkBImI9zRXW/3Xj1ZO2PRUeWq0A02Gf7aiLgvmXuMOnbUk12Nw43bFvKx60i82f3MoP+Nhd0LoCEa5KA5EjI0mqVpqNnv7beI60VSQez/7NA8vhxbTkBNDIorKaCw0U132j2NJRYPHq12IQdK85a7cxXMJgGLOJDhhCDbiaaXK+JqFhzVjc+rWuWkJqR2fPd/VZ7KZ6AuKQzmzTtbGHFft4gHHc4Q/tW6To9qTI4F/9/CESbB10o7mH2qiXh6PJP4xK5//HCn/6OTIDkQQwPgQQIQ/zUUOYlvAlu9IH8ApVrKnkSFVL8AAAAASUVORK5CYII='
    },
    {
    name: 'Chrome folder',
    path: '\\chrome',
    image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAABqUlEQVQ4jZWRvYsTURTFf2/mhYiwIqjFEvxYRIlVQFgUbC0strSwsxC009ZuwcZa7AT9G0QrEW0EWUUEBbVQBDG6hKjrJqvJvDfvXot5SWZMNuLAhXnnnnPulwG4f31f68jyymWTpqAKCL3up87LR49XL93CM+ez91bZ2zp94e7+5qlDIKA5qEfy39TqtWM36g/OXblJtp2Beffw/Frz5NkTZTGagWZIGNB+/+KLIWyNc3iCG+Rvnj2/uHK1/9R8fX0tLC61koLgYmSTkBImI9zRXW/3Xj1ZO2PRUeWq0A02Gf7aiLgvmXuMOnbUk12Nw43bFvKx60i82f3MoP+Nhd0LoCEa5KA5EjI0mqVpqNnv7beI60VSQez/7NA8vhxbTkBNDIorKaCw0U132j2NJRYPHq12IQdK85a7cxXMJgGLOJDhhCDbiaaXK+JqFhzVjc+rWuWkJqR2fPd/VZ7KZ6AuKQzmzTtbGHFft4gHHc4Q/tW6To9qTI4F/9/CESbB10o7mH2qiXh6PJP4xK5//HCn/6OTIDkQQwPgQQIQ/zUUOYlvAlu9IH8ApVrKnkSFVL8AAAAASUVORK5CYII='
    },
    {
    name: 'CSS folder',
    path: '\\chrome\\CSS',
    image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsSAAALEgHS3X78AAABQklEQVQokWP03NZ67s19BuKAnpA882d3pX////9nYCAGvfj+gYlIs+GAZA0M4otSnnx5+/ffv7///r34+l50Vjx+LgsDA4Mkl+Ds45t///2TZRP49/E7/FwWiD2nHl3fdv3Ejhun/v35i5/LAnfbj9+/jt6/zMDA8O//vwrnaCMZtd03z2BysXg6bGHDvtvn3DXM1iU1MzIyonERGthZWM3ltRgYGL7+/N6wc37TzoVMjEyMGFyok4xl1HUllfLsgkVq/Lakds44tpGB4T9ECo3LwsDA8Pr7xyybAAYGhjdfPzL8Z3j77WOubRCE+x+Dyyi+KOXfj99/H79j+Pvv/3+G/wz/GRkYGRkZGBgYsHKZIM5nkhX8x8T4n+E/AwPDf4b///7///f/P1Yu1NOM7KwsckIMzIRTCpOukDzxenQkFQF0hPh3MT13CgAAAABJRU5ErkJggg=='
    },
    {
    name: 'separator'
    },
    // Run external applications
    {
    name: 'Notepad',
    path: 'C:\\Windows\\notepad.exe',
    image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACoUlEQVQ4jaWTzYtVdRjHP7/febln7rnee53ROSEZQotBcpGgiwiamGghUjT9ASG4cVO0HNoOroJ2BkJughBBpDZilIW50jB1AhXipjWT4Ghz7znn3vP2e2sxpBMMuOi7eeCB58P3efg+8D8ltmt+d/Xqmw8e/DkXRuFfQspVJ8TaB4uLG0II91zAp9/eig/PuJVbt3/ZK6AWzmqHcJ6UqVXVoK6K339dufHFl2fOXt8WMNjIPtkdR8vKOjkaT3g0TFldf8J6mpJmY6xWBMW6Hf/w2b6T5war/tbhr+/+scf3xPFh2eB5EhGExP0+SdSGSQVFRVrWzD40cuTMNPBfQL8dfFwo6xzIvKgAaIwlqxWVNtTakEQBLWeojekCPAV8fv3OgXFjXqvNZNQOfBywUdaUytAYQ9ooKqU5vGuae5MxgS96zwDOiernu8dW82IYeV4QhwEOsM4xrBryRlEbQ0c4kjjiZlnirP/MwUff33j9vnMzoS+Hu1ph0p+yaGtRZrMWSlMpzcGkj9WKosixsOngw4sXW3ce/X3UCTmJQl/s73c6xlmMdU8h1jm6niCJIybjHN2UIOUmYGWdd34bjXZKhPU94ZJAJlXT4IB/U+MJOJT00dqg8jFNkdEKg80Vdvc6R8J4x0uPx5NCN40slZop6wZwCARCCGYjnxfjKazRZHmGrnJ63U4PQJ5ffOP49OTxiYPT0VfvvvxCP9nRYSqOIWxROyiV4pWdHbTROGMYpRlOFcgwmgU8H+DcsfcHwODylStr7V77vWEjFjIZvbpWGy+rFfu6bZTWTEnBMB0xzOsV6dnbgNj2mQCWlpZm5hfenu9047ec8Be8VmtO16W4dPnHny59c+HEzWvX7m0503MllpeX9546fXp+a/gA/gHvcVhlUwp3wwAAAABJRU5ErkJggg=='
    },
    {
    name: 'separator',
    },
    ],
    // Firefox Funktionen definieren
    configs: [
    {
    name: 'Clear History',
    command: "Sanitizer.showUI(window);",
    id: 'AMsanitize',
    image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACh0lEQVQ4jZWRa0jTARTFTyoYWqSpJGpEFGJ9sZIekFGZ5aOHJBSRkJhEho5AqIVmrBrLuU3BjNK9tBeZFSYZgSn5RDJTVNTmNNLN5eaDfMxw/j19E8QsvZ/v78e59+DaUey/eRyGtCgMiCMRgZVOWhTMz6+4sUTkzvRoTN2IQPiKBOlRGClLXcPqDA8WJ7sxPRoGCeCkluNOngxe/xWII3BVFus0+TFtHaszPCg9jfF8Kb5qFKBajm3LCeGUFo0HkpOYLLvuzqLMVax6s3OuVB8wrs7CgWWfIkvEbU0m5porD9PWJ2Zp0obpwj0w6bPRplFAnCuDz5KwRoHzOhXs3Y0xHDYmsVEUwhL/tex6e5FWYyqbKsOmH+estutV0D+Uwn+xQI54rRK2imdB9oroIH7Yt5H27gQK1kQKthQKoxn8bc3kl6rwGX22y7ROhSfqezgkkcBpXpIrgmvhVnS9Cls/67BKKQwnUxiTUhgWURiKpcMczomBS7T1itlSHTn3Wus3oVXAujDJLcR/Kg2eEsayKFjjKdgSKAzFUhgM5UTPdlpafWls8KCpLYr9HZepV2JogeC+HH5P8zynHSMKzppD6TDtpb0vmKNdW2hu9mZPrQsNNc4c7DzL+vchDp0KLxb9ozAbHb0tFzhiOEZLqy8HmjxprHOlocaZhhpnmtpP0Nh8jnqV86RajoBFgkdyHHlZ4Gf/aUihsd5jHjQ2+NDSFcfOxjNzhTkuvwqycHDJWnUq1NeX756xdMfz++dAmjtO0fJNxLp3uxxaFQYLZAhcEgaAPBm8dEr0t9XGCD/a49hQvmOmKMfVrlOiOF8C73/C8xIpNmmUGNEpMaxVQqe+i81/2/sDdNth33v8JSgAAAAASUVORK5CYII="
    },
    ]
    },
    _externalAppPopup: null,
    _isready: false,
    init: function() {
    var isUrlbar = 1;  // 0: TabsToolbar; 1: navbar
    this.handleRelativePath(this.toolbar.apps);
    const XULNS = 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';
    
    
    var ExternalAppBtn = document.createElementNS(XULNS, 'toolbarbutton');
    ExternalAppBtn.id = "AppMenuButton";
    ExternalAppBtn.setAttribute("label", "AppButton");
    ExternalAppBtn.setAttribute("onclick", "event.preventDefault();event.stopPropagation();");
    ExternalAppBtn.setAttribute("tooltiptext", "Firefox Menü");
    ExternalAppBtn.setAttribute("type", "menu");
    ExternalAppBtn.setAttribute("removable", "true");
    
    
    if (isUrlbar) {
    document.getElementById("nav-bar-customization-target").appendChild(ExternalAppBtn);
    ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA6SURBVDhPYxgcIDg+6z8IQ7lwPiEMVT4YDBh4gO4kZGfiw1Dlg8GAgQfoTkJ2Jj4MVT4YDCAfMDAAAFSm42US1bMnAAAAAElFTkSuQmCC)";
    } else {
    ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAAAUCAYAAAAwaEt4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF3SURBVFhH7ZUxS8RAEIX9M1fb29vb+wP8AdaCYCVY2FmInY1YWmlrp7WtNp6ihyKKCDYrb7kPxsuMJiG5CO6DR5LZmd2Zl9ndhduNUSqssggTsAgTsAgTsAgTsLEw71enyYPGHvZW8vvHzUUlrinvd5e/reX59Mk/K8zn5DrPBTyfPtlamOeTTXe8K4LHg1V3vG92KgwdI2ADT8fr+UmcfNVZ4OVspzIH0Joau9teSq/n+1Nryl1l8yA3/LUdgWLxq8NOthKJ/CQMUCE2YQuJEwkz3lqsbC+AOCoeaB5y1U8hn7qcmzB0hArkr79dHuVvhFLhs3GaU9+Tw7WpJWV/2SQIIA4bIpJbU85tK1Gg6IkLojgKtoV664kWbc+oQYRRpwh0DHZLQJztGM6LOh3T9oYcRBjrZ2F9ADYJGIFcZg9bxPFy/Y2DCCOqxe2tpHd7cwAbp3G6TVDh9mBlPp1h+va6rC4bC/NfWIQJWIQJWIQJWIRxOUpfQ+jqXwPuQ7IAAAAASUVORK5CYII=)";
    var TabsToolbar = document.getElementById("nav-bar");
    TabsToolbar.insertBefore(ExternalAppBtn, TabsToolbar.firstChild);
    }
    
    
    var ExternalAppPopup = document.createElementNS(XULNS, 'menupopup');
    //ExternalAppPopup.setAttribute('onpopupshowing', 'event.stopPropagation(); Appmenu.onpopupshowing();');
    ExternalAppPopup.setAttribute('id', 'AMpopup');
    this._externalAppPopup = ExternalAppPopup;
    ExternalAppBtn.appendChild(ExternalAppPopup);
    Appmenu.onpopupshowing();
    },
    
    
    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.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.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;
    },
    
    
    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("ProfD", 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 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, [path], 1);
    } else {
    file.launch();
    }
    }
    },
    };
    
    
    if (window.gBrowser)
    Appmenu.init();
    Alles anzeigen

    Dies ist ein leichtgewichtiges Skript, das ursprüngliche Skript mit denselben Funktionen finden Sie hier

    Vielen Dank für Ihre Hilfe

  • Deskop Icon für Privates Fenster.

    • lenny2
    • 28. Oktober 2023 um 19:21

    ...\Firefox\private_browsing.exe

  • FF119-Neue Tabs ohne schwarzen Rand und eckig

    • lenny2
    • 25. Oktober 2023 um 07:21
    Zitat von jd_cort

    und wieder eckig gestalten

    CSS
    .tab-background {
    border-radius: var(--user-tab-rounding) var(--user-tab-rounding) 0px 0px !important;
    margin-block: 1px 0 !important;
    }
  • Bibliothek in Tab öffnen - context menu

    • lenny2
    • 24. Oktober 2023 um 11:08
    Zitat von 2002Andreas

    Teste bitte:

    Super! :thumbup: Herzlichen Dank

Unterstütze uns!

Jährlich (2025)

101,9 %

101,9% (662,48 von 650 EUR)

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