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

Beiträge von Mira_Belle

  • Symbole in den Kontextmenüs [ Update ]

    • Mira_Belle
    • 7. Januar 2023 um 11:03

    :/

    Der Pfad zum Userprofil schaut wie folgt aus.

    C:/Users/Miras/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release

    Dort gibt es den Ordner chrome

    In diesem liegen direkt alle *.css und *.us.js :!:

    Die Symbole sind alle in dem Ordner icons

    Der komplette Pfad: C:/Users/Miras/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons/

    Wenn ich die Pfade so angebe, wie Du vorgeschlagen hast, funktioniert es bei mir nicht!

    Also wenn ich aus

    CSS
        /* Datei  */
        #file-menu::before { background: url("file:///C:/Users/Miras/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons/mail-inbox-all.svg")!important; }
    CSS
        /* Datei  */
        #file-menu::before { background: url("./icons/mail-inbox-all.svg")!important; }

    funktioniert es nicht.

    Ich teste!


    AH :!:

    Neuen Ordner css angelegt.

    Die Symbole.css dorthin verschoben.

    Den import in der userChrome.css von @import url("Symbole.css"); in @import url("./css/Symbole.css"); geändert

    C:/Users/Miras/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/css/

    In der Symbole.css testweise einige Pfade geändert!

    Z.B. von ...

    CSS
        /* Datei  */
        #file-menu::before { background: url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons//icons/mail-inbox-all.svg")!important; }
        /* Bearbeiten  */
        #edit-menu::before { background: url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons//icons/edit.svg")!important; }
        /* Ansicht  */
        #view-menu::before { background: url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons//icons/content-view.svg")!important; }
        /* Chronik  */
        #history-menu::before { background: url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons//history_2.svg")!important; }
        /* Lesezeichen  */
        #bookmarksMenu::before { background: url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons//icons/bookmark.svg")!important; }
        /* Extras  */
        #tools-menu::before { background: url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons//icons/toolbox.svg")!important; }
        /* Hilfe  */
        #helpMenu::before { background: url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons//icons/help.svg")!important; }
    Alles anzeigen

    ... zu ...

    CSS
        /* Datei  */
        #file-menu::before { background: url("../icons/mail-inbox-all.svg")!important; }
        /* Bearbeiten  */
        #edit-menu::before { background: url("../icons/edit.svg")!important; }
        /* Ansicht  */
        #view-menu::before { background: url("../icons/content-view.svg")!important; }
        /* Chronik  */
        #history-menu::before { background: url("../icons/history_2.svg")!important; }
        /* Lesezeichen  */
        #bookmarksMenu::before { background: url("../icons/bookmark.svg")!important; }
        /* Extras  */
        #tools-menu::before { background: url("../icons/toolbox.svg")!important; }
        /* Hilfe  */
        #helpMenu::before { background: url("../icons/help.svg")!important; }
    Alles anzeigen

    Funktioniert :thumbup:

    Danke.

  • Allgemeine Frage(n) zu JavaScript

    • Mira_Belle
    • 7. Januar 2023 um 09:27
    Zitat von visoer

    Vielleicht kannst du daraus etwas ableiten.

    Sehr gute Idee, das mit der customisation area :!:

    Habe ich genau so mal übernommen.

    JavaScript
    /* Addons-UpDate-Check-Button */
    
    // https://www.camp-firefox.de/forum/thema/135551-skript-f%C3%BCr-add-ons-update/?postID=1213378#post1213378
    // Test: https://www.camp-firefox.de/forum/thema/135551-skript-f%C3%BCr-add-ons-update/?postID=1213646#post1213646
    // Test: https://www.camp-firefox.de/forum/thema/135803-allgemeine-frage-n-zu-javascript/?postID=1216977#post1216977
    
    (function() {
      // start customisation area----------------------------------
      //  let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
      //  let buttonicon = "UpDate.png";
        let buttonIcon = "UpDate.png" // Name & Dateiendung des anzuzeigenden Symbols
        let buttonPath = "chrome/css/icons/" // Pfad zum Ordner der das Icon beinhaltet
      // end customisation area-----------------------------------
    
      if (!window.gBrowser) return;
    
      CustomizableUI.createWidget({
        id: 'addons-update-button',
        defaultArea: CustomizableUI.AREA_NAVBAR,
        label: 'Add-ons Update',
        tooltiptext: 'Add-ons aktualisieren',
        onCommand: onCommand,
        onCreated: function(button) {
      
            button.style.listStyleImage = "url('" + PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)) + buttonPath + buttonIcon + "')";
            
          //  button.style.listStyleImage = "url('" + ProfilePath + buttonicon + "');"
    
          }
      });
     
      function onCommand(event) {
        event.target.ownerGlobal.openTrustedLinkIn('about:addons', 'tab');
        addEventListener('pageshow', function onPageshow(event) {
          let document = event.target;
          if (document.URL != 'about:addons') return;
          removeEventListener('pageshow', onPageshow);
          document.querySelector('addon-page-options panel-item[action="view-recent-updates"]').click();
          document.querySelector('addon-page-options panel-item[action="check-for-updates"]').click();
          content.setTimeout(function() { 
            let categories = document.getElementById('categories');
            categories.querySelector('button[viewid="addons://updates/recent"]').click();
            categories.querySelector('button[viewid="addons://updates/available"]').click();
          }, 1500); 
        });
      };
    })();
    Alles anzeigen

    Aber leider ändert sich am Ergebnis bei beiden Varianten nichts. X(

    Button ist vorhanden, aber ohne Symbol :!:

    || ;(

  • Allgemeine Frage(n) zu JavaScript

    • Mira_Belle
    • 6. Januar 2023 um 23:53

    Hi,

    ich habe weitere Fragen!

    In diesem Script bekomme ich es nicht hin, mein neues Wissen um die Pfadangaben umzusetzen!

    Das JavaScript:

    JavaScript
    /* Addons-UpDate-Check-Button */
    
    // https://www.camp-firefox.de/forum/thema/135551-skript-f%C3%BCr-add-ons-update/?postID=1213378#post1213378
    // Test: https://www.camp-firefox.de/forum/thema/135551-skript-f%C3%BCr-add-ons-update/?postID=1213646#post1213646
    
    (function() {
      if (!window.gBrowser) return;
    
      CustomizableUI.createWidget({
        id: 'addons-update-button',
        defaultArea: CustomizableUI.AREA_NAVBAR,
        label: 'Add-ons Update',
        tooltiptext: 'Add-ons aktualisieren',
        onCommand: onCommand,
        onCreated: function(button) {
    
          button.style.listStyleImage = 'url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons/UpDate.png")';
        }
      });
     
      function onCommand(event) {
        event.target.ownerGlobal.openTrustedLinkIn('about:addons', 'tab');
        addEventListener('pageshow', function onPageshow(event) {
          let document = event.target;
          if (document.URL != 'about:addons') return;
          removeEventListener('pageshow', onPageshow);
          document.querySelector('addon-page-options panel-item[action="view-recent-updates"]').click();
          document.querySelector('addon-page-options panel-item[action="check-for-updates"]').click();
          content.setTimeout(function() { 
            let categories = document.getElementById('categories');
            categories.querySelector('button[viewid="addons://updates/recent"]').click();
            categories.querySelector('button[viewid="addons://updates/available"]').click();
          }, 1500); 
        });
      };
    })();
    Alles anzeigen

    Wie man unschwer erkennen kann, gibt es hier einen absoluten Pfad!

    button.style.listStyleImage = 'url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons/UpDate.png")';

    Diesen hätte ich aber gerne mittels Variablen umgestaltet.

    Entweder so ...

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let buttonicon = "UpDate.png";
    button.style.listStyleImage = "url('" + ProfilePath + buttonicon + "');"

    oder so ...

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); 
    let buttonicon = "UpDate.png";
    button.style.listStyleImage = 'url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) + '");',

    Aber, es funktioniert nicht!

    D.h. das Symbol wird nicht angezeigt, ein Button aber erstellt.

    Was ist Falsch? Warum wird das Symbol nicht angezeigt?

    Ich habe auch schon beide Varianten so abgeändert, dass der Dateiname verwendet wurde,

    also so: button.style.listStyleImage = "url('" + ProfilePath + "UpDate.png" + "'));"

    und so: button.style.listStyleImage = 'url("' + ("file:" + currentProfileDirectory + "/chrome/icons/UpDate.png" ) + '");',

    Gleiches Resultat!

    Button ja, aber ohne Symbol.

    PS:

    Auch ...

    button.style.listStyleImage = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB9klEQVR42o2TP2gTURzHvwcRXqDDCzi8gww+cfACBRsoJAWXji0KzZFBxUELDoouOmnG6JQiWOogVAcpHUpvKDRLQbekoKRDJXHyLYHLIOQNhXtgBt+7u+SSpkq+w93xu9/vw++vhVj0MiUOyzicEo5LuFh/ACGV6PT6HflbKmOyzINnGdt5kPOKnBYxg5pCNu99apdEt9cLAYdPi4cr8+kVDGYJ10oB3mlQdzebqxZnlLZf5vsEwYzRkRTSyL1pZSznCuPtZ/zXlMcNV9e2FH2LBvCjDrAFoNsYueTeiashoPV4EkDWNrSzA/ltP2rwohumjZ9foI5qI7/8+yHgkT0CkGvLwK0q5KYLovzIWK6BXNf2754GVBPABz8GPEwAithQKQJ6JmJiBmqOQekGEyUTqAF8HALuJwDML4OY2gcK6us2EPQj+811Xf+J7kcrAXwOAZS37oyVcLsCFO5CHXvAQSWyLZaist6ugvRFAtg1gOw0QJrGFXTQmYyMcxRytwJyWp8YVAIoj/eAhoHh24nH2GmADHT95yad39MApm+gUbZ9OwVq1mNyWeKsppaEwB9ALu35drjKzwvs1YuFdHXa8V9bCNROgsrGce91CDCX6GbJkxJPr9sE9v+CfQXfE8H2fldtmYu0xn8a0IUZn0tgeMpGfwErbLqeHktDngAAAABJRU5ErkJggg==)';

    ... funktioniert.

  • Menu ID von "Anwendungsmenü öffnen"

    • Mira_Belle
    • 6. Januar 2023 um 16:44
    Zitat von 2002Andreas
    Zitat von M.T.R

    Müßte das nicht beim Beenden zurückgesetzt werden?

    Zumindest bei mir in einem neuen Profil ist das auch so. :/


    Edit:

    Auch in allen anderen Profilen ist das hier so.

    Ist bei mir auch so!

    Zwar bleiben die Menüs noch eine Weile offen, aber sobald man irgendwas anklickt,

    schließen sie sich.

  • Skript für Add-ons Update - Pfad zum Icon ändern

    • Mira_Belle
    • 6. Januar 2023 um 12:43

    Oh, Käse, war/ist ein Missgeschick!

    So sollte es ausschauen!

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let buttonicon = "UpDate.png";
    button.style.listStyleImage = "url('" + ProfilePath + buttonicon + "');"

    ... oder auch ...

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); 
    let buttonicon = "UpDate.png";
    button.style.listStyleImage = 'url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) + '");',

    ... wird das Symbon einfach nicht angezeigt.

  • Button_PersonalToolbar.uc.js

    • Mira_Belle
    • 6. Januar 2023 um 12:25
    Zitat von Horstmann

    Nur eins , wenn ich mich recht erinnere , wurde hier im Forum mal erwähnt dass Zeile 41 :

    JavaScript
            CustomizableUI.registerToolbarNode(tb);

    eigentlich nur bei der Erstellung von Toolbar Leisten verwendet wird, also hier evtl. nichts macht (?) .

    Ich benutze den Eintrag schon länger nicht mehr , ohne Probleme .

    Vielen Dank @Horstmann und @BrokenHeart

    Ist rausgenommen und korrigiert.

  • Skript für Add-ons Update - Pfad zum Icon ändern

    • Mira_Belle
    • 6. Januar 2023 um 12:18

    Ich buddle mal diesen Thread wieder hervor.

    Habe versucht das mit dem Profilpfad umzusetzen, jedoch will es nicht so.

    Z.Z nutze ich das Script in dieser Version.

    JavaScript
    /* Addons-UpDate-Check-Button */
    
    // https://www.camp-firefox.de/forum/thema/135551-skript-f%C3%BCr-add-ons-update/?postID=1213378#post1213378
    // Test: https://www.camp-firefox.de/forum/thema/135551-skript-f%C3%BCr-add-ons-update/?postID=1213646#post1213646
    
    (function() {
      if (!window.gBrowser) return;
    
      CustomizableUI.createWidget({
        id: 'addons-update-button',
        defaultArea: CustomizableUI.AREA_NAVBAR,
        label: 'Add-ons Update',
        tooltiptext: 'Add-ons aktualisieren',
        onCommand: onCommand,
        onCreated: function(button) {
    
          button.style.listStyleImage = 'url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons/UpDate.png")';
        }
      });
     
      function onCommand(event) {
        event.target.ownerGlobal.openTrustedLinkIn('about:addons', 'tab');
        addEventListener('pageshow', function onPageshow(event) {
          let document = event.target;
          if (document.URL != 'about:addons') return;
          removeEventListener('pageshow', onPageshow);
          document.querySelector('addon-page-options panel-item[action="view-recent-updates"]').click();
          document.querySelector('addon-page-options panel-item[action="check-for-updates"]').click();
          content.setTimeout(function() { 
            let categories = document.getElementById('categories');
            categories.querySelector('button[viewid="addons://updates/recent"]').click();
            categories.querySelector('button[viewid="addons://updates/available"]').click();
          }, 1500); 
        });
      };
    })();
    Alles anzeigen

    Wenn ich jedoch den Pfad für das Symbol in ...

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let buttonicon = "UpDate.png";
    button.style.listStyleImage = "list-style-image: url('" + ProfilePath + buttonicon + "');"

    ... oder auch ...

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); 
    let buttonicon = "UpDate.png";
    button.style.listStyleImage = 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) + '");',

    ... wird das Symbon einfach nicht angezeigt.

    Was mach ich denn Falsch?

    Wo ist der Fehler?

  • Button_PersonalToolbar.uc.js

    • Mira_Belle
    • 6. Januar 2023 um 10:23
    Zitat von BrokenHeart
    Zitat von Mira_Belle

    Wenn die Leiste per Tastatur aktiviert wird, funktioniert "autoClose" nicht.

    Das liegt daran, dass du in Zeile 51 bei Aufruf der 'OnClick'-Funktion keinen Parameter übergeben hast. Du musst die Funktion mit dem 'event' Parameter aufrufen, weil der in Zeile 80 benötigt wird, um 'autoclose' aufzurufen.

    Besten Dank!

    Ist beides korrigiert :!:

    JavaScript
        //----------BEGINN----------------------
        // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben)
        // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event
        document.addEventListener('keydown', (event) => {
            let keyName = event.key;
                if (event.altKey && keyName == 'q') {   // Funktion wird ausgeführt, wenn "Alt & q gedrückt werden
                    onClick(event);
                }
            }, false
        );
        //----------ENDE------------------------ 
        // Anmerkungen und beispiele am Ende des Scriptes
    Alles anzeigen
  • Symbole in den Kontextmenüs [ Update ]

    • Mira_Belle
    • 6. Januar 2023 um 08:11

    Es gibt etwas Neues von mir.

    Ich habe den CSS-Code der Sympole.css nun in ein JavaScript "überführt", da bei mir nur

    absolute Pfadangaben funktionierten.

    Z.B. sahen die Einträge so aus

    CSS
        /* Datei  */
        #file-menu::before { background: url("file:///C:/Users/Miras/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons/mail-inbox-all.svg")!important; }

    Nun wird daraus:

    JavaScript
         var css =`
    
         /* Datei  */
         #file-menu::before { background: url("${ProfilePath}/mail-inbox-all.svg") !important; }
       `;

    Mit dem JavaScript wird es nun viel einfacher, dieses auch in einem anderen Profil zu nutzen!

    Es müssen lediglich die Symbole in den entsprechenden Ordner kopiert werden.

    Hier also die neue Version:

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

    icons.zip

  • Button_PersonalToolbar.uc.js

    • Mira_Belle
    • 6. Januar 2023 um 06:54

    Es gibt was Neues.

    Das JavaScript würde von mir überarbeitet,

    es wurden Fehler korrigiert und Anpassungen, wie z.B. die Pfadangabe geändert.

    Und bevor das Script wieder in einem von zwei oder drei Threads "verschwindet",

    dachte ich mir, ich mache extra für dieses JavaScript einen neuen auf.

    Wer die Entwicklung und die Veränderungen verfolgen möchte =>

    Beitrag

    RE: Schaltflächenskripte und ihre Symbole

    […]

    Direkt in den ersten zwei Absätzen steht, was der Anwendungsfall ist: Wenn jemand bisher einen absoluten Pfad angibt (oder eine Grafik einbettet).

    Dein bisheriger Weg mag auch funktionieren. Schöner ist aber sicher der Weg über die PathUtils. Denn mit einem regulären Ausdruck zu arbeiten und etwas zu ersetzen, ist unnötig und ineffizient. Dann kommt dazu, dass der Weg über die Services-Methode weder Leerzeichen kodiert noch das file://-Protokoll ergänzt wird noch den chrome-Ordner…
    Sören Hentzschel
    5. Januar 2023 um 13:11
    Beitrag

    RE: Lesezeichensymbolleiste leer

    […]

    Das stimmt.

    Habe jetzt min. viermal den Thread durchgelesen, aber Horstmann hat recht!

    Es wird einem einfach nicht klar, welches Skript nierewa letzten Endes benutzt.


    Für den Fall, dass nierewa das Rätsel nicht mehr auflöst,

    biete ich hier das von mir überarbeitete und funktionierende JavaScript an.

    Es wurde die Animation integriert, sowie eine Tastenkombination!

    Bei dem Aktivieren der Leiste mittels Tastenkombination ist zu beachten, dass das automatische Schließen nicht funktioniert :!:

    Jedoch…
    Mira_Belle
    30. Dezember 2022 um 12:11

    und ganz wichtig

    Beitrag

    Allgemeine Frage(n) zu JavaScript

    Ich habe so ein Problem mit einem Script.

    Normalerweise schreibe ich die Variablen ganz an den Anfang,

    das ist m.M. übersichtlicher und funktioniert auch meist.

    Hier ein Beispiel:

    (Quelltext, 87 Zeilen)

    Nun gibt es Variablen, die funktionieren nicht, wenn man sie aus der Funktion heraus nimmt und an den Anfang verschiebt,

    z.B. let toolbaritem = aDocument.createXULElement('toolbarbutton');,

    aber auch let props = ... kann man nicht "rausnehmen".

    Warum ist das so?

    Noch konfuser macht mich ein anders…
    Mira_Belle
    4. Januar 2023 um 12:14
    JavaScript
    // Button_PersonalToolbar.uc.js
    // Source file https://www.camp-firefox.de/forum/thema/134920-schaltfl%C3%A4che-um-lesezeichen-leiste-ein-auszublenden/?postID=1213680#post1213680
    // Source file https://www.camp-firefox.de/forum/thema/134920-schaltfl%C3%A4che-um-lesezeichen-leiste-ein-auszublenden/?postID=1215809#post1215809
    // Source file https://www.camp-firefox.de/forum/thema/135748-lesezeichensymbolleiste-leer/?postID=1216410#post1216410
    // Source file https://www.camp-firefox.de/forum/thema/135812-button-personaltoolbar-uc-js/?postID=1216935#post1216935
    // PersonalToolbar_ausblenden
    // basierend auf den Ideen von BrokenHeart und visoer, Verbesserungen von Horstmann, Korrekturen von Sören und Anpassungen von Mira_Belle
    
    (function ptbut() {              
        if (location.href !== 'chrome://browser/content/browser.xhtml') return;
           
        let startHeight = '0px';                // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste
        let collapse = '0px';                   // Leiste nicht sichtbar
        let visible = '24px';                   // Leiste sichtbar
        let autoCloseTime = 5000;               // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec  
        let intervalID = 0;
        let persToolbar = document.getElementById('PersonalToolbar');
    
        try {
            CustomizableUI.createWidget({
                id: 'PersonalToolbar-button',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                    onBuild: function(aDocument) {
                        let toolbaritem = aDocument.createXULElement('toolbarbutton'); 
                        let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); 
                        // ^^ Pfadangabe zum Profilordner und gleich in den entsprechenden Unterordner ^^
                        let buttonicon = "bookmark-hollow.svg";  // Name & Dateiendung des anzuzeigenden Symbols
                        let props = {
                            id: 'PersonalToolbar-button',
                            class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                            removable: true,
                            label: 'Toggle',
                            tooltiptext: 'Lesezeichenleiste ein-/ausblenden',
                            style: "list-style-image: url('" + ProfilePath + buttonicon + "');"                     
                        };                   
                        for(var p in props)
                            toolbaritem.setAttribute(p, props[p]);
                        return toolbaritem;                 
                    }
            });
            CustomizableUI.registerToolbarNode(tb);
        } catch(e) { };
    
        //----------BEGINN----------------------
        // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben)
        // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event
        document.addEventListener('keydown', (event) => {
            let keyName = event.key;
                if (event.altKey && keyName == 'q') {   // Funktion wird ausgeführt, wenn "AltGr & q gedrückt werden
                    onClick();
                }
            }, false
        );
        //----------ENDE------------------------ 
        // Anmerkungen und beispiele am Ende des Scriptes
    
        document.getElementById('PersonalToolbar').style.minHeight = '0';
        document.getElementById('PersonalToolbar').style.transition = 'all 0.3s steps(6, end)';
    
        if( startHeight === visible || startHeight === collapse ) {
            document.getElementById('PersonalToolbar').style.height = startHeight;
        }
        else {
            document.getElementById('PersonalToolbar').style.height = visible;
        }
    
        document.getElementById('PersonalToolbar-button').addEventListener( "click", onClick );
    
        function onClick(aEvent) {          
            if (persToolbar.style.height == '') {
                persToolbar.style.height = collapse;
            }
            else if (persToolbar.style.height == visible) {
                persToolbar.style.height = collapse;
            }
            else if(persToolbar.style.height == collapse) {
                persToolbar.style.height = visible;
                if(!intervalID && autoCloseTime) {
                    intervalID =  aEvent.target.ownerGlobal.setInterval( autoClose, autoCloseTime ); 
                }
            }
        }
          
        function autoClose() {
            if( intervalID ) {
                if( persToolbar.style.height == visible) {
                    persToolbar.style.height = collapse;
                    clearInterval(intervalID); 
                    intervalID=0;
                }
            }
        }
    })();
    
    // Funktion wird ausgeführt, wenn STRG + Alt + l gedrückt wird
    //  if (event.ctrlKey && event.altKey && keyName == 'l') {       
    
    // Funktion wird ausgeführt, wenn STRG + w gedrückt werden
        //if (event.ctrlKey && keyName == 'w') {
    
    
    // PersonalToolbar.style.setProperty('min-height', '0', 'important' ); 
    // PersonalToolbar.style.setProperty('transition', 'all 0.3s steps(6, end)', 'important' ); 
    Alles anzeigen

    Was immer noch nicht funktioniert!

    Wenn die Leiste per Tastatur aktiviert wird, funktioniert "autoClose" nicht.

    Wenn sie per Button aktiviert wird, funktioniert es.

  • scrollbars.uc.js anpassen - geschafft und erledigt!

    • Mira_Belle
    • 6. Januar 2023 um 06:18

    Es gibt was Neues!

    Habe die Variable

    let scrollerProfileDirectory = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));

    geändert und auch gleich in den entsprechenden Ordner "verlinkt".

    Somit müssen auch Anpassungen am CSS-Code vorgenommen werden.

    Z.B. aus background-image: url("file:${scrollerProfileDirectory}/chrome/icons/resizer.svg") !important;

    wird background-image: url("${scrollerProfileDirectory}/resizer.svg") !important;

    JavaScript
    "use strict";
    /* Firefox 57+ userChrome.js tweaks - SCROLLBARS ***************************************************************************** */
    /* Original by Aris (aris-addons@gmx.net)************************************************************************************* */
    /* Github: https://github.com/aris-t2/customscrollbarsforfx ****************************************************************** */
    /* *************************************************************************************************************************** */
    /* Customized by Mira********************************************************************************************************* */
    /* version 2 nach (ECMAScript 2015) ****************************************************************************************** */
    /* https://www.camp-firefox.de/forum/thema/135133-custom-scrollbars-uc-js-anpassen/ ****************************************** */
    /* https://www.camp-firefox.de/forum/thema/135133-scrollbars-uc-js-anpassen-geschafft-und-erledigt/?postID=1216934#post1216934 */
    /* *************************************************************************************************************************** */
    /* Custom Scrollbars for Firefox ********************************************************************************************* */
    /* version 1.0.7 ************************************************************************************************************* */
    /* ******************************************************************************************************************************
     README
     
     !!! Wichtig !!!
    
     Die Einstellungen müssen auf 'false' gesetzt werden, damit dies auf aktuellen Firefox-Builds (102+) funktioniert
    
     about:config >
     widget.windows.overlay-scrollbars.enabled > false (Windows)
     widget.gtk.overlay-scrollbars.enabled > false (Linux/MacOSX)
    
     [!] 'Methode 2' ist erforderlich, um Firefox für benutzerdefinierte JavaScript-Dateien vorzubereiten
     [!] Die Datei 'custom_scrollbars.uc.js' gehört in den Firefox-Profilordner 'chrome'!
     -> Profilordner finden: Adressleiste > about:profiles > Wurzelordner > Ordner öffnen
     -> Datei zum Ordner \chrome\ hinzufügen (ggf. einen Ordner mit Namen "chrome" erstellen)
    
     [!] DER STARTUP-CACHE MUSS NACH JEDER ÄNDERUNG GELÖSCHT WERDEN!
     -> Ordner 'startupCache' finden: Adressleiste > about:profiles > Lokales Verzeichnis > Ordner öffnen > startupCache
     -> Firefox schließen
     -> Inhalt des 'startupCache'-Ordners löschen
    
    Alternativ mit einem JavaScipt!
     -> https://github.com/Endor8/userChrome.js/blob/master/Firefox%2087/RestartFirefoxButtonM.uc.js
    
     Aktivieren einer Einstellung > let ... auf 'true' setzen
     Deaktivieren einer Einstellung > let ... auf 'false' setzen
     Anpassungen vornehmen > Werte ändern
     - Farbe - Name: red, blue, transparent / Hexcode: #33CCFF, #FFF
     - Farbe - rgb(a): rgba(0,0,255,0.8) / hsl(a): hsla(240,100%,50%,0.8) // a = Sichtbarkeit (transparenz)
     - Zahlen: 1, 2, 3 ... 10, 11, 12 ...
     - Deckkraft (in Dezimalzahlen): 0.0 bis 1.0 z.B. 1.4 oder 1.75
     - Farbverläufe: linear-gradient(direction, color, color, color)
     - Beispiel für Farbverläufe: linear-gradient(to right, blue, #33CCFF, rgba(0,0,255,0.8))
    
     HINWEIS
     - Zu kleine Werte für die Scrollbar-Breite werden sich negativ auf einige Oberflaechenelemente auswirken!
     
    /* *************************************************************************************************************************** */
    /* *************************************************************************************************************************** */
    /* *************************************************************************************************************************** */
    
    // Path "berechneten" !
    let scrollerProfileDirectory = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    // GENERAL SCROLLBAR SETTINGS
    let custom_scrollbar_size_value = 16;                 // in px // default: custom_scrollbar_size_value = 17
    // CUSTOM SCROLLBAR SETTINGS ("custom_scrollbar_" --> "cs_")
    let cs_thumb_border = 1;                              // in px // default: cs_thumb_border = 0 // Rahmen des Sliders
    let cs_thumb_roundness = 7;                           // in px // default: cs_thumb_roundness = 0 // Rundung des Sliders
    let cs_thumb_minimal_size = 200;                      // in px
    // CUSTOM SCROLLBAR COLORS/GRADIENTS
    // - background
    let cs_background_color = "#5b5b66";                  // default: cs_background_color = "#DDDDDD"
    let cs_background_image_vertical = "unset";           // default: cs_background_image_vertical = "unset"
    let cs_background_image_horizontal = "unset";         // default: cs_background_image_horizontal = "unset"
    // - corner
    let cs_corner_background_color = "#bfbfbf";           // default: cs_corner_background_color = "#DDDDDD"
    let cs_corner_background_image = "unset";             // default: cs_corner_background_image = "unset"
    // - thumb/slider
    let cs_thumb_color = "#bfbfbf";                       // default: cs_thumb_color = "#33CCFF"
    let cs_thumb_image_vertical = "unset";                // default: cs_thumb_image_vertical = "unset"
    let cs_thumb_image_horizontal = "unset";              // default: cs_thumb_image_horizontal = "unset"
    let cs_thumb_hover_color = "orange";                  // default: cs_thumb_hover_color = "#66FFFF"
    let cs_thumb_hover_image_vertical = "unset";          // default: cs_thumb_hover_image_vertical = "unset"
    let cs_thumb_border_color = "#5b5b66";                // default: cs_thumb_border_color = "#33CCFF" "#5b5b66"
    // - buttons
    let cs_color_arrow = "#bfbfbf";
    let cs_color_arrow_hover = "orange";
    let cs_width = 16;
    let cs_height = 16;
    
    /* ******************************************************************************************************************** */
    /* ******************************************************************************************************************** */
    /* ******************************************************************************************************************** */
    
    // Scrollbar code
    
    Components.utils.import("resource://gre/modules/Services.jsm");
    let ss =  Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
    
    let custom_scrollbars = {
    
      init: function() {
    
        let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
          
          @namespace html url("http://www.w3.org/1999/xhtml");
          
          scrollbar, scrollcorner, scrollbar thumb, 
          scrollbar[orient="vertical"] scrollbarbutton[type="increment"], 
          scrollbar[orient="vertical"] scrollbarbutton[type="decrement"], 
          scrollbar[orient="horizontal"] scrollbarbutton[type="increment"], 
          scrollbar[orient="horizontal"] scrollbarbutton[type="decrement"] {
            -moz-appearance: none !important;
            appearance: none !important;
          }
          scrollbar {
            background-color: ${cs_background_color} !important;
          }
          scrollbar[orient="vertical"] {
            background-image: ${cs_background_image_vertical} !important;
          }
          scrollbar[orient="horizontal"] {
            background-image: ${cs_background_image_horizontal} !important;
          }
          scrollcorner {
            background-color: ${cs_corner_background_color} !important;
            background-image: ${cs_corner_background_image} !important;
          }
          scrollbar thumb {
            background-color: ${cs_thumb_color} !important;
            border-radius: ${cs_thumb_roundness}px !important;
            border: ${cs_thumb_border}px solid ${cs_thumb_border_color} !important;
          }
          scrollbar thumb[orient="vertical"] {
            background-image: ${cs_thumb_image_vertical} !important;
            min-height: ${(cs_thumb_minimal_size+cs_thumb_roundness+cs_thumb_border)}px !important;
          }
          scrollbar thumb[orient="horizontal"] {
          background-image: ${cs_thumb_image_horizontal} !important;
          min-width: ${(cs_thumb_minimal_size+cs_thumb_roundness+cs_thumb_border)}px !important;
          }
          scrollbar thumb:hover, scrollbar thumb:active {
            background-color: ${cs_thumb_hover_color} !important;
          }
          scrollbar thumb[orient="vertical"]:hover, scrollbar thumb[orient="vertical"]:active,
          scrollbar thumb[orient="horizontal"]:hover, scrollbar thumb[orient="horizontal"]:active {
            background-image: ${cs_thumb_hover_image_vertical} !important;
          }
          scrollbar[orient="vertical"] scrollbarbutton[type="decrement"] {
            mask-image: url("${scrollerProfileDirectory}/Chevron-up,_12.svg") !important;
          }
          scrollbar[orient="vertical"] scrollbarbutton[type="increment"] {
            mask-image: url("${scrollerProfileDirectory}/Chevron-down,_12.svg") !important;
          }
          scrollbar[orient="horizontal"] scrollbarbutton[type="increment"] {
            mask-image: url("${scrollerProfileDirectory}/Chevron-right,_12.svg") !important;
          }
          scrollbar[orient="horizontal"] scrollbarbutton[type="decrement"] {
            mask-image: url("${scrollerProfileDirectory}/Chevron-left,_12.svg") !important;
          }
          scrollbarbutton[type="increment"],
          scrollbar[orient="vertical"] scrollbarbutton[type="decrement"],
          scrollbarbutton[type="increment"],
          scrollbar[orient="horizontal"] scrollbarbutton[type="decrement"] {
            
            mask-repeat: no-repeat;
            mask-position: center;
            background-color: ${cs_color_arrow};
            width: ${cs_width}px !important;
            height: ${cs_height}px !important;
          }
          scrollbarbutton[type="increment"]:hover,
          scrollbar[orient="vertical"] scrollbarbutton[type="decrement"]:hover,
          scrollbarbutton[type="increment"]:hover,
          scrollbar[orient="horizontal"] scrollbarbutton[type="decrement"]:hover {
            background-color: ${cs_color_arrow_hover} !important;
          }
          
          scrollbar[orient="vertical"] {
            background-image: ${cs_background_image_vertical} !important;
            width: ${custom_scrollbar_size_value}px !important;
          }
          scrollbar[orient="horizontal"] {
            background-image: ${cs_background_image_horizontal} !important;
            height: ${custom_scrollbar_size_value}px !important;
          }
          scrollcorner {
            background-color: ${cs_corner_background_color} !important;
            background-image: url("${scrollerProfileDirectory}/resizer.svg") !important;
            width: ${custom_scrollbar_size_value}px !important;
          }
        `), null, null);
    
        ss.loadAndRegisterSheet(uri, ss.AGENT_SHEET);
    
      }
    };
    
    // enable settings as configured above
    custom_scrollbars.init();
    Alles anzeigen
  • Die Symbole/Buttons in der Symbolleiste vergrößern

    • Mira_Belle
    • 5. Januar 2023 um 22:17

    Hier auch, sowohl im "Arbeitsprofil" als auch in einem Frischen. :thumbup:

  • Schaltflächenskripte und ihre Symbole

    • Mira_Belle
    • 5. Januar 2023 um 21:33
    Zitat von Sören Hentzschel

    Das „/“ vor „icons“ kannst du entfernen, denn das Ergebnis der PathUtils-Methode endet bereits mit einem „/“ (vorausgesetzt es handelt sich um einen bereits existierenden Ordner, was in diesem Fall sicherlich zutrifft).

    Erledigt!

    Zitat von Sören Hentzschel
    JavaScript
    PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));

    Cool, habe es so umgesetzt!

    Danke.

  • Die Symbole/Buttons in der Symbolleiste vergrößern

    • Mira_Belle
    • 5. Januar 2023 um 14:01

    Habe es auch getestet, funktioniert bei mir.

    CSS
    #nav-bar toolbarbutton {
        transform: scale(1.2) !important;
    }
  • Schaltflächenskripte und ihre Symbole

    • Mira_Belle
    • 5. Januar 2023 um 13:36

    @Sören Hentzschel

    Und wieder einmal ein Danke!

    Ich nutze jetzt eine Mischung aus beidem.

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome'));
    let buttonicon = "bookmark-hollow.svg";
    style: "list-style-image: url('" + ProfilePath + "/icons/" + buttonicon + "');"

    Das mit dem Profilpfad fand ich schon cool,

    nur die Sache mit dem IconPath gefiel mir nicht!

    Deshalb die Mischung.

    So habe ich den Profilpfad und das Symbol getrennt!

    Gäbe es denn die Möglichkeit, den Profilpfad auf "chrome" und einen Ordner darunter zu verknüpfen?

    Denn ...

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome/icon'));

    ... funktionierte bei mir nicht.

    Und ...

    JavaScript
    let IconPath = "/icons/";

    extra noch anzulegen, nur um dann ...

    JavaScript
    style: "list-style-image: url('" + ProfilePath + IconPhath + buttonicon + "');"

    ... daraus zu machen, macht m.M. auch nicht wirklich Sinn, finde ich.

    Sieht halt vielleicht schöner aus.

  • Schaltflächenskripte und ihre Symbole

    • Mira_Belle
    • 5. Januar 2023 um 01:58

    Oha, ich habe da einen Fehler drinnen!

    JavaScript
    style: "list-style-image: url('" + ProfilePath + IconPath + "');"

    Man beachte die " "!

  • Schaltflächenskripte und ihre Symbole

    • Mira_Belle
    • 5. Januar 2023 um 01:17

    :/

    Was habe ich denn durch das ganze gewonnen?

    Ich nutze :

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");  // Pfadangabe zum Profilordner
    let buttonicon = "test.png"  // Name & Dateiendung des anzuzeigenden Symbols
    style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',

    Und "/chrome/icons/" könnte ich auch noch in eine Variable packen,

    nur wofür das ganze oben?

    OK, da in meiner userChromeShadow.uc.js die Variable let path = PathUtils.join(PathUtils.profileDir, 'chrome', 'userChromeShadow.css'); angelegt ist,

    könnte ich auch die Variable let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome'));

    zum chrome-Ordner nutzen.

    Dann würde wohl sich der Code so ändern

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome'));
    
    let buttonicon = "test.png";
    
    style: "list-style-image: url('" + ProfilePath + "/icons/" + buttonicon) +"');"

    Aber habe ich dadurch irgendwas gewonnen? :/

    Und wenn ich jetzt noch aus "/icons/" + buttonicon => IconPath mache, ...

    OK, ist etwas kürzerer Code.

    JavaScript
    style: 'list-style-image: url('" + ProfilePath + IconPath ) +"');'

    So habe ich mir wohl selbst die Antwort erarbeitet,

    und das zu so später Stunde.

  • Allgemeine Frage(n) zu JavaScript

    • Mira_Belle
    • 4. Januar 2023 um 23:09

    Danke Sören.

    Wieder etwas gelernt, so hoffe ich. ;)

    1.) Die Prüfung auf browser.xul werde ich so dann in all meinen Scripten entfernen. Erledigt.

    2.) Und das mit den Variablen dann auch gleich umsetzen. Auch erledigt.

  • Allgemeine Frage(n) zu JavaScript

    • Mira_Belle
    • 4. Januar 2023 um 22:24

    Also ich glaube, Ihr wollt mir verklickern, dass mein Ansatz die Variablen vor die Funktion zu stellen,

    nicht so prickelnd war.

    Ist es denn dann besser den Code so:

    JavaScript
    // Navbar.us.js
    (function nbbut() {
    let startHeight = '24px';                // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste
    let autoCloseTime = 5000;                  // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec 
    let collapse = '0px';                   // Leiste nicht sichtbar
    let visible = '32px';                   // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand)
    let buttonicon = "refresh_ie8.png"      // Name & Dateiendung des anzuzeigenden Symbols
    let intervalID = 0;
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner
    let persNavbar = document.getElementById('nav-bar');
    
            if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return;
            try {
    ...
    Alles anzeigen

    oder so:

    JavaScript
    // Navbar.us.js
    (function nbbut() {
            if (location.href !== 'chrome://browser/content/browser.xul' && location.href !== 'chrome://browser/content/browser.xhtml') return;
    
    let startHeight = '24px';                // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste
    let autoCloseTime = 5000;                  // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec 
    let collapse = '0px';                   // Leiste nicht sichtbar
    let visible = '32px';                   // Leiste sichtbar / normal ist '36px' (Hoehe der Leiste im ausgeklappten Zustand)
    let buttonicon = "refresh_ie8.png"      // Name & Dateiendung des anzuzeigenden Symbols
    let intervalID = 0;
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner
    let persNavbar = document.getElementById('nav-bar');
    
            try {
    ...
    Alles anzeigen

    ... zu schreiben?

  • Firefox-Design-Thema: Schriftart-Text mit Schatten-Effekten versehen

    • Mira_Belle
    • 4. Januar 2023 um 22:18

    Ich zitiere mich mal selber. ;)

    Zitat von Mira_Belle

    Und glaube mir, wenn Du erst einmal "Blut" geleckt hast, willst Du noch viel mehr ;) anpassen.

    Deshalb.

    Und genau so hat es bei mir im Juni 2021 auch angefangen,

    und was war das für eine Heidenarbeit, den ganzen Kram auseinander zu puzzeln.

    Also lieber gleich von Anfang an Struktur.

Unterstütze uns!

Jährlich (2026)

69,4 %

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

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