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

  • Script für Datums- & Zeitanzeige

    • Mira_Belle
    • 8. Januar 2023 um 12:30
    Zitat von BrokenHeart

    Das kann ich noch anbieten: rechtsbündig in der Menüleiste mit und ohne Titelleiste.

    Für mich ist es perfekt :!: :thumbup:

    Vielen, vielen Dank dafür.

    Und hier mit "meinen" Anpassungen.

    JavaScript
    // DateandClock.us.js
    // Source file https://www.camp-firefox.de/forum/thema/122763-script-datum-uhrzeit-neben-men%C3%BCleiste/?postID=1182704#post1182704
    // Source file https://www.camp-firefox.de/forum/thema/135820-script-f%C3%BCr-datums-zeitanzeige/?postID=1217043#post1217043
    // Source file https://www.camp-firefox.de/forum/thema/135820-script-f%C3%BCr-datums-zeitanzeige/?postID=1217068#post1217068
    
    (function() {
        
        if (!window.gBrowser){ return; }
        
        function doDatClock() {
            let date = new Date();
            let timestr = date.toLocaleDateString( locale, { weekday: "long", year: "numeric", month: "long", day: "numeric"} ) + 
                ' - ' + date.toLocaleTimeString( locale, { hour: '2-digit', minute: '2-digit' } ) + 
                ' Uhr';
    
            ClockLabel.setAttribute( 'value', timestr );
        }
    
        let language = 'de-DE'; // locale, e.g. 'de-DE' , 'en-US' , 'fr-FR'
        let cssFontFamily = 'Segoe UI';
        let cssColor = '#FFA500'; // Font Color
        let css = 'color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:400; font-size:14px; text-shadow: none; min-width: 50px;; padding-top: 2px; padding-left: 30px; margin-top: 0px; margin-left: 0px; margin-right: 0px;margin-bottom: 0px; padding-right: 15px;';
        let locale = language || window.navigator.languages[0];
        let position = document.querySelector("toolbar#toolbar-menubar spacer");
    
        position.style.MozBoxOrdinalGroup = "1";
    
        let ClockLabel = document.createXULElement('label');
        
            ClockLabel.setAttribute('id', 'titlebar-clock-display');
            ClockLabel.setAttribute('class', 'titlebarpanel-text');
            ClockLabel.setAttribute('style', css);    
            ClockLabel.style.MozBoxOrdinalGroup = "1000";
            position.parentNode.insertBefore(ClockLabel, position.nextSibling );
        
        window.setInterval( doDatClock , 100 );
    })();
    Alles anzeigen

    Und das Ergebnis will ich Euch auch nicht vorenthalten.

  • Script für Datums- & Zeitanzeige

    • Mira_Belle
    • 8. Januar 2023 um 01:34

    Danke für den Tipp mit dem ausrichten an den Titelbar-Icons (min/max/close).

    Das funktioniert auch so weit, wenn man keine Titelleiste verwendet.

    Ich nutze sie aber und somit geht es dann doch nicht, wie ich es mir wünsche.

    Habe aber mit diesem Script etwas herumgespielt.

    JavaScript
    // DateandClock.us.js
    // Source file https://www.camp-firefox.de/forum/thema/122763-script-datum-uhrzeit-neben-men%C3%BCleiste/?postID=1182704#post1182704
    // Source file https://www.camp-firefox.de/forum/thema/135820-script-f%C3%BCr-datums-zeitanzeige/?postID=1217031#post1217031
    
    (function() {
        
        if (!window.gBrowser){
            return;
        }
        
        function doDatClock() {
            date = new Date();
    //        var timestr = date.toLocaleDateString( locale, { weekday: "long", year: "numeric", month: "long", day: "numeric"} ) + 
    //                      ' - ' + date.toLocaleTimeString( locale, { hour: '2-digit', minute: '2-digit', second: '2-digit' } ) + 
    //                      ' Uhr';
                          
            var timestr = date.toLocaleDateString( locale, { weekday: "long", year: "numeric", month: "long", day: "numeric"} ) + 
                          ' - ' + date.toLocaleTimeString( locale, { hour: '2-digit', minute: '2-digit' } ) + 
                          ' Uhr';              
    
    //        if( count == 1 ) {
    //            var counter = new Date( 2000 * sec ).toISOString().substr( 11 , 8 ); // .replace(/^[0:]+/, '') // if you want to replace zeroes and colons
    //            timestr = timestr + ' (' + counter + ')';
    //            sec++;
    //        }
            ClockLabel.setAttribute( 'value', timestr );
        }
        
    //    var count = 0; // if you don't want a counter set this to zero
        var language = 'de-DE'; // locale, e.g. 'de-DE' , 'en-US' , 'fr-FR'
        var cssFontFamily = 'Segoe UI';
        var cssColor = '#FFA500'; // Font Color
    
    //    var css = 'color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:200; font-size:14px; text-shadow: none;';
        var css = 'color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:400; font-size:16px; text-shadow: none; min-width: 50px;; padding-top: 0px; padding-left: 350px; margin-top: 0px; margin-left: 0px; margin-right: 0px;margin-bottom: 0px; padding-right: 0px;';
    
        var sec = 0;
    
        var locale = language || window.navigator.languages[0];
    
    //    var position = document.getElementsByClassName('titlebar-button titlebar-min')[0];
        var position = document.getElementById('menubar-items');
    
        var ClockLabel = document.createXULElement('label');
        
        ClockLabel.setAttribute('id', 'titlebar-clock-display');
        ClockLabel.setAttribute('class', 'titlebarpanel-text');
        ClockLabel.setAttribute('style', css);    
        position.parentNode.insertBefore(ClockLabel, position.nextSibling);
        
    //    if( count == 1 ) {
    //        ClockLabel.addEventListener('dblclick', function() { sec = 0; });
    //    }
        
        window.setInterval( doDatClock , 100 );
    })();
    Alles anzeigen

    Müsste dann noch bereinigt werden.

    Eventuell habe ich ja Glück und jemand von den Profis bekommt es hin,

    das die "Anzeige" flexibel positionierbar wird/ist.

    So in etwa stelle ich es mir vor.

  • Script für Datums- & Zeitanzeige

    • Mira_Belle
    • 7. Januar 2023 um 23:31

    Danke für den Wink mit dem .replace('um', '')

    Ich präsentiere, auch mit kleinen Fehlerbereinigungen, das "neue" Datum und Uhrzeit - Script.

    JavaScript
    // DateandClock.us.js
    // Source file https://www.camp-firefox.de/forum/thema/122763-script-datum-uhrzeit-neben-men%C3%BCleiste/?postID=1182704#post1182704
    // Source file https://www.camp-firefox.de/forum/thema/135820-script-f%C3%BCr-datums-zeitanzeige/?postID=1217031#post1217031
    
    (function() {
        function doDatClock() {
            var timestr = new Date().toLocaleDateString( locale , options ).replace('um', '');
                    const blanks = ' -  ';
                    let i = timestr.lastIndexOf(' ');
    
                    timestr = timestr.substring(0,i) + blanks + timestr.substring(i+1) + ' Uhr';
    
            if( count == 1 ) {
                var counter = new Date( 2000 * sec ).toISOString().substring( 11 , 8 ); // .replace(/^[0:]+/, '') // if you want to replace zeroes and colons
                timestr = timestr + ' (' + counter + ')';
                sec++;
            }
            ClockLabel.setAttribute( 'value', timestr );
        }
        
        var count = 0; // if you don't want a counter set this to zero
        var language = 'de-DE'; // locale, e.g. 'de-DE' , 'en-US' , 'fr-FR'
        var cssFontFamily = 'Segoe UI';
        var cssColor = '#FFA500'; // Font Color
    
        var css = 'padding-top: 2px !important; padding-left: 350px; color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:400; font-size:16px; text-shadow: none; min-width: 665px;';
    
        var options = { 
            weekday: 'long',
            year: 'numeric', 
            month: 'long', 
            day: 'numeric', 
            hour: '2-digit', 
            minute: '2-digit' 
        };
        
        var sec = 0;
    
        var locale = language || window.navigator.languages[0];
    
        var position = document.getElementById('menubar-items');
    
        var ClockLabel = document.createXULElement('label');
        ClockLabel.setAttribute('id', 'statusbar-clock-display');
        //ClockLabel.setAttribute('class', 'statusbarpanel-text');
        ClockLabel.setAttribute('style', css);    
        position.parentNode.insertBefore(ClockLabel, position.nextSibling);
      
        if( count == 1 ) {
            ClockLabel.addEventListener('dblclick', function() { sec = 0; });
        }
        
        window.setInterval( doDatClock , 1000 );
    })();
    Alles anzeigen

    Jetzt gibt es nur noch eine Sache, bei der ich auf Hilfe angewiesen bin.

    Die Anzeige sollte frei beweglich sein.

    Oder zumindest sich rechts am Rand der Menübar ausrichten,damit die Anzeige auch rechts sich positionieren lässt.

  • Script für Datums- & Zeitanzeige

    • Mira_Belle
    • 7. Januar 2023 um 21:54

    Seit heute habe ich eine neue Spielwiese.

    Das JavaScript DateandClock.us.js, so habe ich es getauft.

    Aufgeschnappt habe ich es von hier =>

    Beitrag

    RE: Script Datum + Uhrzeit neben Menüleiste

    Seit heute, seit die Firefox - Version 92 (32bit) installiert worden ist, ist meine "Datum / Uhrzeit" nicht mehr sichtbar.

    Komplett weg. Seit März 2021 lief dieses Skript ohne Probleme:

    (Quelltext, 70 Zeilen)

    Hat einer ne Lösung?
    Taupan
    11. September 2021 um 16:02

    Ich habe es ein wenig verändert und es funktioniert aus so weit.

    Nur was mich stört, zwischen Datum und der Zeit wird das Wörtchen um angezeigt.

    Es steht da also z.B. Samstag, 7. Januar 2023 um - 22:00:00 Uhr.

    Das Wörtchen um hätte ich gerne weg :!:

    Die Anzeige sollte so sein: Samstag, 7. Januar 2023 - 22:00:00 Uhr

    Das Script:

    JavaScript
    // DateandClock.us.js
    // Source file https://www.camp-firefox.de/forum/thema/122763-script-datum-uhrzeit-neben-men%C3%BCleiste/?postID=1182704#post1182704
    
    (function() {
        function doDatClock() {
            var timestr = new Date().toLocaleDateString( locale , options );
                    const blanks = '  \u2013  ';
                    let i = timestr.lastIndexOf(' ');
                    timestr = timestr.substring(0,i) + blanks + timestr.substring(i+1) + ' Uhr';
    
            if( count == 1 ) {
                var counter = new Date( 2000 * sec ).toISOString().substr( 11 , 8 ); // .replace(/^[0:]+/, '') // if you want to replace zeroes and colons
                timestr = timestr + ' (' + counter + ')';
                sec++;
            }
            ClockLabel.setAttribute( 'value', timestr );
        }
        
        var count = 0; // if you don't want a counter set this to zero
        var language = 'de-DE'; // locale, e.g. 'de-DE' , 'en-US' , 'fr-FR'
        //var personalText = ' '; // your personal text here
        var cssFontFamily = 'Arial';
        var cssColor = '#FFBD4F'; // Font Color
    
        var css = 'padding-top: 5px !important; padding-left: 340px; color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:200; font-size:16px; text-shadow: none; min-width: 665px;';
        // var css = 'padding-top: 10px !important; padding-left: 0; color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:400; font-size:16px; text-shadow: none; width: 50px;';
    
        var options = { 
            weekday: 'long',
            year: 'numeric', 
            month: 'long', 
            day: 'numeric', 
            hour: '2-digit', 
            minute: '2-digit', 
            second: '2-digit' 
        };
        
        var sec = 0;
    
        var locale = language || window.navigator.languages[0];
    
        var position = document.getElementById('menubar-items');
    
        var ClockLabel = document.createXULElement('label');
        ClockLabel.setAttribute('id', 'statusbar-clock-display');
        //ClockLabel.setAttribute('class', 'statusbarpanel-text');
        ClockLabel.setAttribute('style', css);    
        position.parentNode.insertBefore(ClockLabel, position.nextSibling);
      
        if( count == 1 ) {
            ClockLabel.addEventListener('dblclick', function() { sec = 0; });
        }
        
        window.setInterval( doDatClock , 1000 );
    })();
    Alles anzeigen
  • Skript für Add-ons Update - Pfad zum Icon ändern

    • Mira_Belle
    • 7. Januar 2023 um 14:20

    Die Zeichensetzung, es ist die Zeichensetzung, über die ich gestolpert bin!

    Siehe

    Beitrag

    RE: Allgemeine Frage(n) zu JavaScript

    Bin der Sache einen Schritt näher gekommen!

    Ein Fehler ist das Semikolon am Ende der Variablendefinition.

    (Quelltext, 44 Zeilen)

    Diese Version funktioniert.


    Und diese entgüldige, nach einigen Tests, auch :!:

    (Quelltext, 40 Zeilen)

    Jetzt muss ich nur noch schauen, was ich versehentlich so verändert habe,

    dass es plötzlich funktioniert. :D
    Mira_Belle
    7. Januar 2023 um 13:50

    Das folgende JavaScript funktioniert, so wie von mir gewünscht.

    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" // Name & Dateiendung des anzuzeigenden Symbols
    // 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('" + 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
  • Allgemeine Frage(n) zu JavaScript

    • Mira_Belle
    • 7. Januar 2023 um 14:12

    AH :!:

    Wieder einmal die Zeichensetzung.

    Siehe: button.style.listStyleImage = "url('" + ProfilePath + buttonicon + "');"

    und: button.style.listStyleImage = "url('" + profilePath + buttonIcon + "')";

    So etwas passiert, wenn man keine Ahnung von JavaScript hat.

    Mira, also besser gugge!

  • Allgemeine Frage(n) zu JavaScript

    • Mira_Belle
    • 7. Januar 2023 um 13:50

    Bin der Sache einen Schritt näher gekommen!

    Ein Fehler ist das Semikolon am Ende der Variablendefinition.

    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 buttonIcon = "UpDate.png" // Name & Dateiendung des anzuzeigenden Symbols
    // 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, 'chrome', 'icons')) + 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

    Diese Version funktioniert.


    Und diese entgüldige, nach einigen Tests, auch :!:

    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" // Name & Dateiendung des anzuzeigenden Symbols
    // 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('" + 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

    Jetzt muss ich nur noch schauen, was ich versehentlich so verändert habe,

    dass es plötzlich funktioniert. :D

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

Unterstütze uns!

Jährlich (2025)

105,8 %

105,8% (687,41 von 650 EUR)

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