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

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 19:15

    2002Andreas Klasse Idee! Jetzt müssten nur noch die "Kästchen" weg.
    Habe mir erlaubt klitze kleine Veränderungen vor zu nehmen.
    Häkchen ist jetzt grün,
    und das background-image: in Zeile 38 habe ich durch --menuitem-icon: ersetzt.

    JavaScript
    /* Firefox userChrome script
     * Shortcut menu to modify about:config entries
     * Tested on Firefox 132+
     * Author: garywill (https://garywill.github.io)
     * 
     */
    
    // ==UserScript==
    // @include         main
    // @onlyonce
    // ==/UserScript==
    
    console.log("aboutconfig_menu.uc.js");
    
    (() => {
      
    
        const prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
        ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs")
        const sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
        // ---------------------------------------------------------------------------------------
        
        const button_label = "about:config Kontextmenü";
        const cssuri_icon = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
                toolbarbutton#aboutconfig-button .toolbarbutton-icon {
                    list-style-image: url("data:image/svg+xml;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAgIC0gTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwogICAtIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxwYXRoIGZpbGw9ImNvbnRleHQtZmlsbCIgZD0iTTEzLjkgOS44MWExLjIzIDEuMjMgMCAwIDAgMC0uMTd2LS4wOGE1LjY3IDUuNjcgMCAwIDAtMi40LTMuMzYgMS4xNyAxLjE3IDAgMCAxLS41Ni0uOTVWM2ExIDEgMCAwIDAtMS0xSDYuMDZhMSAxIDAgMCAwLTEgMXYyLjI1YTEuMTcgMS4xNyAwIDAgMS0uNTYgMSA1LjY2IDUuNjYgMCAwIDAtMi4zNSAzLjMzdi4xMmEuNTMuNTMgMCAwIDAgMCAuMTEgNS4zNSA1LjM1IDAgMCAwLS4xMSAxIDUuNjUgNS42NSAwIDAgMCAzLjI0IDUuMDkgMSAxIDAgMCAwIC40NC4xaDQuNTdhMSAxIDAgMCAwIC40NC0uMUE1LjY1IDUuNjUgMCAwIDAgMTQgMTAuODNhNS4zIDUuMyAwIDAgMC0uMS0xLjAyem0tOC4yNy0yYTMuMTggMy4xOCAwIDAgMCAxLjQzLTIuNlY0aDEuODh2MS4yNWEzLjE4IDMuMTggMCAwIDAgMS40MyAyLjYgMy42OCAzLjY4IDAgMCAxIDEuNTQgMi4yNHYuMjJhMi44MiAyLjgyIDAgMCAxLTMuNjgtLjU5QTMuNDggMy40OCAwIDAgMCA0LjU2IDlhMy43NiAzLjc2IDAgMCAxIDEuMDctMS4xNXoiPjwvcGF0aD48L3N2Zz4=");
                }
                toolbarbutton#aboutconfig-button .toolbarbutton-badge {
                    background-color: #009f00;
                    visibility: hidden; 
                }      
    
    			@media (-moz-platform: windows) {
                    menuitem[checked="true"] > .menu-icon {
                    -moz-context-properties: fill, fill-opacity;
                /*    fill: currentColor; */
                    fill:rgb(0, 255, 0) !important;
                    fill-opacity: var(--menu-icon-opacity);
                    --menuitem-icon: url("chrome://global/skin/icons/menu-check.svg")!important;
                }
                }
                `), null, null);
                
        const cssuri_warnbadge = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
                toolbarbutton#aboutconfig-button .toolbarbutton-badge {
                    background-color:rgb(255, 0, 0);
                    visibility: unset;
                } 
                `), null, null);
       
        sss.loadAndRegisterSheet(cssuri_icon, sss.USER_SHEET);
      
        
        var prefItems = [ 
    	{
                name: "📼 Kein automatisches Popup beim Download",
                type: prefs.PREF_BOOL,
                pref: "browser.download.alwaysOpenPanel",
                possibleVals: [
                    {  val: false },
                    {  val: true },
                ]
            },
    	{
                name: "🎞️ Beim Schließen vom letzten Tab den Browser nicht schließen",
                type: prefs.PREF_BOOL,
                pref: "browser.tabs.closeWindowWithLastTab",
                possibleVals: [
                    {  val: false },
                    {  val: true },
                ]
            },
    		"seperator",
    	{
                name: "🔎 Suche aus Suchleiste im neuen Tab öffnen",
                type: prefs.PREF_BOOL,
                pref: "browser.search.openintab",
                possibleVals: [
                    {  val: false },
                    {  val: true },
                ]
            },
    	{
                name: "📖 Lesezeichen im neuen Tab öffnen",
                type: prefs.PREF_BOOL,
                pref: "browser.tabs.loadBookmarksInTabs",
                possibleVals: [
                    {  val: false },
                    {  val: true },
                ]
            },
    	{
                name: "📖 Link aus Adressleiste im neuen Tab öffnen",
                type: prefs.PREF_BOOL,
                pref: "browser.urlbar.openintab",
                possibleVals: [
                    {  val: false },
                    {  val: true },
                ]
            },
    		"seperator",
    	{
                name: "🎊 Animations Modus",
                type: prefs.PREF_STRING,
                pref: "image.animation_mode",
                possibleVals: [
                    { name: "Einmal", val: "once" },
                    { name: "Keine", val: "none" },
                    { name: "Dauerhaft", val: "normal" },
                ]
            },
    	     "seperator", 
    		{
                name: "🔏 CSP aktivieren - deaktivieren",
                type: prefs.PREF_BOOL,
                pref: "security.browser_xhtml_csp.enabled",
                possibleVals: [
                    {  val: false  },
                    {  val: true },
                ]
            },
    		{
                name: "🔏 Urlbar Verhalten - deaktivieren",
                type: prefs.PREF_BOOL,
                pref: "browser.urlbar.scotchBonnet.enableOverride",
                possibleVals: [
                    {  val: false  },
                    {  val: true },
                ]
            },		
    		{
                name: "🔏 eval erlauben - verbieten",
                type: prefs.PREF_BOOL,
                pref: "security.allow_unsafe_dangerous_privileged_evil_eval",
                possibleVals: [
                    {  val: false  },
                    {  name: "true ⚠️",  val: true , sign: '‼️' },
                ]
    		},	
            {
                name: "🌐 IPv6 ausschalten",
                type: prefs.PREF_BOOL,
                pref: "network.dns.disableIPv6",
                possibleVals: [
                    {  val: false },
                    {  val: true },
                ]
            },
            {
                name: "🔐 DNS Modus",
                type: prefs.PREF_INT,
                pref: "network.trr.mode",
                possibleVals: [
                    { name: "0 - Default" , val: 0 },
                    { name: "2 - DoH, fallback Plain DNS" , val: 2 },
                    { name: "3 - DoH only" , val: 3 }, 
                    { name: "5 - Plain DNS" , val: 5 }
                ]
            },
            {
                name: "🔐 DoH server",
                type: prefs.PREF_STRING,
                pref: "network.trr.uri",
                possibleVals: [
                    { name: "Cloudflare" , val: "https://mozilla.cloudflare-dns.com/dns-query" },
                    { name: "NextDNS" , val: "https://firefox.dns.nextdns.io/" }
                ] // See buildin DoH at 'network.trr.resolvers'
            },
            {
                name: "🔏 Veraltete TLS Version aktivieren",
                type: prefs.PREF_BOOL,
                pref: "security.tls.version.enable-deprecated",
                possibleVals: [
                    { val: false  },
                    { name: "true ⚠️",  val: true , sign: '‼️'},
                ]
            },
    
            "seperator",    
            {
                name: "🖱️ Mausrad-Y-Multiplikator",
                type: prefs.PREF_INT,
                pref: "mousewheel.default.delta_multiplier_y",
                possibleVals: [
                    { val: 150 },
                ]
            },
            {
                name: "🖱️ Vertikaler Faktor des Systembildlaufes",
                type: prefs.PREF_INT,
                pref: "mousewheel.system_scroll_override.vertical.factor",
                possibleVals: [
                    { val: 250 },
                ]
            },
    
    
            "seperator",    
            {
                name: "▶️ Autoplay Medien Standard",
                type: prefs.PREF_INT,
                pref: "media.autoplay.default",
                possibleVals: [
                    { val: 0, name: "0 - allow" },
                    { val: 1, name: "1 - blockAudible 👍" },
                    { val: 5, name: "5 - blockAll" },
                ]
            },
    		{
                name: "📺 Videos gesperrt - Videos frei",
                type: prefs.PREF_BOOL,
                pref: "media.mediasource.enabled",
                possibleVals: [
                    {  val: false  },
                    {  val: true },
                ]
            },
            {
                name: "▶️ Media Autoplay ext bg",
                type: prefs.PREF_BOOL,
                pref: "media.autoplay.allow-extension-background-pages",
                possibleVals: [
                    {  val: false  },
                    {  val: true },
                ]
            },
            {
                name: "▶️ Richtlinien zur Sperrung von Autoplay-Medien",
                type: prefs.PREF_INT,
                pref: "media.autoplay.blocking_policy",
                possibleVals: [
                    { val: 0, name: "0 - no block" },
                    { val: 1, name: "1 - block 👍" },
                    { val: 2, name: "2 - block more" },
                    // 0=sticky (default), 1=transient, 2=user
                ]
            },
            {
                name: "▶️ InternetAudio",
                type: prefs.PREF_BOOL,
                pref: "dom.webaudio.enabled",
                possibleVals: [
                    {  val: false },
                    {  val: true  ,  sign: '‼️' , warnbadge: true},
                ]
            },
    
            "seperator",    
            {
                name: "🔤 Benutzerdefinierte Web-Schriften zulassen",
                type: prefs.PREF_INT,
                pref: "browser.display.use_document_fonts",
                possibleVals: [
                    { name: "1 - Allow", val: 1 },
                    { name: "0 - Disallow", val: 0 },
                ]
            },
             {
                name: "💻 Keine Popup Anmeldung für Browser-Werkzeuge",
                type: prefs.PREF_BOOL,
                pref: "devtools.debugger.prompt-connection",
                possibleVals: [
                    {  val: true  },
                    { name: "false ⚠️",   val: false , sign: '‼️' },
                ]
            },
            {
                name: "🔏 Tooltips aktivieren - deaktivieren",
                type: prefs.PREF_BOOL,
                pref: "browser.chrome.toolbar_tips",
                possibleVals: [
                    {  val: false  },
                    {  val: true },
                ]
            },
    		 "seperator",
    		{
                name: "💻 Popups nicht automatisch schließen",
                type: prefs.PREF_BOOL,
                pref: "ui.popup.disable_autohide",
                possibleVals: [
                    {  val: false  },
                    {  val: true },
                ]
            },
        ];
    	
    	if (!window.gBrowser){
        return;
        }
        
        CustomizableUI.createWidget({
            id: 'aboutconfig-button', // button id
            type: "custom",
            defaultArea: CustomizableUI.AREA_NAVBAR,
            removable: true,
            onBuild: function (doc) {
                let btn = doc.createXULElement('toolbarbutton');
                btn.id = 'aboutconfig-button';
                btn.label = button_label;
                btn.tooltipText = button_label;
                btn.type = 'menu';
                btn.className = 'toolbarbutton-1 chromeclass-toolbar-additional';
                btn.setAttribute("badged", "true"); 
                btn.setAttribute("badge", "!"); 
                
                let mp = doc.createXULElement("menupopup");
                mp.id = 'aboutconfig-popup';
                mp.onclick = function(event) {  event.preventDefault()  ;} ;
                
    
                
                prefItems.forEach( function (item, items_i) { // loop every user defined pref
                    
                    if (item === "seperator") 
                    {
                        mp.appendChild(doc.createXULElement('menuseparator'));
                        return;
                    }
                    
                    //var current_val = getItemCurrentVal(item) ;
                    var menu = doc.createXULElement("menu");
                    menu.label = item.name ? item.name : item.pref ;
                    menu.id = "aboutconfig_menu_" + items_i ;
                    menu.className = 'menuitem-iconic' ;
                    
                
                    var menupopup = doc.createXULElement("menupopup");
                    menupopup.id = "aboutconfig_menupopup_" + items_i ;
                    menupopup.className = 'menuitem-iconic' ;
                    
    
                    
                    item.possibleVals.forEach( function (pv, i) { // loop every possible value
                        
                        var display_val = prefPossibleValToDisplay(item, pv.val) ;
                        
                        // Submenu item. One is one possible value
                        var menuitem = doc.createXULElement("menuitem");
                        menuitem.label = pv.name ? pv.name : display_val ;
                        menuitem.id = "aboutconfig_menu_" + items_i + "__" + i  ;
                        menuitem.setAttribute('type', 'radio') ;
                        menuitem.className = 'menuitem-iconic' ;
                        menuitem.tooltipText = display_val ;
    
                        if (pv ['sign'])
                            menuitem.label += '  ' + pv['sign']; 
                        
                        
                        menuitem.addEventListener('click', function(event) { 
                            //console.log(this.id); 
                            setItemPrefVal(item , pv.val);
                        } ) ;
                        menupopup.appendChild(menuitem);
                        
                    });           
                                    
                    var default_val = getItemDefaultVal(item);
                    var default_val_display = null;
                    var reset_label = "Zurücksetzen: ";
                    if (item.signWhenDefaultVal)
                        reset_label += item.signWhenDefaultVal + ' ' ;
                    if (default_val !== undefined && default_val !== null)
                    {
                        default_val_display = prefPossibleValToDisplay(item, default_val);
                        reset_label += default_val_display ;
                    }
                    else
                        reset_label += ' (delete in about:config)'
                    
                    menupopup.appendChild(
                        doc.createXULElement('menuseparator')
                    );
                    
                    // Submenu entry to reset a pref to default
                    var default_item = doc.createXULElement("menuitem");
                    default_item.id = "aboutconfig_menu_" + items_i + "__default" ;
                    default_item.className = 'menuitem-iconic';
                    default_item.label = reset_label;
                    default_item.tooltipText = default_val_display;
    
                    default_item.addEventListener('click', function(event) { 
                        //console.log(this.id); 
                        //setItemPrefVal(item , getItemDefaultVal(item) );
                        prefs.clearUserPref(item.pref);
                    } ) ;
                    
                    menupopup.appendChild(default_item);
                    
                    //------------
                    menu.appendChild(menupopup);
                    mp.appendChild(menu);
                    
                    
                });
                
                btn.appendChild(mp);
    
                mp.addEventListener('popupshowing', function() { 
                    //console.log(this);
                    evalPopulateMenu(this); 
                    
                    update_badge();
                    
                });
    
                btn.onclick = function(event) {
                    if (event.button == 1) {
                        const win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                            .getService(Components.interfaces.nsIWindowMediator)
                            .getMostRecentWindow("navigator:browser");
                        win.gBrowser.selectedTab = win.gBrowser.addTrustedTab('about:config');
                    }
                    
                    update_badge();
                };
                
                return btn;
            }
        });
        
        function getItemDefaultVal (item) {
            var default_val = undefined;
            try{
                if ( item.type == prefs.PREF_BOOL )
                    default_val = prefs.getDefaultBranch(item.pref).getBoolPref('');
                else if ( item.type == prefs.PREF_INT )
                    default_val = prefs.getDefaultBranch(item.pref).getIntPref('');
                else if ( item.type == prefs.PREF_STRING )
                    default_val = prefs.getDefaultBranch(item.pref).getStringPref('');
            }catch(err) { default_val = null }
            
            return default_val;
        }
        function getItemCurrentVal (item) {
            var current_val = null;
            try{
                if ( item.type == prefs.PREF_BOOL )
                    current_val = prefs.getBoolPref(item.pref);
                else if ( item.type == prefs.PREF_INT )
                    current_val = prefs.getIntPref(item.pref);
                else if ( item.type == prefs.PREF_STRING )
                    current_val = prefs.getStringPref(item.pref);
            }catch(err){ }
            return current_val ;
        }
        
        function if_pref_current_val_is (item, pv_index) {
            var current_val = getItemCurrentVal(item) ;
            if (current_val === null)
                return false;
            
            if ( current_val === item.possibleVals[pv_index].val )
                return true;
            else 
                return false;
        }
        
        function setItemPrefVal(item, newVal)
        {
            if ( item.type == prefs.PREF_BOOL )
                prefs.setBoolPref(item.pref, newVal);
            else if ( item.type == prefs.PREF_INT )
                prefs.setIntPref(item.pref, newVal);
            else if ( item.type == prefs.PREF_STRING )
                prefs.setStringPref(item.pref, newVal);
            
            update_badge();
        }
        function prefPossibleValToDisplay(item, possible_val ) {
            if (possible_val === null) 
                return "null";
            
            var display_val = possible_val.toString();
            if (item.type == prefs.PREF_STRING)
                display_val = `'${display_val}'`;
            
            return display_val;
        }
        
        function evalPopulateMenu(popupmenu)
        {
            prefItems.forEach( function (item, items_i) {
                if (item === "seperator") 
                    return;
                
                const menu = popupmenu.querySelector("#aboutconfig_menu_" + items_i);
                menu.label = item.name ? item.name : item.pref ;
                menu.style.fontWeight = "";
                
                const default_val = getItemDefaultVal(item);
                        
                var current_val = getItemCurrentVal(item) ;
                var current_val_display = prefPossibleValToDisplay(item, current_val);
                menu.tooltipText = `Pref: ${item.pref}\nValue: ${current_val_display}`;
                
                if (current_val !== null)
                {
                    if (item.type == prefs.PREF_BOOL) 
                        menu.label += '  [' + ( current_val?'T':'F' ) + ']';
                    else if (item.type == prefs.PREF_INT) 
                        menu.label += '  [' + current_val + ']';
                    else if (item.type == prefs.PREF_STRING) {
                        var current_val_display_short;
                        
                        if (current_val.length > 8)
                            current_val_display_short = current_val.substring(0, 6) + '..'; 
                        else 
                            current_val_display_short = current_val;
                        
                        menu.label += '  [' + current_val_display_short + ']';
                    }
                } 
                
                if (current_val !== default_val)
                    menu.style.fontWeight = "bold";
                
                if (current_val === default_val && item.signWhenDefaultVal)
                    menu.label += '  ' + item.signWhenDefaultVal;
    
                
                item.possibleVals.forEach( function (pv, i) {
                    menuitem = popupmenu.querySelector("#aboutconfig_menu_" + items_i + "__" + i);
                    if ( if_pref_current_val_is(item, i) )
                    { 
                        menuitem.setAttribute("checked",true);
                     
                        if (pv ['sign'])
                            menu.label += '  ' + pv['sign'];
                    }
                    else 
                        menuitem.setAttribute("checked",false);
                });
            });
        }
        
        function add_warnbadge()
        {
            if ( ! sss.sheetRegistered(cssuri_warnbadge, sss.USER_SHEET) )
                 sss.loadAndRegisterSheet(cssuri_warnbadge, sss.USER_SHEET);
        }
        function rm_warnbadge()
        {
            if ( sss.sheetRegistered(cssuri_warnbadge, sss.USER_SHEET) )
                 sss.unregisterSheet(cssuri_warnbadge, sss.USER_SHEET);
        }
        
        update_badge();
        async function update_badge()
        {
            
            var show_warnbadge = false;
            
            for (item of prefItems)
            {
                if (typeof(item) === "string")
                    continue;
                
                const current_val = getItemCurrentVal(item) ;
                if (
                    item.possibleVals.some ( function(ele) {
                        return ( ele ['val'] === current_val && ele ['warnbadge'] && ele ['warnbadge'] === true );
                    } )
                )
                {
                    show_warnbadge = true;
                    break;
                }
            }
                 
            
            if (show_warnbadge)
                add_warnbadge();
            else 
                rm_warnbadge();
        }
        
        
    })();
    Alles anzeigen
  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 16:35

    Ein Screenshot des Menüs, welches erzeugt werden soll, wäre nicht schlecht.
    Ich kann mir einfach nicht vorstellen, was das Skript macht.


    /* ***************************************************************************** */
    Hat sich erledigt!

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 15:46
    Zitat von Endor

    Edit:
    Hat sich erledigt. Habe es selbst hinbekommen.
    Lag wohl an meiner dreckigen Brille......
    Mfg.
    Endor

    Und?
    Woran lag es?
    Übrigens ein interessantes Skript!

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 15:31
    Zitat von 2002Andreas

    Dann teste das bitte mal mit diesem Icon:

    chrome://global/skin/icons/arrow-down.svg

    menuitem.style.setProperty('--menuitem-icon', 'url("chrome://global/skin/icons/arrow-down.svg")');
    No problemo! Größenanpassung erfolgt!


    Zitat von FuchsFan

    Für die eigenen Icons nutze ich eine css-Datei.

    Ah!
    Das ist z.B. ein Grund, warum ich gerne alles in einem Skript habe!
    Aber ich muss zu geben, ich bin da auch nicht immer konsequent.

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 15:16

    FuchsFan Das Skript ist ganz schöner Murks!
    Es sind zwei oder gar drei Skripte, die miteinander verwurschtelt wurden!
    Dann ist nahezu alles in der Config tot, also ohne Funktion.
    Daraus folgt viele Zeilen ungenutzter Code, der eventuell aber dann doch hier oder da zu Problemen führen könnte.
    Es tut mir echt leid, wenn ich wirklich JavaScript könnte, würde ich Dir ein neues Skript mal eben so schreiben.
    Aber daran getraue ich mich nicht wirklich. Sorry.

    Ich finde z.B. nicht heraus woher die Symbole für die Anwendungen herkommen sollten.

    Dann der Code für die Firefoxfunktionen, die sind doch längst überholt!
    Funktionieren die denn überhaupt? Neustart und Browser-Werkzeuge.

    key.setAttribute('oncommand', 'document.getElementById("AMpopup").openPopup();'); kann eigentlich nicht mehr funktionieren!

    Ich denke, Du bist besser beraten, einzelne Skripte zu nutzen.
    Z.B. eines für ein abgespecktes Appmenü und das von Andreas genutzte OpenWith.us.js.

    Wenn Du magst, könnte ich mich ja am WE mal hinsetzen und schauen, ob ich nicht "mein" abgespecktes Appmenü-Skript
    irgendwie mit dem OpenWith.us.js verknüpfen könnte.
    Was fehlen würde, wäre die Funktion zum freien Verschieben des Buttons.

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 14:52

    2002Andreas

    Zitat von 2002Andreas

    Der Code funktioniert auch, aber er vergrößert die beiden Pfeile nicht so groß wie die anderen Icons.

    Kann ich so nicht bestätigen!

    Dass das ganze etwas nach rechts verschoben ist, liegt an einem anderen Code.
    Bei mir in Original sind die Symbole ja auch kleiner und dann passt es!

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 10:21

    Im Übrigen funktioniert das CSS bei mir in der Nightly!

    CSS
    	#context-navigation {	
    		> .menuitem-iconic {
    		  /* Gemeinsame Icon-Größe */
    			> .menu-icon {
    				width: 35px !important;
    				height: 35px !important;
    				max-width: 35px !important;
    				max-height: 35px !important;
    				background-size: contain !important; /* für perfekte Skalierung */
    				object-fit: contain !important; /* falls SVGs oder PNGs verwendet werden */
    	  		}
    		}
      	}
    Alles anzeigen

    Da funkt FuchsFan was anderes dazwischen!

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 10:05

    2002Andreas FuchsFan muss da noch anderen Code haben!

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 09:56

    FuchsFan Uff.
    Da ist aber ganz schön schwer daran gebastelt worden.
    Das schaue ich mir heute Nachmittag mal genauer an, ok?

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 09:32
    Zitat von FuchsFan

    So sieht das jetzt aus, was darf ich ändern?

    Den dazugehörenden Code bräuchte ich.

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 1. August 2025 um 00:31

    2002Andreas Ich hab's


    Ändere die Zeile mit : image:    "moz-icon:file:///" + BrowserPath[i].split("<>")[0] + "?size=16",
    einfach in : image:  "moz-icon:file:///" + encodeURIComponent(BrowserPath[i].split("<>")[0]) + "?size=16",



    So! Nun muss ich aber ins Bett.

    Ach, und so ganz nebenbei habe ich das Appmenü-Skript auch gefixt!
    Wer nutzt das Original?

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 31. Juli 2025 um 22:12
    Zitat von Endor

    Da wird ja so einiges auf uns zukommen.
    Mal sehen ob wir das alles wieder zum laufen bringen.

    Es sind mehr Scripte davon betroffen als ich dachte.

    Die da wären?
    Bei mir sind es "nur" drei gewesen.
    Die Skripte mit der Funktion zum Übersetzen mit Google sowie DeepL habe ich "reparieren" können.
    Einzig das Appmenü-Skript von aborix, das will nicht so! Da stehe ich auf dem Schlauch.

  • Symbolabstände in einigen Menüs und Kontextmenüs zu groß

    • Mira_Belle
    • 31. Juli 2025 um 22:00

    Okey, ...!
    Mein Fehler, Dein FF kann kein JS, oder?
    Dann funktioniert das JavaScript natürlich nicht.

  • Symbolabstände in einigen Menüs und Kontextmenüs zu groß

    • Mira_Belle
    • 31. Juli 2025 um 17:12

    Du müsstest nur let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    in let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'Icons')); ändern!

    Oder halt Deinen Ordner für die Symbole von Icons in icons umbenennen. Viele Wege führen nach Rom.

    CSS scheint da etwas gutmütiger zu sein! Denn da nutzt Du icons, aber der Ordner heißt Icons.
    Das ist aber eigentlich ein Fehler! Auch wenn es funktioniert, berichtige das, denn es könnte in Zunkunft
    eben DOCH zu fehlern führen und dann weist Du nicht, woran das liegt.
    Mein Vorschlag, ändere den Ordnernamen in "icons".
    Dann funktioniert weiterhin Dein CSS, aber eben auch das Skript ohne die Änderung.

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 31. Juli 2025 um 17:00

    Naja, will ja mein Problem auch gelöst haben,
    und das dürfte sich überlagern, denke ich.
    Auch meine Symbole.us.js und andere Skripte könnte es noch treffen,
    wahrscheinlich sogar. Wird viel "Arbeit".

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 31. Juli 2025 um 16:33

    Ah, ok, dann werde ich mich mal dran machen, Vivaldi und der Edge und die Nightly stehen ja zur Auswahl.
    Komme aber erst spät dazu, das zu testen, frühesten ab 22°° Uhr!
    Eventuell findet ja schon vorher jemand eine Lösung, für unserer beiden Problemen.

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 31. Juli 2025 um 16:09

    2002Andreas Das Skript kann ich leider nicht Testen!
    Aber hast Du mal versucht in Zeile 76 image: durch --menuitem-icon: zu ersetzen?
    Glaube zwar nicht wirklich, dass das funktioniert, aber wer weis.

    Und im "meinem" Appmenü-Skript funktioniert es auch nicht,
    wenn man ganz einfach background-image: durch --menuitem-icon: ersetzt.
    Da muss wohl mehr gemacht werden.

  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 31. Juli 2025 um 15:48

    Darf ich mich noch draufhängen?
    Also im Skript zum Übersetzen per Deepl, sowie Google funktioniert die Korrektur auch.
    Nur in "meinem" Appmenü da funktioniert es so nicht!

    Aus dem Skript stelle ich mal stellvertretend einen Teil des CSS für die Symbole rein:

    JavaScript
    (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(`
      
              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; 
                            }
              #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;
                              }
                              
              /* 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);
      })();
    Alles anzeigen
  • ScrollTopAndBottom.uc.js und Open with.uc.js zeigen keine Icons mehr an im Nightly

    • Mira_Belle
    • 31. Juli 2025 um 15:04
    JavaScript
    menuitem.style.setProperty('--menuitem-icon', 'url("file:///F:/ICONS/FF/arrow-bottom.png');

    :?: Da ist wohl ein Fehler drinnen!
    Versucht es mal damit.

    JavaScript
    menuitem.style.setProperty('--menuitem-icon', 'url("file:///F:/ICONS/FF/arrow-bottom.png")';

    So geht es!

    JavaScript
    //SkipToTopAndBottom.uc.js
    (function() {
    
        let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");  // Pfadangabe zum Profilordner
        let up = "arrow-up.svg";
    
        let menuitem = document.createXULElement('menuitem');
            menuitem.id = 'context-to-top';
            menuitem.classList.add('menuitem-iconic');
            menuitem.setAttribute('tooltiptext' , 'Zum Seitenanfang springen');
        //    menuitem.style.listStyleImage='url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAiElEQVR42mNkoBAw4pFjAuIWIP4NxA1A/J8UA0Ca5wFxPJQ/C4gzsBnCSIRmBnyGMBKpGachjCRoxmoII4maMQyBGVAOxB1EaoaBEiDuxRaI4kD8AocmCSB+iS8QRw2AAHYgfgXEfGjin4BYDIh/EjIABNyBuAyIuaD8b0DcBcQ70RXiy41EAQBJ/SQRxtinwAAAAABJRU5ErkJggg==")';
        //    menuitem.style.listStyleImage = 'url("' + ("file:" + ProfilePath + "/chrome/icons/" + up) + '")';
        // TEST!
            menuitem.style.setProperty('--menuitem-icon', 'url("' + ("file:" + ProfilePath + "/chrome/icons/" + up) + '")');
        //    menuitem.setAttribute('oncommand' , "ownerGlobal.gBrowser.selectedBrowser.messageManager.loadFrameScript(' data: , content.scrollTo(0,0) ' , false);");
    
            menuitem.addEventListener('click', () => {
                if (event.button == 0) {
                    ownerGlobal.gBrowser.selectedBrowser.messageManager.loadFrameScript(' data: , content.scrollTo({ top: 0, left: 0, behavior: \"smooth\" }) ' , false);
                }
            });
    
        let refItem = document.getElementById('context-reload');
        refItem.parentNode.insertBefore(menuitem, refItem);
         
        })();
        
        (function() {
    
        let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");  // Pfadangabe zum Profilordner
        let down = "arrow-down.svg";
        
        let menuitem = document.createXULElement('menuitem');
            menuitem.id = 'context-to-bottom';
            menuitem.classList.add('menuitem-iconic');
            menuitem.setAttribute('tooltiptext' , 'Zum Seitenende springen');
        //    menuitem.style.listStyleImage='url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAhUlEQVR42mNkoBAw4hB3B+IyIOaC8r8BcRcQ7yTGAHYgfgXEfGjin4BYDIh/EjJAHIhf4HCZBBC/HDUAuwHFQNzDQBqoAOJORiSDZgBxGpGaFwJxEhD/Q/YCsYbANWMLA0KGoGjGFYi4DMHQjMsAbIZg1YzPAJhcAxCzAnENNs2EDCAKAADTlCMRQhQlFQAAAABJRU5ErkJggg==")';
        //    menuitem.style.listStyleImage = 'url("' + ("file:" + ProfilePath + "/chrome/icons/" + down) + '")';
        // TEST!
            menuitem.style.setProperty('--menuitem-icon', 'url("' + ("file:" + ProfilePath + "/chrome/icons/" + down) + '")');
        //    menuitem.setAttribute('oncommand' , "ownerGlobal.gBrowser.selectedBrowser.messageManager.loadFrameScript(' data: , content.scrollTo(0,100000) ' , false);");
    
            menuitem.addEventListener('click', () => {
                if (event.button == 0) {
                    ownerGlobal.gBrowser.selectedBrowser.messageManager.loadFrameScript(' data: , content.scrollTo({ top: 0, left: 0, behavior: \"smooth\" }) ' , false);
                }
            });
    
        let refItem = document.getElementById('context-reload');
        refItem.parentNode.insertBefore(menuitem, refItem);
         
        })();
    Alles anzeigen
  • Symbolabstände in einigen Menüs und Kontextmenüs zu groß

    • Mira_Belle
    • 31. Juli 2025 um 14:52

    bananovic sorry, wenn Dir mein Code nichts gebracht hat, aber du hast ja eine Lösung für Dich gefunden.

    Was die fehlerhaften Abstände der Kontextmenüs betrifft, wirst Du wohl oder über ein, zwei Monate damit leben müssen.
    Mozilla ist da gerade schwer am Schrauben!
    Wenn Du Glück hast erledigen sich so manche Ungereimtheiten schon beim nächsten Update!
    Du wirst dann alle Deine "korrekturen" padding-left: 13px !important; löschen können.
    Wirst Du aber merken!
    Du kannst aber auch mein Skript nutzen, wenn Du magst, musst halt nur alle Symbole austauschen,
    denn das Skript halte ich aktuell, da ich es selbst nutze!

    Beitrag

    RE: Symbole in den Kontextmenüs [ Update ]

    <3lichen Dank Euch beiden:!:

    Und so muss der Code aussehen, damit der Test und nur der Text verschoben wird.

    (Quelltext, 5 Zeilen)

    Aber ohne Eure Anregungen wäre ich da nie drauf gekommen.


    mkpcxxl  
    Neuere Version mit ein paar Korrekturen!

    (Quelltext, 877 Zeilen)

    Mira_Belle
    23. Juli 2025 um 21:11

Unterstütze uns!

Jährlich (2026)

35,3 %

35,3% (273,24 von 775 EUR)

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