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

  • Gelbe Ordner Farbe wieder verschwunden

    • Mira_Belle
    • 17. September 2025 um 17:41

    .DeJaVu Es ist mir egal, wo was gestrandet ist! Das CSS ist Murks und ich werde es nicht bereinigen und auf den aktuellen Stand bringen. Zumal ich ja auch gar nicht weis, was Tec1do von den Veränderungen eigentlich haben will.
    Wie schaut Dein Firefox aus? Screenshot, wäre ganz gut.

    2002Andreas Ich bin mir absolut sicher, dass da so einige Leichen im Keller sind.
    Aber, ohne dass wir wissen, wie er sich seinen Firefox vorstellt, tappen wir nur im Dunklen.

  • Gelbe Ordner Farbe wieder verschwunden

    • Mira_Belle
    • 17. September 2025 um 16:21

    2002Andreas & Tec1do Es sind aber einige Fehler im CSS!

    CSS
    /* Windows 7 specific */
    Media (-moz-os-version: windows-win7) {
    .tabbrowser-tab {
    background-color: transparent !important;
    border: none !important;
    }
    Media (-moz-windows-default-theme) {
    .tabbrowser-tab:not(:-moz-lwtheme) {
    background-color: transparent !important;
    border: none !important;
    }
    }
    Alles anzeigen

    &

    CSS
    /* OS-specific color variables */
    Media screen and (-moz-windows-theme) {
    :root {
    }
    }
    Media not screen and (-moz-windows-theme) {
    :root {
    }
    }

    Ist der Wurm drinnen! Da mault VS-Code!

    Und so schaut's schon besser aus.

    CSS
    /* Windows 7 specific */
    @Media (-moz-os-version: windows-win7) {
        .tabbrowser-tab {
            background-color: transparent !important;
        border: none !important;
        }
    }
    @Media (-moz-windows-default-theme) {
        .tabbrowser-tab:not(:-moz-lwtheme) {
            background-color: transparent !important;
            border: none !important;
        }
    }
    Alles anzeigen

    &

    CSS
    /* OS-specific color variables */
    @media screen and (-moz-windows-theme) {
      :root {
        /* Hier deine Variablen für Windows-Themes einfügen */
      }
    }
    @media not screen and (-moz-windows-theme) {
      :root {
        /* Hier deine Variablen für Nicht-Windows-Themes einfügen */
      }
    }
    Alles anzeigen

    Wichtig!
    Keine leeren Regelsätze verwenden.

    Entweder das wird komplett gelöscht, weil es ja eigentlich gar nicht gebraucht wird,
    oder eben "etwas" eintragen.

    Gilt im übrigen auch für " /* Windows 7 specific */ "!
    Auch dieser Code kann eigentlich gelöscht werden!

    Tec1do Du nutzt doch W10 oder W11, oder?

  • Gelbe Ordner Farbe wieder verschwunden

    • Mira_Belle
    • 17. September 2025 um 15:52

    Das CSS von 2002Andreas aus Beitrag #6 funktioniert einwandfrei!

    Bitte nach dem Entpacken umbenennen.

    User.zip

  • UserCSSLoader (2025)

    • Mira_Belle
    • 17. September 2025 um 09:26

    Neues Skript!

    Windows Explorer ist ohne Parameter

    Der Chrome- und CSS-Ordner werden im Explorer geöffnet.

    Windows Explorer ist mit Parameter let fileManagerParam = "/select,";

    Und auch hier, der Chrome- und CSS-Ordner werden im Explorer geöffnet.

    Es spielt also keine Rolle, ob ich einen Parameter angebe oder nicht.
    Was die Einschränkungen sein sollen, mir ist nichts aufgefallen.
    Der Explorer verhält sich gleich.

  • FF143 - About-button weg

    • Mira_Belle
    • 16. September 2025 um 19:27

    2002Andreas Tatsache.
    Und ich habe da was verwechselt. Aber, schon ist's korrigiert. Danke.

  • FF143 - About-button weg

    • Mira_Belle
    • 16. September 2025 um 19:16
    JavaScript
    // 12a_aboutname-button.uc.js
    // Button für About-Dialog
    
    (function() {
    
        try {
        
    //      ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
            
            CustomizableUI.createWidget({
                id: "aboutname",
                defaultArea: CustomizableUI.AREA_NAVBAR,
                removable: true,
                label: "aboutname",
                tooltiptext: "Über Firefox",
        
                onClick: function() {
                    openAboutDialog();
                },
        
        
                onCreated: function(aNode) {
        
        //			"currentProfileDirectory"-Lösung:
                    var currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
                    var aboutname_icon = 'url("file:///' + currentProfileDirectory + '/chrome/icons/firefox_21865_16.jpg")';
                    aNode.style.listStyleImage = aboutname_icon;
                    
                    return aNode;
                }
            });
        } catch (e) {
            Components.utils.reportError(e);
        };
        
        })();
    Alles anzeigen

    Oh. =O

    1. Sören war schneller.
    2. Anderer Ansatz.

    Funktioniert es?

  • Skript zum Anpassen der Scrollbar funktioniert nicht mehr richtig

    • Mira_Belle
    • 15. September 2025 um 19:34

    Eine etwas aufgeräumtere Version für den FF 143.

    JavaScript
    // Scrollbar.uc.js
    
    "use strict";
    /* Custom Scrollbars for Firefox ********************************************************************************************* */
    /*																															   */
    /* Version: v2.0.8.uc.js for Firefox 143+ 																					   */
    /*																															   */
    /* Scrollbar.v2.0.8.js	  https://www.camp-firefox.de/forum/thema/139766/?postID=1279113#post1279113						   */
    /*																															   */
    /* ******************************************************************************************************************************
    
    	README
    
    		about:config >
    			widget.windows.overlay-scrollbars.enabled > false (Windows)
    			widget.gtk.overlay-scrollbars.enabled > false (Linux)
    		[!] The above preferences have to be set to 'false' for this code to work
    		[!] Die genannten Einstellungen müssen auf 'false' gesetzt werden, damit dieser Code funktioniert.
    
    			/* ----------------------------------------------------------------------------------- */
    			/*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    			/*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    			/*                                                                                     */
    			/*   Auch müssen die Dateinamen im Skript mit jenen im Ordner "icons" übereinstimmen   */
    			/* ----------------------------------------------------------------------------------- */
    
    /* *************************************************************************************************************************** */
    
    (function() {
    
      /* **** Konfiguration **** */
    
      // PROFILE PHATH "CALCULATE"
      let ProfileDirectory = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    
      // CUSTOM SCROLLBAR COLORS/GRADIENTS
      // - scrollbar
      let cs_scrollbar_arrows_color = 						"#bfbfbf"				   ;// "#7c7c7c"	"#1e90ff"
      let cs_scrollbar_arrows_hover_color = 				"#ffa600"				   ;// "#ffa600"	"#bebebe"
      // - background
      let cs_background_color = 							"#5b5b66"				   ;// default: cs_background_color = "#DDDDDD"	/ "#AEC5FA"
      let cs_background_roundness = 						0							;// default: cs_background_roundness = 0 / in px	/ 9
      let cs_ignore_color_gradients = 						true						;// default: cs_ignore_color_gradients = false / true 'flat' scrollbars
      // - corner
      let cs_corner_background_color = 						"#bfbfbf"				   ;// default: cs_corner_background_color = "#DDDDDD" / - corner	/ "#CCCCCC"
      // - thumb/slider
      let cs_thumb_color = 									"#bfbfbf"				   ;// default: cs_thumb_color = "#33CCFF" / thumb/slider
      let cs_thumb_hover_color = 							"#ffa600"				   ;// default: cs_thumb_hover_color = "#66FFFF"
      let cs_thumb_border_color = 							"#5b5b66"				   ;// default: cs_thumb_border_color = "#33CCFF"
      let cs_thumb_border = 								1							;// default: cs_thumb_border = 0 / in px 1
      let cs_thumb_roundness = 								9							;// default: cs_thumb_roundness = 0 / in px 9
      let cs_thumb_minimal_size = 							17							;// default: cs_thumb_minimal_size = 17 / in px
      // - buttons
      let cs_buttons_color = 								"#5b5b66"				   ;// default: cs_buttons_color = "#66FFFF" "Bahama Blue";/ buttons
      let cs_buttons_hover_color = 							"#5b5b66"				   ;// default: cs_buttons_hover_color = "#33CCFF"	/ "#bfffff"
      let cs_button_size =									17							;// in px // default: cs_button_size = 17 / in px
      let cs_buttons_border = 								2							;// default: cs_buttons_border = 0 / in px
      let cs_buttons_roundness = 							0							;// default: cs_buttons_roundness = 0 / in px
    
      /* **** Ende Konfiguration **** */
    
    /* *************************************************************************************************************************** */
      // FIXED SCROLL BAR COLORS/COLOR GRADIENTS
    	// - fixed values for background image gradients
    	let GRADIENT_VERTICAL = 							"linear-gradient(to right,transparent,rgba(255,255,255,0.5),transparent)";
    	let GRADIENT_HORINZONTAL = 							"linear-gradient(to bottom,transparent,rgba(255,255,255,0.5),transparent)";
    	// - background  
    	let cs_background_image_vertical = 					GRADIENT_VERTICAL			;// default: cs_background_image_vertical = "linear-gradient(to right,transparent,rgba(255,255,255,0.5),transparent)"
    	let cs_background_image_horizontal = 				GRADIENT_HORINZONTAL		;// default: cs_background_image_horizontal = "linear-gradient(to bottom,transparent,rgba(255,255,255,0.5),transparent)"
    	// - corner
    	let cs_corner_background_image = 					"linear-gradient(45deg,transparent 30%,rgba(255,255,255,0.5) 50%,transparent 70%),linear-gradient(-45deg,transparent 30%,rgba(255,255,255,0.5) 50%,transparent 70%)"						;// default: cs_corner_background_image = "linear-gradient(45deg,transparent 30%,rgba(255,255,255,0.5) 50%,transparent 70%),linear-gradient(-45deg,transparent 30%,rgba(255,255,255,0.5) 50%,transparent 70%)"
    	// - thumb/slider
    	let cs_thumb_image_vertical = 						GRADIENT_VERTICAL			;// default: cs_thumb_image_vertical = "linear-gradient(to right,transparent,rgba(255,255,255,0.5),transparent)"
    	let cs_thumb_image_horizontal = 					GRADIENT_HORINZONTAL		;// default: cs_thumb_image_horizontal = "linear-gradient(to bottom,transparent,rgba(255,255,255,0.5),transparent)"
    	let cs_thumb_hover_image_vertical = 				GRADIENT_VERTICAL			;// default: cs_thumb_hover_image_vertical = "linear-gradient(to right,transparent,rgba(255,255,255,0.5),transparent)"
    	let cs_thumb_hover_image_horizontal = 				GRADIENT_HORINZONTAL		;// default: cs_thumb_hover_image_horizontal = "linear-gradient(to bottom,transparent,rgba(255,255,255,0.5),transparent)"
    	// - buttons
    	let cs_buttons_image_vertical = 					GRADIENT_VERTICAL			;// default: cs_buttons_image_vertical = "linear-gradient(to right,transparent,rgba(255,255,255,0.5),transparent)"
    	let cs_buttons_image_horizontal = 					GRADIENT_HORINZONTAL		;// default: cs_buttons_image_horizontal = "linear-gradient(to bottom,transparent,rgba(255,255,255,0.5),transparent)"
    	let cs_buttons_hover_image_vertical = 				GRADIENT_VERTICAL			;// default: cs_buttons_hover_image_vertical = "linear-gradient(to right,transparent,rgba(255,255,255,0.5),transparent)"
    	let cs_buttons_hover_image_horizontal =				GRADIENT_HORINZONTAL		;// default: cs_buttons_hover_image_horizontal = "linear-gradient(to bottom,transparent,rgba(255,255,255,0.5),transparent)"
    
      // unset background image color gradients -> flat scrollbars
      if(cs_ignore_color_gradients === true)
    	cs_background_image_vertical
    	= cs_background_image_horizontal
    	= cs_corner_background_image
    	= cs_thumb_image_vertical
    	= cs_thumb_image_horizontal
    	= cs_thumb_hover_image_vertical
    	= cs_thumb_hover_image_horizontal
    	= cs_buttons_image_vertical
    	= cs_buttons_image_horizontal
    	= cs_buttons_hover_image_vertical
    	= cs_buttons_hover_image_horizontal
    	= "unset";
    
      let custom_scrollbars_code='';
      let custom_scrollbar_arrows_code='';
    
    	custom_scrollbars_code=`
    		scrollcorner,
      		scrollbar > slider, 
    		scrollbar > slider > thumb, 
    		scrollbar > scrollbarbutton {
    		/*  appearance: auto; */
    		  -moz-default-appearance: none !important;
    		}
    		scrollbar > slider {
    		  background-color: ${cs_background_color} !important;
    		  background-image: ${cs_background_image_horizontal} !important;
    		  border-radius: ${cs_background_roundness}px !important;
    		}
    		scrollbar[vertical] > slider {
    		  background-image: ${cs_background_image_vertical} !important;
    		  border-radius: ${cs_background_roundness}px !important;
    		}
    		scrollcorner {
    		  background-color: ${cs_corner_background_color} !important;
    		  background-image: ${cs_corner_background_image} !important;
    		}
    		scrollbar > slider > thumb {
    		  background-color: ${cs_thumb_color} !important;
    		  border-radius: ${cs_thumb_roundness}px !important;
    		  box-shadow: inset 0 0 0 ${cs_thumb_border}px ${cs_thumb_border_color} !important;
    		}
    		scrollbar[vertical] > slider > thumb {
    		  background-image: ${cs_thumb_image_vertical} !important;
    		  min-height: ${cs_thumb_minimal_size}px !important;
    		}
    		scrollbar > slider > thumb {
    		  background-image: ${cs_thumb_image_horizontal} !important;
    		  min-width: ${cs_thumb_minimal_size}px !important;
    		}
    		scrollbar > slider > thumb:hover, scrollbar > slider > thumb:active {
    		  background-color: ${cs_thumb_hover_color} !important;
    		}
    		scrollbar > slider > thumb[vertical]:hover, scrollbar > slider > thumb[vertical]:active {
    		  background-image: ${cs_thumb_hover_image_vertical} !important;
    		}
    		scrollbar > slider > thumb[horizontal]:hover, scrollbar > slider > thumb[horizontal]:active {
    		  background-image: ${cs_thumb_hover_image_horizontal} !important;
    		}
    		scrollbar > scrollbarbutton {
    		  background-color: ${cs_buttons_color} !important;
    		  border-radius: ${cs_buttons_roundness}px !important;
    		  box-shadow: inset 0 0 0 ${cs_buttons_border}px !important;
    		  height: 17px !important;
    		  width: 17px !important;
    		}
    		scrollbar[vertical] scrollbarbutton {
    		  background-image: ${cs_buttons_image_vertical} !important;
    		}
    		scrollbar[horizontal] scrollbarbutton {
    		  background-image: ${cs_buttons_image_horizontal} !important;
    		}
    		scrollbar > scrollbarbutton:hover {
    		  background-color: ${cs_buttons_hover_color} !important;
    		}
    		scrollbar[vertical] scrollbarbutton:hover {
    		  background-image: ${cs_buttons_hover_image_vertical} !important;
    		}
    		scrollbar[horizontal] scrollbarbutton:hover {
    		  background-image: ${cs_buttons_hover_image_horizontal} !important;
    		}
    	`;
    
    	custom_scrollbar_arrows_code=`
    		scrollbar > scrollbarbutton {
    		  background-repeat: no-repeat !important;
    		  background-position: center center !important;
    		}
    		scrollbar[vertical] > scrollbarbutton[type="decrement"] {
    		  background-image: url("${ProfileDirectory}/Pfeil-hoch.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_color} !important;
                fill-opacity: 1 !important;
    		}
    		scrollbar[vertical] > scrollbarbutton[type="increment"] {
    		  background-image: url("${ProfileDirectory}/Pfeil-runter.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_color} !important;
                fill-opacity: 1 !important;
    		}
    		scrollbar > scrollbarbutton[type="decrement"] {
    		  background-image: url("${ProfileDirectory}/Pfeil-links.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_color} !important;
                fill-opacity: 1 !important;
    		}
    		scrollbar > scrollbarbutton[type="increment"] {
    		  background-image: url("${ProfileDirectory}/Pfeil-rechts.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_color} !important;
                fill-opacity: 1 !important;
    		}
    
    		/* Hover */
    
    		scrollbar[vertical] > scrollbarbutton[type="decrement"]:hover {
    		  background-image: url("${ProfileDirectory}/Pfeil-hoch.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_hover_color} !important;
                fill-opacity: 1 !important;
    		}
    		scrollbar[vertical] > scrollbarbutton[type="increment"]:hover {
    		  background-image: url("${ProfileDirectory}/Pfeil-runter.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_hover_color} !important;
                fill-opacity: 1 !important;
    		}
    		scrollbar > scrollbarbutton[type="decrement"]:hover {
    		  background-image: url("${ProfileDirectory}/Pfeil-links.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_hover_color} !important;
                fill-opacity: 1 !important;
    		}
    		scrollbar > scrollbarbutton[type="increment"]:hover {
    		  background-image: url("${ProfileDirectory}/Pfeil-rechts.svg") !important;
    		    -moz-context-properties: fill, fill-opacity;
                fill: ${cs_scrollbar_arrows_hover_color} !important;
                fill-opacity: 1 !important;
    		}
    
    		scrollbar > scrollbarbutton {
    			min-width: ${cs_button_size}px !important;
    			min-height: ${cs_button_size}px !important;
    		}
    	`;
    
    	Components.classes["@mozilla.org/content/style-sheet-service;1"]
    		.getService(Components.interfaces.nsIStyleSheetService)
    			.loadAndRegisterSheet(Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    				${custom_scrollbars_code}
    				${custom_scrollbar_arrows_code}
    			`), null, null),
    	Components.classes["@mozilla.org/content/style-sheet-service;1"]
    		.getService(Components.interfaces.nsIStyleSheetService).AGENT_SHEET);
    
    })();
    Alles anzeigen
  • UserCSSLoader (2025)

    • Mira_Belle
    • 14. September 2025 um 23:06

    Windows Explorer ist ohne Parameter

    Der Chrome- und CSS-Ordner werden geöffnet.

    Windows Explorer ist mit Parameter

    Der Chrome- und CSS-Ordner werden geöffnet.

  • ublock Origin eine Ausnahme für eine blockierte Scriptgruppe setzen

    • Mira_Belle
    • 14. September 2025 um 18:41

    @Atze64 .DeJaVu ist eben so, kannst Du aber nicht wissen.
    Aber Du musst nicht gleich Dein Konto löschen, nur weil in einem so speziellem Thema Dir hat keiner hat helfen können.
    Dies ist primär ja auch ein Forum für Firefox! Muss man halt auch sehen.
    Und wenn Du mal Fragen zum Browser hast, dann findest Du nirgends bessere Hilfe! (Finde ich!)

  • ublock Origin eine Ausnahme für eine blockierte Scriptgruppe setzen

    • Mira_Belle
    • 14. September 2025 um 17:34

    @Atze64 Kleiner Tipp am Rande!
    Leg Dich bei diesem Thema nicht mit .DeJaVu an!
    Erstens besteht er keinen Spaß, ok ist ein Joke, aber er wird ganz bestimmt sauer, wenn er sich verschaukelt vorkommt.

    Was uBlock angeht, macht Ihm keiner so schnell was vor! Er hilft, auf seine weise, manches Mal auch etwas ruppig,
    komm Ihm aber nicht blöd, sonst wird es ungemütlich.

  • ublock Origin eine Ausnahme für eine blockierte Scriptgruppe setzen

    • Mira_Belle
    • 13. September 2025 um 22:28

    @Atze64 Er meint auch das Dashboard!
    Und dann wohl, da bin ich mir nicht ganz sicher, den Reiter "Meine Regeln".
    Obwohl, ich denke nicht, dass das gemeint ist.

  • UserCSSLoader (2025)

    • Mira_Belle
    • 13. September 2025 um 13:21

    Versuche es einfach mal nur mit:

    CSS
    /* UserStyles Loader Button */
    
    #usercssloader-menu-item {
    	background-image: url("../icons/CSS.webp");
    	background-position: center;
    	background-repeat: no-repeat;
    	background-size: 15px;
    	margin-top: 1px !important;
    }
    
    #usercssloader-menu-item:hover {
    	background-color: var(--toolbarbutton-hover-background);
    }
    
    #usercssloader-menu-item #usercssloader-menu > .menu-text[value="CSS"] {
    	opacity: 0;
    }
    Alles anzeigen
  • Meine Version des App-Menüs (JavaScript)

    • Mira_Belle
    • 13. September 2025 um 10:46

    Speravir So, eine große Herausforderung wird sein, aus zwei nur ein Skript zu machen.

    Denn ich finde es echt doof, dass im Hintergrund das userCSSLoader-Skript laufen muss,
    weil auf Funktionen (Code) in diesem zugegriffen wird!

    Da habe ich also noch was vor.

  • UserCSSLoader (2025)

    • Mira_Belle
    • 13. September 2025 um 10:42

    Boersenfeger Speravir fragte Dich nach Deiner CSS, nicht nach Deinem JavaScript!

    Hast Du die Änderungen aus #63 in Deinem CSS (#28) vorgenommen?

  • Meine Version des App-Menüs (JavaScript)

    • Mira_Belle
    • 11. September 2025 um 17:04

    Es funktioniert!

    Jetzt brauch ich nur noch "gescheite" Symbole:!:

  • Meine Version des App-Menüs (JavaScript)

    • Mira_Belle
    • 11. September 2025 um 10:39

    Speravir Ich denke, ich hab's. Na ja fast!
    Erste Voraussetzung, das userCSSLoader-Skript muss vorhanden sein und vor dem Appmenü-Skript geladen werden.

    Und dann das "neue" Appmenü-Skript:


    JavaScript
    // ==UserScript==
    // @name           Appmenu.uc.js
    // @namespace      Appmenu@gmail.com
    // @description    Basiert auf dem Script externalFuncButtonM.uc.js, Wiederherstellung der Orangenen FF-Menü Schaltfläche
    // @include        main
    // @version        update for Firefox 68+ by aborix
    // @author         defpt
    // @charset        UTF-8
    // @version        2020.07.13 Weitere Menüs und Funktionen ergänzt by bege
    // @version        2024.08.10 alle Einstellungen im Abschnitt Konfiguration vornehmen
    // @version        2024.08.18 einige Veränderungen am Skript, Symbole, Funktionen & Menüs by Mira Bellenbaum
    // @version        2025.01.15 EventListener korrigiert und angepasst, by Mira Bellenbaum
    // @version        2025.04.03 Zeile 340 "eval()" ersetzt. Nachfolgend Zeilen 381-416 ergänzt und Parameter (command:) angepasst
    // @version        2025.07.21 Zeile 239 geändert! Button weiter nach rechts!
    // ==/UserScript==
    
      // Definiere den Profilpfad
      let ProfilePath = PathUtils.toFileURI(
        PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')
      );
      
      var Appmenu = {
        // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      
        // Editor mit angegebenem Pfad verwenden
        // editor: 'C:\\Program Files\\Notepad++\\notepad++.exe',
        editor: "C:\\Program Files\\Microsoft VS Code\\Code.exe",
        // oder
        // in 'view_source.editor.path' eingetragenen Editor verwenden
        editor: Services.prefs.getCharPref('view_source.editor.path'),
        // Dateimanager mit angegebenem Pfad verwenden oder leer ('') wenn System-Dateimanager verwenden
        //fileManager: 'C:\\Program files\\FreeCommander XE\\FreeCommander.exe',
        fileManager: "",
        // Parameter für Dateimanager oder leer ('')
        //FMParameter: '/T',
        FMParameter: "",
        // Submenüs ohne Inhalt im Hauptmenü automatisch ausblenden
        autohideEmptySubDirs: true,
        // Submenüs im Hauptmenü nach unten verschieben
        moveSubDirstoBottom: false,
        // Ort und Aussehen des Menü-Buttons einstellen
        isUrlbar: 2, // 0: TabsToolbar; 1: navbar; 2: toolbar-menubar
        isButton: 0, // 0: Hamburger,klein; 1: Firefox,groß,
        // Hotkey zum Öffnen des Appmenüs oder leer ('')
        hotkey: "f",
        hotkeyModifier: "alt",
      
        // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      
        // Submenüs im Hauptmenü nach unten verschieben
        subdirPopupHash: [],
        subdirMenuHash: [],
      
        toolbar: {
          // Submenüs des Hauptmenüs definieren; Separator einfügen mit {name: 'separator'}
        /*  subdirs: [
            {
              name: 'Firefox Verzeichnisse',
              image: `${ProfilePath}/folder_currentColor.svg`, // Der Pfad wird direkt verwendet, ohne `url()`
            },
            {
              name: 'Firefox Funktionen',
              image: `${ProfilePath}/settings_currentColor.svg`, // Der Pfad wird direkt verwendet, ohne 'url()'
            },
            {
              name: 'separator',
            },
          ], */
          subdirs: [
            {
                name: 'Firefox Verzeichnisse',
                image: `${ProfilePath}/folder_currentColor.svg`,
            },
            {
                name: 'Firefox Funktionen',
                image: `${ProfilePath}/settings_currentColor.svg`,
            },
            {
                name: 'separator',
            },
            {
                name: 'CSS-Loader',
                image: `${ProfilePath}/default-browser-red.svg`,
            },
            {
                name: 'Style-Loader-Menü',
                image: `${ProfilePath}/default-browser-red.svg`,
            },
            {
                name: 'separator',
            },
        ],
    
          apps: [
    
            // Untermenü Firefox Verzeichnisse
            {
              name: 'Profil-Verzeichniss',
              id: 'AMProfil',
              root: 'ProfD',
              path: '\\',
              subdir: 'Firefox Verzeichnisse',
            },
            {
              name: 'Chrome-Ordner',
              id: 'AMchrome',
              root: 'ProfD',
              path: '\\chrome',
              subdir: 'Firefox Verzeichnisse',
            },
            {
              name: 'CSS-Ordner',
              id: 'AMCSS',
              root: 'ProfD',
              path: '\\chrome\\css',
              subdir: 'Firefox Verzeichnisse',
            },
            {
              name: 'JS-Ordner',
              id: 'AMJS',
              root: 'ProfD',
              path: '\\chrome\\scripts',
              subdir: 'Firefox Verzeichnisse',
            },
            {
              name: 'Addon-Verzeichniss',
              id: 'AMAddons',
              root: 'ProfD',
              path: '\\extensions',
              subdir: 'Firefox Verzeichnisse',
             },
             {
              name: 'Programm-Verzeichniss',
              id: 'AMProgramm',
              root: 'CurProcD',
              path: '\\',
              subdir: 'Firefox Verzeichnisse',
             },
             {
              name: 'Startup-Cache',
              id: 'AMCache',
              root: 'ProfLD',
              path: '\\startupCache',
              subdir: 'Firefox Verzeichnisse',
            },
          ],
          
           configs: [
            // Untermenü Firefox Funktionen
            {
              name: 'Anpassen',
              id: 'AMAnpassen',
              command: 'gCustomizeMode.enter()',
              subdir: 'Firefox Funktionen',
            },
            {
              name: 'Neustart im abgesicherten Modus',
              id: 'AMModus',
              command: 'safeModeRestart();',
              subdir: 'Firefox Funktionen',
            },
            {
              name: 'Browser-Konsole',
              id: 'AMKonsole',
              command: 'goKonsole',
              subdir: 'Firefox Funktionen',
            },
            {
              name: 'Browser-Werkzeuge',
              id: 'AMWerkzeuge',
              command: 'goWerkzeuge',
              subdir: 'Firefox Funktionen',
            },
            {
              name: 'Web-Entwickler',
              id: 'AMEntwickler',
              command: 'goEntwickler',
              subdir: 'Firefox Funktionen',
            },
            {
              name: 'Firefox synchronisieren',
              id: 'AMsynchron',
              command: 'gSync',
              subdir: 'Firefox Funktione',
            },
            {
            name: 'Zugangsdaten und Passwörter',
            id: 'AMdaten',
            command:
              'LoginHelper.openPasswordManager(window, { entryPoint: "mainmenu" })',
            tooltiptext: 'about:logins',
            subdir: 'Firefox Funktionen',
            },
            {
              name: 'Task Manager',
              id: 'AMManager',
              command: 'switchToTabHavingURI("about:processes", true)',
              tooltiptext: 'about:processes',
              subdir: 'Firefox Funktionen',
            },
            {
              name: 'Offline arbeiten',
              id: 'AMOffline',
              command: 'BrowserOffline.toggleOfflineStatus();',
              subdir: 'Firefox Funktionen',
            },
              /*
                {
                name: 'separator',
                },
                */
            {
              name: 'Neustart',
              id: 'AMreboot',
              tooltiptext: 'userChrome.js-Cache wird geleert',
              command: 'goReeboot',
            },
            {
              name: 'Beenden',
              id: 'AMquit',
              command: 'goQuitApplication(event);',
            },
        ]
      },
    
      _externalAppPopup: null,
      _isready: false,
    
      init: function() {
        this.handleRelativePath(this.toolbar.apps);
        const XULNS = 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';
    
        var ExternalAppBtn = document.createElementNS(XULNS, 'toolbarbutton');
        ExternalAppBtn.id = 'AppMenuButton';
        ExternalAppBtn.setAttribute('label', 'AppButton');
        ExternalAppBtn.addEventListener('click', event => {
          event.preventDefault();
          event.stopPropagation();
        });
        ExternalAppBtn.setAttribute('tooltiptext', 'Firefox Menü');
        ExternalAppBtn.setAttribute('type', 'menu');
        ExternalAppBtn.setAttribute('removable', 'true');
          
        // Definiere den Profilpfad
        let ProfilePath = PathUtils.toFileURI(
          PathUtils.join(PathUtils.profileDir, 'chrome', 'image')
        );
      
        // Symbole
        let DefaultIcon = 'Button_groß.png';
        let AlternateIcon = 'Button_klein-5.png';
    
        // Wenn Appmenu.isButton true ist, benutze das große Symbol, sonst das kleine
        if (Appmenu.isButton) {
          ExternalAppBtn.style.listStyleImage = `url('${ProfilePath}/${DefaultIcon}')`; // Großes Symbol
          ExternalAppBtn.style.width = '94px'; // Feste Breite für großes Symbol
          ExternalAppBtn.style.height = '24px'; // Feste Höhe für großes Symbol
        } else {
          ExternalAppBtn.style.listStyleImage = `url('${ProfilePath}/${AlternateIcon}')`; // Kleines Symbol
          //ExternalAppBtn.style.width = "16px"; // Feste Breite für kleines Symbol
          //ExternalAppBtn.style.width = '26px';
          ExternalAppBtn.style.width = '50px';
          ExternalAppBtn.style.height = '21px'; // Feste Höhe für kleines Symbol
        }
    
        // Button in die richtige Toolbar einfügen
        if (Appmenu.isUrlbar === 1) {
          var navBar = document.getElementById('nav-bar-customization-target');
          navBar.insertBefore(ExternalAppBtn, navBar.firstChild);
        } else if (Appmenu.isUrlbar === 2) {
          var menubar = document.getElementById('toolbar-menubar');
          menubar.insertBefore(ExternalAppBtn, menubar.firstChild);
        } else {
          var TabsToolbar = document.getElementById('TabsToolbar');
          TabsToolbar.insertBefore(ExternalAppBtn, TabsToolbar.firstChild);
        }
    
        var ExternalAppPopup = document.createElementNS(XULNS, 'menupopup');
        ExternalAppPopup.addEventListener('click', event => {
          event.stopPropagation();
        });
        ExternalAppPopup.setAttribute('id', 'AMpopup');
        this._externalAppPopup = ExternalAppPopup;
        ExternalAppBtn.appendChild(ExternalAppPopup);
        Appmenu.onpopupshowing();
          
        // Menü mit Tastaturkürzel öffnen
        if (Appmenu.hotkey) {
        let key = document.createXULElement('key');
          key.id = 'key_AppMenuPopup';
          key.setAttribute('key', Appmenu.hotkey);
          if (Appmenu.hotkeyModifier)
          key.setAttribute('modifiers', Appmenu.hotkeyModifier);
          key.addEventListener('command', function () {
            document.getElementById('AMpopup').openPopup();
            });
          document.getElementById('mainKeyset').appendChild(key);
        }
      },
    
      buildCSSLoaderMenu: function(parentPopup) {
          // Erst alle alten Einträge löschen
          while (parentPopup.firstChild) {
              parentPopup.removeChild(parentPopup.firstChild);
          }
          // Nur wenn UCL existiert und initialisiert ist
          if (typeof UCL === 'undefined' || !UCL.readCSS) return;
          // Alle CSS-Dateien aus UCL.readCSS auflisten
          for (let leafName of Object.keys(UCL.readCSS)) {
              let CSS = UCL.readCSS[leafName];
              let menuitem = document.createXULElement("menuitem");
              menuitem.setAttribute("label", leafName);
              menuitem.setAttribute("type", "checkbox");
              menuitem.setAttribute("checked", CSS.enabled);
              menuitem.addEventListener("command", () => UCL.toggle(leafName));
              menuitem.addEventListener("click", (event) => {
                  if (event.button === 1) {
                      UCL.toggle(leafName);
                      event.preventDefault();
                  }
              });
              menuitem.addEventListener("mouseup", (event) => {
                  if (event.button === 2) {
                      closeMenus(event.target);
                      UCL.edit(UCL.getFileFromLeafName(leafName));
                      event.preventDefault();
                  }
              });
              parentPopup.appendChild(menuitem);
          }
      },
      buildStyleLoaderMenu: function(parentPopup) {
          // Erst alle alten Einträge löschen
          while (parentPopup.firstChild) {
              parentPopup.removeChild(parentPopup.firstChild);
          }
          // Styles importieren
          let rebuildItem = document.createXULElement("menuitem");
          rebuildItem.setAttribute("label", "Styles importieren");
          rebuildItem.addEventListener("command", () => UCL.rebuild());
          parentPopup.appendChild(rebuildItem);
          // CSS-Datei erstellen
          let createCSS = document.createXULElement("menuitem");
          createCSS.setAttribute("label", "CSS-Datei erstellen");
          createCSS.addEventListener("command", () => UCL.create());
          parentPopup.appendChild(createCSS);
          // CSS-Ordner öffnen
          let openFolder = document.createXULElement("menuitem");
          openFolder.setAttribute("label", "CSS-Ordner öffnen");
          openFolder.addEventListener("command", () => UCL.openFolder());
          parentPopup.appendChild(openFolder);
          // Chrome-Ordner öffnen
          if (UCL.showChrome === 1) {
              let openChromeFolder = document.createXULElement("menuitem");
              openChromeFolder.setAttribute("label", "Chrome-Ordner öffnen");
              openChromeFolder.addEventListener("command", () => UCL.openCHRMFolder());
              parentPopup.appendChild(openChromeFolder);
          }
          // userChrome.css bearbeiten
          let editChromeItem = document.createXULElement("menuitem");
          editChromeItem.setAttribute("label", "userChrome.css bearbeiten");
          editChromeItem.addEventListener("command", () => UCL.editUserCSS("userChrome.css"));
          parentPopup.appendChild(editChromeItem);
          // userContent.css bearbeiten
          let editContentItem = document.createXULElement("menuitem");
          editContentItem.setAttribute("label", "userContent.css bearbeiten");
          editContentItem.addEventListener("command", () => UCL.editUserCSS("userContent.css"));
          parentPopup.appendChild(editContentItem);
      },
    
    
      onpopupshowing: function() {
          if (this._externalAppPopup === null) return;
          var ExternalAppPopup = this._externalAppPopup;
          // Erst alle alten Einträge löschen
          while (ExternalAppPopup.firstChild) {
              ExternalAppPopup.removeChild(ExternalAppPopup.firstChild);
          }
          // Subdirs neu aufbauen
          for (let subdir of this.toolbar.subdirs) {
              if (subdir.name == 'separator') {
                  ExternalAppPopup.appendChild(document.createXULElement('menuseparator'));
              } else {
                  var subdirItem = ExternalAppPopup.appendChild(document.createXULElement('menu'));
                  var subdirItemPopup = subdirItem.appendChild(document.createXULElement('menupopup'));
                  subdirItem.setAttribute('class', 'menu-iconic');
                  subdirItem.setAttribute('label', subdir.name);
                  subdirItem.setAttribute('image', subdir.image);
                  Appmenu.subdirPopupHash[subdir.name] = subdirItemPopup;
                  Appmenu.subdirMenuHash[subdir.name] = subdirItem;
              }
          }
          // Hier die neuen Menüpunkte einfügen
          if (typeof UCL !== 'undefined') {
              this.buildCSSLoaderMenu(Appmenu.subdirPopupHash['CSS-Loader']);
              this.buildStyleLoaderMenu(Appmenu.subdirPopupHash['Style-Loader-Menü']);
          }
          // Apps und Configs neu aufbauen
          this.handleRelativePath(this.toolbar.apps);
          for (let app of this.toolbar.apps) {
              var appItem;
              if (app.name == 'separator') {
                  appItem = document.createXULElement('menuseparator');
              } else {
                  appItem = document.createXULElement('menuitem');
                  appItem.setAttribute('class', 'menuitem-iconic');
                  appItem.setAttribute('label', app.name);
                  appItem.setAttribute('image', app.image);
                  appItem.addEventListener('command', function () {
                      Appmenu.exec(this.path, this.args);
                  });
                  appItem.setAttribute('tooltiptext', app.name);
                  appItem.path = app.path;
                  appItem.args = app.args;
              }
              if (app.subdir && Appmenu.subdirPopupHash[app.subdir])
                  Appmenu.subdirPopupHash[app.subdir].appendChild(appItem);
              else ExternalAppPopup.appendChild(appItem);
          }
          for (let config of this.toolbar.configs) {
              var configItem;
              if (config.name == 'separator') {
                  configItem = document.createXULElement('menuseparator');
              } else {
                  configItem = document.createXULElement('menuitem');
                  configItem.setAttribute('class', 'menuitem-iconic');
                  configItem.setAttribute('label', config.name);
                  configItem.setAttribute('image', config.image);
                  configItem.addEventListener('command', () => {
                      Appmenu.executeCommand(config.command);
                  });
                  if (config.tooltiptext) {
                      configItem.setAttribute('tooltiptext', config.tooltiptext);
                  } else {
                      configItem.setAttribute('tooltiptext', config.name);
                  }
                  configItem.setAttribute('id', config.id);
              }
              if (config.subdir && Appmenu.subdirPopupHash[config.subdir]) {
                  Appmenu.subdirPopupHash[config.subdir].appendChild(configItem);
              } else {
                  ExternalAppPopup.appendChild(configItem);
              }
          }
          if (this.autohideEmptySubDirs) {
              for (let subdirName in Appmenu.subdirPopupHash) {
                  if (!Appmenu.subdirPopupHash[subdirName].hasChildNodes()) {
                      Appmenu.subdirMenuHash[subdirName].setAttribute('hidden', 'true');
                  }
              }
          }
          if (this.moveSubDirstoBottom) {
              let i = ExternalAppPopup.childNodes.length;
              while (ExternalAppPopup.firstChild.getAttribute('class') != 'menuitem-iconic' && i-- != 0) {
                  ExternalAppPopup.appendChild(ExternalAppPopup.firstChild);
              }
          }
          this._isready = true;
      },
    
      executeCommand: function(command) {
        const commandMap = { 
          'gCustomizeMode.enter()': () => gCustomizeMode.enter(),
          'safeModeRestart();': () => safeModeRestart(),
          'goKonsole': () => {
                  var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
                  var { BrowserConsoleManager } = require('resource://devtools/client/webconsole/browser-console-manager');
                  BrowserConsoleManager.openBrowserConsoleOrFocus();
                },
          'goWerkzeuge': () => {
                  var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
                  var { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs');
                  BrowserToolboxLauncher.init();
                },
          'goEntwickler': () => {
                  var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
                  var { gDevToolsBrowser } = require('resource://devtools/client/framework/devtools-browser');
                  gDevToolsBrowser.toggleToolboxCommand(window.gBrowser, Cu.now());
                },
          'gSync': () => gSync.openPrefs('menubar'),
          'LoginHelper.openPasswordManager(window, { entryPoint: "mainmenu" })': () => LoginHelper.openPasswordManager(window, { entryPoint: 'mainmenu' }),
          'switchToTabHavingURI("about:processes", true)': () => switchToTabHavingURI('about:processes', true),
          'BrowserOffline.toggleOfflineStatus();': () => BrowserOffline.toggleOfflineStatus(),      
          'goReeboot': () => {
                    Services.appinfo.invalidateCachesOnRestart();
                    Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
                  },
          'goQuitApplication(event);': () => goQuitApplication(event),
        };
        
        if (commandMap[command]) {
          commandMap[command]();
        } else {
          console.warn('Unbekannter Befehl: ', command);
        }
      },
    
      handleRelativePath: function(apps) {
        for (let app of apps) {
          if (app.path) {
            app.path = app.path.replace(/\//g, '\\');
            var ffdir = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get(app.root, Ci.nsIFile).path;
            if (/^(\\)/.test(app.path)) {
              app.path = ffdir + app.path;
            }
          }
        }
      },
    
      exec: function(path, args) {
        args = args || [];
        var args_t = args.slice(0);
        for (let arg of args_t) {
          arg = arg.replace(/%u/g, gBrowser.currentURI.spec);
        }
        var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath(path);
        if (!file.exists()) {
          alert('Datei nicht gefunden: ' + path);
          return;
        }
        if (file.isExecutable() && !path.endsWith('.js')) {
          var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
          process.init(file);
          process.run(false, args_t, args_t.length);
        } else if (file.isFile()) {
          if (this.editor) {
            let UI = Cc['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Ci.nsIScriptableUnicodeConverter);
            UI.charset = window.navigator.platform.toLowerCase().includes('win') ? 'Shift_JIS' : 'UTF-8';
            let path = UI.ConvertFromUnicode(file.path);
            let app = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
            app.initWithPath(this.editor);
            let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
            process.init(app);
            process.run(false, [path], 1);
          } else {
            file.launch();
          }
        } else if (file.isDirectory()) {
          if (this.fileManager) {
            let args=[this.FMParameter,path];
            let app = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
            app.initWithPath(this.fileManager);
            let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
            process.init(app);
            process.run(false, args, args.length);
          } else {
            file.launch();
          }
        }
      },
    };
    
    (function () {
        // Definiere den Profilpfad für die Symbole
        let ProfilePath = PathUtils.toFileURI(
          PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')
        );
      
        // Standard-Symbol-Dateiname
        let ButtonIcon01 = 'restart.svg';
        let ButtonIcon02 = 'quit.svg';
      
        let Icon01 = 'profile.svg';
        let Icon02 = 'chrome.svg';
        let Icon03 = 'css4.svg';
        let Icon04 = 'js.svg';
        let Icon05 = 'addons.svg';
        let Icon06 = 'folder.svg';
        let Icon07 = 'folder-1.svg';
      
        let Icon11 = 'Themes.svg';
        let Icon12 = 'debugging-workers.svg';
        let Icon13 = 'command-console.svg';
        let Icon14 = 'window-dev-tools.svg';
        let Icon15 = 'developer.svg';
        let Icon16 = 'sync.svg';
        let Icon17 = 'passwords.svg';
        let Icon18 = 'performance.svg';
        let Icon19 = 'plug-disconnected.svg';
      
        // StyleSheetService zum Hinzufügen der CSS-Regeln
        let sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService);
        let uri = Services.io.newURI(
          'data:text/css;charset=utf-8,' +
            encodeURIComponent(`
    
              #AMpopup { margin-left: 8px !important; }
    
              menuitem[label='Profil-Verzeichniss'] { background-image: url('${ProfilePath}/${Icon01}');
                            background-repeat: no-repeat !important; 
                            background-position: 11px 3px !important; 
                            background-size: 16px 16px !important; /* Größe des Symbols anpassen */ 
                            -moz-context-properties: fill, fill-opacity;
                            fill: currentColor;
                            }
              menuitem[label='Chrome-Ordner'] { background-image: url('${ProfilePath}/${Icon02}'); 
                            background-repeat: no-repeat !important; 
                            background-position: 11px 3px !important; 
                            background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                            -moz-context-properties: fill, fill-opacity;
                            fill: currentColor; 
                            }
              menuitem[label='CSS-Ordner'] { background-image: url('${ProfilePath}/${Icon03}'); 
                            background-repeat: no-repeat !important; 
                            background-position: 11px 3px !important; 
                            background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                            -moz-context-properties: fill, fill-opacity;
                            fill: currentColor;                       
                            }
              menuitem[label='JS-Ordner'] { background-image: url('${ProfilePath}/${Icon04}'); 
                            background-repeat: no-repeat !important; 
                            background-position: 11px 3px !important; 
                            background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                            -moz-context-properties: fill, fill-opacity;
                            fill: currentColor;                       
                            }
              menuitem[label='Addon-Verzeichniss'] { background-image: url('${ProfilePath}/${Icon05}');
                            background-repeat: no-repeat !important; 
                            background-position: 11px 3px !important; 
                            background-size: 16px 16pxx !important; /* Größe des Symbols anpassen */
                            -moz-context-properties: fill, fill-opacity;
                            fill: currentColor;                       
                            }
              menuitem[label='Programm-Verzeichniss'] { background-image: url('${ProfilePath}/${Icon06}'); 
                            background-repeat: no-repeat !important; 
                            background-position: 11px 3px !important; 
                            background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                            -moz-context-properties: fill, fill-opacity;
                            fill: currentColor;                       
                            }
              menuitem[label='Startup-Cache'] { background-image: url('${ProfilePath}/${Icon07}');
                            background-repeat: no-repeat !important; 
                            background-position: 11px 3px !important; 
                            background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                            -moz-context-properties: fill, fill-opacity;
                            fill: currentColor;                       
                            }
      
              #AMAnpassen     { background-image: url('${ProfilePath}/${Icon11}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important;
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;                          
                              }
              #AMModus        { background-image: url('${ProfilePath}/${Icon12}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important;
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }
              #AMKonsole      { background-image: url('${ProfilePath}/${Icon13}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important;
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }
              #AMWerkzeuge    { background-image: url('${ProfilePath}/${Icon14}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important; 
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }
              #AMEntwickler   { background-image: url('${ProfilePath}/${Icon15}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important;
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }
              #AMsynchron     { background-image: url('${ProfilePath}/${Icon16}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important; 
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }
              #AMdaten        { background-image: url('${ProfilePath}/${Icon17}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important; 
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }        
              #AMManager      { background-image: url('${ProfilePath}/${Icon18}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important; 
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }
              #AMOffline      { background-image: url('${ProfilePath}/${Icon19}');
                                background-repeat: no-repeat !important; 
                                background-position: 11px 3px !important;
                                background-size: 16px 16px !important;
                                -moz-context-properties: fill, fill-opacity;
                                fill: currentColor;
                              }
      
      
              /* Neustart-Button */
              #AMreboot { 
                  background-image: url('${ProfilePath}/${ButtonIcon01}');
                  background-repeat: no-repeat !important;
                  background-position: 10px 2px !important;
                  background-size: 20px 20px !important; /* Größe des Symbols anpassen */
                  padding-left: 10px !important; /* Platz für das Symbol lassen */
                  -moz-context-properties: fill, fill-opacity !important;
                  fill: #fbc96e !important;
              }
      
              /* Beenden-Button */
              #AMquit { 
                  background-image: url('${ProfilePath}/${ButtonIcon02}');
                  background-repeat: no-repeat !important;
                  background-position: 12px 3px !important;
                  background-size: 16px 16px !important; /* Größe des Symbols anpassen */
                  padding-left: 10px !important; /* Platz für das Symbol lassen */
                  -moz-context-properties: fill, fill-opacity !important;
                  fill: red !important;
              }
      
          `),
          null,
          null
        );
      
        // CSS-Regeln registrieren
        sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
      })();
      
      if (window.gBrowser) Appmenu.init();
    Alles anzeigen
  • Custom toolbars buttons have no icons

    • Mira_Belle
    • 9. September 2025 um 08:58

    Sören Hentzschel Danke für die ausführliche Erklärung.
    Richtig, wie in dem Beispiel, nur so kenne ich das. Mit dem Backslash hatte ich tatsächlich zuvor noch nie gesehen.
    Wie schreibt Andreas so gerne, man lernt nie aus. ;)

  • Custom toolbars buttons have no icons

    • Mira_Belle
    • 8. September 2025 um 19:41

    Ah, verstehe.
    Es ist ja anders als bei dem, was ich so kenne, wenn CSS eingebunden wird.

  • Custom toolbars buttons have no icons

    • Mira_Belle
    • 8. September 2025 um 09:16

    :/

    Habe mir beide Skripte mal genauer angeschaut!
    Das CSS zum einbinden eines eigenen Symbols ist da vorhanden, aber ...

    Code
      var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
    	\
    	  #about-button .toolbarbutton-icon {\
    		list-style-image: url("chrome://global/skin/icons/defaultFavicon.svg"); /* icon / path to icon */ \
    		fill: dimgray; /* icon color name/code */\
    	  }\
    	\
      '), null, null);

    ... mich irritieren die Backslashes.
    Habe es jetzt nicht ausprobiert. Eventuell, sind die das Problem.

  • UserCSSLoader (2025)

    • Mira_Belle
    • 8. September 2025 um 09:04

    Ich verstehe Dich schon!
    Und was den Header angeht, inkl. Bedienungsanleitung, es ist einfach zu viel Text!
    Aber das kann ja alles so im "normalen" Skript bleiben.
    Die Überlegung ist ja, für einfachere Gemüter das gleiche Skript halt in einer Light-Version anzubieten.
    Und in dieser Version den Code so zur Verfügung zu stellen, dass eben automatisch der Explorer unter Windows,
    und entsprechen in anderen BS sich der Dateimanager öffnet.
    Sinn und Zweck dieser Überlegung!
    So einige Anwender sind mit den Einstellungen von Farben schon überfordert, geschweige denn
    eigene Symbole zu integrieren.
    Es soll also für jene einfach ein Skript geben, dass sie installieren können und das dann einfach funktioniert.

    Und der Header, wie Du schon schreibst, ist Jahre alt. Eventuell könnte man den auch mal überarbeiten.
    Aber das sollte man mit bedacht machen.
    Aber Du hast recht, Speravir müsste sich dazu äußern,

Unterstütze uns!

Jährlich (2025)

101,9 %

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

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