1. Startseite
  2. Nachrichten
  3. Herunterladen
    1. Thunderbird Release-Version
    2. Thunderbird 153 ESR (2026)
    3. Thunderbird 140 ESR (2025)
    4. Thunderbird Beta-Version
    5. Sprachpaket (Benutzeroberfläche)
    6. Wörterbücher (Rechtschreibprüfung)
  4. Hilfe & Lexikon
    1. Anleitungen zu Thunderbird
    2. Fragen & Antworten (FAQ) zu Thunderbird
    3. Hilfe zu dieser Webseite
    4. Letzte Änderungen
  5. Forum
    1. Unerledigte Themen
    2. Letzte Beiträge
    3. Themen der letzten 24 Stunden
  • Anmelden
  • Registrieren
  • 
  • Suche
Alles
  • Alles
  • Forum
  • Lexikon
  • Artikel
  • Seiten
  • Erweiterte Suche
  1. Thunderbird Mail DE
  2. Boersenfeger

Beiträge von Boersenfeger

  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 18. Oktober 2023 um 12:26
    Zitat von dharkness21

    Ansonsten wirst Du sie einzeln ansprechen müssen, hier ↓ mal ein Beispiel.

    CSS
    li[aria-label~="Internet"] {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #C20EFD !important;
    }

    Diese Ordnerüberschriften sind ja schon geändert:

    Es geht nur noch um die rotgekringelten. Klick mal drauf...

    Die Schriftgröße der zu färbenden Einträge könnte auch noch auf 14px gebracht werden.

    Dein anderer Vorschlag, für mich angepasst, bringt keine Veränderung. Auch nicht nach Neustart mit Cache-Leerung.

    CSS
    /* DRK in */        li[aria-label~="DRK"] {    font-size: 12pt !important;    font-weight: bold !important;    color: #C20EFD !important;    }

    ChaosRacer

    Meine userChrome.css beinhaltet nur den Code für den Hintergrund der Symbolleisten... Natur

    Ich nutze das Script UserCSSLoader und habe die anderen CSS-Codes in den Chrome-Unterordner CSS ausgelagert:

    Auch wenn dort alle anderen Codes deaktiviert sind, funktioniert der Code für die Sidebar mit den Lokalen Ordnern nicht wie gewünscht.

  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 17. Oktober 2023 um 17:15

    :thumbsup:

    Kann man den selbsterstellten Ordner auch Farben verpassen?

    CSS
    /* Posteingang in Rot */
        
        li[data-folder-type="inbox"] {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: red ! important;
    }
    
        /* Papierkorb in Lila */
        
        li[data-folder-type="trash"] {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #c822ff ! important;
    
        }
            
        /* Gesendet in Lichtblau */
    
        li[data-folder-type="sent"] {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #5cc4f5 ! important;
        }
    
            
        /* Postausgang in Dunkelblau */
    
        li[data-folder-type="outbox"] {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: blue ! important;
        }
            
        /* Entwürfe in Gelb */
    
        li[data-folder-type="drafts"] {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #12ff12 ! important;
        }
            
        /* Junk in Orange */
    
        li[data-folder-type="junk"] {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #fda100 ! important;
        }
    Alles anzeigen
  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 17. Oktober 2023 um 16:53

    Die bleibende Anzeige der Anzahl der Mails und die Ordnergröße! Deinen Vorschlag hatte ich ja getestet, aber ohne Erfolg, es blitzt beim Start kurz auf und verschwindet dann... der Hintergrund ist kein Problem, auch ohne Code klappt das andere nicht.

    Den Posteingang probiere ich.... melde mich wieder.

  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 17. Oktober 2023 um 16:18
    Zitat von Bastler

    Ob -moz-tree-cell-text noch gültig ist?

    Ein -moz-appearance ist falsch, muss ohne -moz-

    Ich denke schon, zumindest werden die ungelesenen Mails hervorgehoben... :)

    -moz- habe ich entfernt, danke dafür!

    Habe jetzt meine userChrome.css bis auf das Moorhuhn Hintergrundbild aufgelöst und die bisher dort abgespeicherten CSS in eigene einzelne Codes ausgelagert und im Unterordner CSS im chrome-Ordner des Profils gespeichert.

    Das klappt nun auch.

    Das Problem im Ordnerbereich bleibt aber... Ideen dazu?

    Ebenso funktioniert dieser CSS nicht für die entsprechende veränderte Anzeige im Posteingang:

    Da kann dein Hinweis auf -moz-tree-cell-text wohl stimmen. Wie müsste man dies umschreiben? :)

    CSS
        /* Posteingang in Rot */
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Inbox) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: red ! important;
        }
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Inbox, selected) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: white ! important;
        }
    
        /* Papierkorb in Lila */
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Trash) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #800080 ! important;
        }
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Trash, selected) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: white ! important;
        }
            
        /* Gesendet in Lichtblau */
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Sent) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #5cc4f5 ! important;
        }
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Sent, selected) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: white ! important;
        }
            
        /* Postausgang in Dunkelblau */
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Outbox) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: blue ! important;
        }
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Outbox, selected) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: white ! important;
        }
            
        /* Entwürfe in Gelb */
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Drafts) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: #f3e03b ! important;
        }
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Drafts, selected) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: white ! important;
        }
            
        /* Junk in Orange */
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Junk) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: orange ! important;
        }
    
        treechildren::-moz-tree-cell-text(folderNameCol, specialFolder-Junk, selected) {
        font-size: 12pt !important;
        font-weight: bold !important;
        color: white ! important;
        }
    Alles anzeigen
  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 17. Oktober 2023 um 14:11
    CSS
    /*  Ungelesene Mails hervorheben */
    
        #threadTree treechildren::-moz-tree-cell-text {
        font-size: 15px !important; }
        #threadTree treechildren::-moz-tree-cell-text(unread) {
        color: #2E64FE !important;
        font-size: 15px !important; }
    
        
    /*  Symbolleisten anordnen */
    
        #toolbar-menubar  {
        padding-left: 250px !important;    
        appearance: none !important;
        order: -1 !important;
        }
        #tabs-toolbar {
        padding-left: 250px !important;
        order: 1 !important;
        }
        #titlebar > .icons-beside-text {
        padding-left: 0px !important;    
        order: 2 !important;
        }    
        
        
    /* Posteingang gestalten */
    
    /*  Betreffzeile im Posteingang farblich absetzen */
    
        .tree-table-cell-container {
        background-color: gold !important; 
        }
    
    
    /*  Navigationsleiste Hintergrundbild */
    
        #navigation-toolbox,    
        #mail-bar3,
        #title-bar,
        #QuickFolders-Toolbar,
        #calendar-toolbox,
        #task-toolbar2,
        #cardbook-toolbar,
        #chat-view-toolbox {
        -moz-appearance: none !important;
        background-image:url("Moorhuhn.JPG") !important;
        }
    
    /*  Schrift in Tabs */
    
        tab .tab-text {
        font-size: 16px !important;
        font-weight: bold !important; 
        }
        
    /*  Menüleiste fett */
    
        #mail-menubar {
        font-size: 16px !important;    
        font-weight: bold !important;
        color: white !important;
        }
    
    /*  Große Icons */
    
        #mail-bar3 .toolbarbutton-1 .toolbarbutton-icon,
        #compose-toolbox .toolbarbutton-1 .toolbarbutton-icon {
        min-width: 26px;
        min-height: 26px;
        }
        
    /*  Cardbook */
    
        #cardbook-toolbox .toolbarbutton-1 .toolbarbutton-icon {
        min-width: 26px !important;
        min-height: 26px !important;
        width: 26px !important;
        height: 26px !important;
        }
        
    /*  Bereiche Button ausblenden */
    
        #spacesPinnedButton {
        display: none !important;
        }    
        
    /*  Ordner Schriftgröße */
    
    /*  Folder pane font */
    
        #folderTree treechildren::-moz-tree-cell-text {
        font-size: 15px !important; 
        } 
    
    /*  Thread pane font */
    
        #threadTree {
        font-size: 15px !important; 
        }
    
    
    /*  Set Line Spacing */
    
        #folderTree > treechildren::-moz-tree-row {
        height: 22px !important; 
        }
        #threadTree > treechildren::-moz-tree-row {
        height: 20px !important; 
        }
    
    
    /*  Sidebar Hintergrund */
        
        #folderTree {
        background-color: #faf0e6 !important;
        appearance: none !important;
        position: fixed !important;
        top: 45px;
        bottom: 0px;
        width: 230px !important;
        }
    Alles anzeigen

    Oder ist ein Fehler in der userChrome.css?

  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 17. Oktober 2023 um 14:04

    Der farbige Hintergrund wird dadurch auf meinen Anzeigebereich aufgezogen. Und ja, meine Bezeichnungen sind Firefox geschuldet. Ist aber in der Auswirkung egal, ob nun Sidebar oder Ordnerbereich in der Überschrift des CSS steht.

  • Menuleiste soll in TB 115 in die oberste Reihe

    • Boersenfeger
    • 17. Oktober 2023 um 14:00

    .. wurde hier mit diesem Code erledigt... ggf. einfach nach Gusto umstellen.

    CSS
    /*  Symbolleisten anordnen */
    
        #toolbar-menubar  {
        padding-left: 250px !important;    
        appearance: none !important;
        order: -1 !important;
        }
        #tabs-toolbar {
        padding-left: 250px !important;
        order: 1 !important;
        }
        #titlebar > .icons-beside-text {
        padding-left: 0px !important;    
        order: 2 !important;
        }    
    Alles anzeigen

    Allerdings müssen Vorarbeiten zur Verwendung von CSS-Codes erbracht werden.

    Lies dazu

    Benutzeroberfläche per userChrome.css anpassen - Thunderbird Mail DE

  • Verschiedene Scripte funktionieren nicht mit TB 115*

    • Boersenfeger
    • 17. Oktober 2023 um 13:56

    UserCSS Loader ist hier ja nun korrekt und funktioniert auch... gehts bei dir denn im 1. Profil?

    Was wäre dann mit dem Script

    Code
    /* Addons-UpDate-Check-Button */

    :)

  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 17. Oktober 2023 um 13:47
    Zitat von dharkness21

    Sprich es soll wie im oberen Bild aussehen und nicht wie im unteren?

    Genau...

    Zitat von ChaosRacer

    Wenn du das auf width: 250px !important; änderst, müsste es wieder sichtbar sein, sofern ich das Problem richtig erkannt habe ;)

    Leider klappt es nicht ganz... habe auch andere Werte probiert..

    Ich muss erst wieder die 3 Punkte bemühen, die Haken bei "Gesamtzahl der Nachrichten" und "Ordnergröße" entfernen und wieder setzen, damit es wie gewünscht aussieht. Siehe #1 1. Grafik..

  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 16. Oktober 2023 um 16:35
    CSS
    /*  Sidebar Hintergrund */
        
        #folderTree {
        background-color: #faf0e6 !important;
        appearance: none !important;
        position: fixed !important;
        top: 45px;
        bottom: 0px;
        width: 280px !important;
        }
  • Lokale Ordner zeigen nicht die Anzahl der Mails und die Größe an

    • Boersenfeger
    • 16. Oktober 2023 um 16:34

    Nachfolgend habe ich die Lokalen Ordner bearbeitet, aber irgendetwas zerschlägts.

    So soll es aussehen, ich kann es via 3 Punkte Menü auch einstellen, allerdings ist nach einem Neustart dies nur kurz zu sehen und wandelt sich dann während des Starts noch so um:

    Nach dem Ab- und wieder Anwählen hier

    Sieht es dann wieder aus wie oben.

    Es muss an einem Codeschnipsel in der userChrome.css liegen.. siehe nächsten Post...

  • Verschiedene Scripte funktionieren nicht mit TB 115*

    • Boersenfeger
    • 16. Oktober 2023 um 16:20

    Äh, was hat jetzt das mit meinem Problem zu tun... oder seid ihr hier nur falsch abgebogen? :)

    Habe nun das Restart und das CSS-Loader-Script richtig eingebunden, die Buttons erscheinen und es funktioniert.... :thumbsup:


    Hier funktioniert jetzt nur noch ein Script nicht. Wenn dort nochmal jemand nachschauen könnte... ggf. lässt sichs aber für die 115er Version nicht mehr aktivieren, weil die Grundlagen andere sind:

    JavaScript
    /* Addons-UpDate-Check-Button */
    
    (function() {
        
      if (window.__SSi != 'window0')
        return;
    
      CustomizableUI.createWidget({
        id: 'addons-update-button',
        defaultArea: CustomizableUI.AREA_NAVBAR,
        label: 'Add-ons Update',
        tooltiptext: '',
        onCommand: onCommand,
        onCreated: function(button) {
            button.style.listStyleImage = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAdUlEQVQokZVSwRHAIAgLPYfoXs7RCTpG53Avt7APrhaFU8gLMEEJAkEQgFbc7IxkVjt0r6Sp7VIVITumBpKt00FA2ThmjXzkfMMWO8EZFSj8LrUyjsG9b9DaJXq+qAIVxEUxtLHpaXE95dj1NcK2rmbwaGJ4Af0tIg00j/6iAAAAAElFTkSuQmCC)';}
      });
      
      function onCommand(event) {
          
        let frameScript = function() {
          addEventListener('pageshow', function onPageshow(event) {
            let document = event.target;
            if (document.URL != 'about:addons')
              return;
            removeEventListener('pageshow', onPageshow);
    
            content.setTimeout(function() {
              document.querySelector('addon-page-options panel-item[action="check-for-updates"]').click();
              let categories = document.getElementById('categories');
              let item = categories.querySelector('button[viewid="addons://updates/available"]');
              item.click();
    
              categories.addEventListener('mousedown', function onMousedown(event) {
                if (event.target != item && event.target.parentNode != item) {
                  item.hidden = true;
                  categories.removeEventListener('mousedown', onMousedown);
                };
              });
            }, 0);
          });
        };
    
        let frameScriptURI = 'data:,(' + frameScript.toString() + ')()';
        let window = event.target.ownerGlobal;
        window.openTrustedLinkIn('about:addons', 'tab');
        window.gBrowser.selectedBrowser.messageManager.loadFrameScript(frameScriptURI, true);
      };
    })();
    Alles anzeigen
  • Verschiedene Scripte funktionieren nicht mit TB 115*

    • Boersenfeger
    • 15. Oktober 2023 um 18:11

    Jo, ich hoffe drauf.... :thumbsup:

    danke für den Versuch!

  • Verschiedene Scripte funktionieren nicht mit TB 115*

    • Boersenfeger
    • 15. Oktober 2023 um 17:59
    Zitat von Bastler

    Ich gehe davon aus, dass die Anpassungen für Scripte konform zum 115.x gemacht wurden.

    Zeile 148 | defaultArea: CustomizableUI.AREA_NAVBAR,

    versuche

    CustomizableUI.unifiedToolbarContent,

    oder auch nur unifiedToolbarContent,

    Vielen Dank !

    Die Anpassungen für Scripte sind analog zum aktuellen Firefox Nightly erledigt.

    Deine Vorschläge bescheren mir leider keinen Button...

  • Verschiedene Scripte funktionieren nicht mit TB 115*

    • Boersenfeger
    • 15. Oktober 2023 um 17:33

    UserStylesLoader.zip

    Leider nur als ZIP, da der Code zu umfangreich ist...

    Liegts am Script oder Code?

  • Verschiedene Scripte funktionieren nicht mit TB 115*

    • Boersenfeger
    • 15. Oktober 2023 um 17:29

    Thunderbird 115.3.4b1

    Windows 10 64bit

    Wie angekündigt stelle ich hier einige Scripte zur Diskussion, die im TB 115 nicht mehr funktionieren und bitte um freundliche Unterstützung..

    JavaScript
    // ==UserScript==
    // @name UserCSSLoader
    (function(){
    
    let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
    if (!window.Services)
    Cu.import("resource://gre/modules/Services.jsm");
    // Wenn beim Start ein anderes Fenster angezeigt wird (das zweite Fenster), wird es beendet
    let list = Services.wm.getEnumerator("navigator:browser");
    while(list.hasMoreElements()){ if(list.getNext() != window) return; }
    
    if (window.UCL) {
    window.UCL.destroy();
    delete window.UCL;
    }
    
    window.UCL = {
    vFileManager: 'H:\\Total Commander\\TOTALCMD64.EXE',
    vFMParameter: '/T',
    USE_UC: "UC" in window,
    AGENT_SHEET: Ci.nsIStyleSheetService.AGENT_SHEET,
    USER_SHEET : Ci.nsIStyleSheetService.USER_SHEET,
    AUTHOR_SHEET: Ci.nsIStyleSheetService.AUTHOR_SHEET,
    readCSS : {},
    get disabled_list() {
    let obj = [];
    try {
    obj = this.prefs.getCharPref("disabled_list").split("|");
    } catch(e) {}
    delete this.disabled_list;
    return this.disabled_list = obj;
    },
    get prefs() {
    delete this.prefs;
    return this.prefs = Services.prefs.getBranch("UserCSSLoader.")
    },
    get styleSheetServices(){
    delete this.styleSheetServices;
    return this.styleSheetServices = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
    },
    get FOLDER() {
    let aFolder;
    try {
    // UserCSSLoader.FOLDER verwenden
    let folderPath = this.prefs.getCharPref("FOLDER");
    aFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile)
    aFolder.initWithPath(folderPath);
    } catch (e) {
    aFolder = Services.dirsvc.get("UChrm", Ci.nsIFile);
    aFolder.appendRelativePath("CSS");
    }
    if (!aFolder.exists() || !aFolder.isDirectory()) {
    aFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664);
    }
    delete this.FOLDER;
    return this.FOLDER = aFolder;
    },
    getFocusedWindow: function() {
    let win = document.commandDispatcher.focusedWindow;
    if (!win || win == window) win = content;
    return win;
    },
    
    init: function() {
    const cssmenu = $C("menu", {
    id: "usercssloader-menu",
    label: "CSS",
    accesskey: "C",
    onclick: "if (event.button == 1) UCL.rebuild()"
    });
    const menupopup = $C("menupopup", {
    id: "usercssloader-menupopup"
    });
    cssmenu.appendChild(menupopup);
    
    let menu = $C("menu", {
    label: "Style Loader Menü",
    accesskey: "M"
    });
    menupopup.appendChild(menu);
    let mp = $C("menupopup", { id: "usercssloader-submenupopup" });
    menu.appendChild(mp);
    mp.appendChild($C("menuitem", {
    label: "Styles importieren",
    accesskey: "R",
    acceltext: "Alt + R",
    oncommand: "UCL.rebuild();"
    }));
    mp.appendChild($C("menuseparator"));
    mp.appendChild($C("menuitem", {
    label: "CSS Datei erstellen",
    accesskey: "D",
    oncommand: "UCL.create();"
    }));
    mp.appendChild($C("menuitem", {
    label: "CSS Ordner öffnen",
    accesskey: "O",
    oncommand: "UCL.openFolder();"
    }));
    mp.appendChild($C("menuitem", {
    label: "userChrome.css bearbeiten",
    hidden: false,
    oncommand: "UCL.editUserCSS(\'userChrome.css\');"
    }));
    mp.appendChild($C("menuitem", {
    label: "userContent.css bearbeiten",
    hidden: false,
    oncommand: "UCL.editUserCSS(\'userContent.css\');"
    }));
    mp.appendChild($C("menuseparator"));
    mp.appendChild($C("menuitem", {
    label: "Style Test (Chrome)",
    id: "usercssloader-test-chrome",
    hidden: true,
    accesskey: "C",
    oncommand: "UCL.styleTest(window);"
    }));
    mp.appendChild($C("menuitem", {
    label: "Style Test (Web)",
    id: "usercssloader-test-content",
    hidden: true,
    accesskey: "W",
    oncommand: "UCL.styleTest();"
    }));
    mp.appendChild($C("menuitem", {
    label: "Styles dieser Seite auf userstyles.org finden",
    accesskey: "S",
    oncommand: "UCL.searchStyle();"
    }));
    
    menu = $C("menu", {
    label: ".uc.css",
    accesskey: "U",
    hidden: !UCL.USE_UC
    });
    menupopup.appendChild(menu);
    mp = $C("menupopup", { id: "usercssloader-ucmenupopup" });
    menu.appendChild(mp);
    mp.appendChild($C("menuitem", {
    label: "Importieren(.uc.js)",
    oncommand: "UCL.UCrebuild();"
    }));
    mp.appendChild($C("menuseparator", { id: "usercssloader-ucseparator" }));
    
    CustomizableUI.createWidget({
    id: 'usercssloader-menu-item',
    type: 'custom',
    defaultArea: CustomizableUI.AREA_NAVBAR,
    onBuild: function(aDocument) {
    let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem');
    toolbaritem.id = 'usercssloader-menu-item';
    toolbaritem.className = 'chromeclass-toolbar-additional';
    return toolbaritem;
    }
    });
    $('usercssloader-menu-item').appendChild(cssmenu);
    
    //let refNode = $('helpMenu');
    //refNode.parentNode.insertBefore(cssmenu, refNode.nextSibling);
    
    $("mainKeyset").appendChild($C("key", {
    id: "usercssloader-rebuild-key",
    oncommand: "UCL.rebuild();",
    key: "R",
    modifiers: "alt",
    }));
    this.rebuild();
    this.initialized = true;
    if (UCL.USE_UC) {
    setTimeout(function() {
    UCL.UCcreateMenuitem();
    }, 1000);
    }
    window.addEventListener("unload", this, false);
    },
    uninit: function() {
    const dis = [];
    for (let x of Object.keys(this.readCSS)) {
    if (!this.readCSS[x].enabled)
    dis.push(x);
    }
    this.prefs.setCharPref("disabled_list", dis.join("|"));
    window.removeEventListener("unload", this, false);
    },
    destroy: function() {
    var i = document.getElementById("usercssloader-menu");
    if (i) i.parentNode.removeChild(i);
    var i = document.getElementById("usercssloader-rebuild-key");
    if (i) i.parentNode.removeChild(i);
    this.uninit();
    },
    handleEvent: function(event) {
    switch(event.type){
    case "unload": this.uninit(); break;
    }
    },
    rebuild: function() {
    let ext = /\.css$/i;
    let not = /\.uc\.css/i;
    let files = this.FOLDER.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
    while (files.hasMoreElements()) {
    let file = files.getNext().QueryInterface(Ci.nsIFile);
    if (!ext.test(file.leafName) || not.test(file.leafName)) continue;
    let CSS = this.loadCSS(file);
    CSS.flag = true;
    }
    for (let leafName of Object.keys(this.readCSS)) {
    const CSS = this.readCSS[leafName];
    if (!CSS.flag) {
    CSS.enabled = false;
    delete this.readCSS[leafName];
    }
    delete CSS.flag;
    this.rebuildMenu(leafName);
    }
    if (this.initialized) {
    if (typeof(StatusPanel) !== "undefined")
    StatusPanel._label = "Style importiert";
    else
    XULBrowserWindow.statusTextField.label = "Styles importieren";
    }
    },
    loadCSS: function(aFile) {
    var CSS = this.readCSS[aFile.leafName];
    if (!CSS) {
    CSS = this.readCSS[aFile.leafName] = new CSSEntry(aFile);
    if (this.disabled_list.indexOf(CSS.leafName) === -1) {
    CSS.enabled = true;
    }
    } else if (CSS.enabled) {
    CSS.enabled = true;
    }
    return CSS;
    },
    rebuildMenu: function(aLeafName) {
    var CSS = this.readCSS[aLeafName];
    var menuitem = document.getElementById("usercssloader-" + aLeafName);
    if (!CSS) {
    if (menuitem)
    menuitem.parentNode.removeChild(menuitem);
    return;
    }
    if (!menuitem) {
    menuitem = $C("menuitem", {
    label        : aLeafName,
    id            : "usercssloader-" + aLeafName,
    class        : "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : CSS.SHEET == this.AUTHOR_SHEET? "AUTHOR_SHEET": "USER_SHEET"),
    type        : "checkbox",
    autocheck    : "false",
    oncommand    : "UCL.toggle('"+ aLeafName +"');",
    onclick        : "UCL.itemClick(event);"
    });
    document.getElementById("usercssloader-menupopup").appendChild(menuitem);
    }
    menuitem.setAttribute("checked", CSS.enabled);
    },
    toggle: function(aLeafName) {
    var CSS = this.readCSS[aLeafName];
    if (!CSS) return;
    CSS.enabled = !CSS.enabled;
    this.rebuildMenu(aLeafName);
    },
    itemClick: function(event) {
    if (event.button == 0) return;
    event.preventDefault();
    event.stopPropagation();
    let label = event.currentTarget.getAttribute("label");
    if (event.button == 1) {
    this.toggle(label);
    }
    else if (event.button == 2) {
    closeMenus(event.target);
    this.edit(this.getFileFromLeafName(label));
    }
    },
    getFileFromLeafName: function(aLeafName) {
    let f = this.FOLDER.clone();
    f.QueryInterface(Ci.nsIFile); // use appendRelativePath
    f.appendRelativePath(aLeafName);
    return f;
    },
    styleTest: function(aWindow) {
    aWindow || (aWindow = this.getFocusedWindow());
    new CSSTester(aWindow, function(tester){
    if (tester.saved)
    UCL.rebuild();
    });
    },
    searchStyle: function() {
    let word;
    try {
    word = gBrowser.currentURI.host;
    } catch {
    word = gBrowser.currentURI.spec;
    }
    openWebLinkIn("https://userstyles.org/styles/search/" + word, "tab", {});
    },
    openFolder:function(){
    if (this.vFileManager.length != 0) {
    var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
    var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
    var args=[this.FOLDER.path];
    file.initWithPath(this.vFileManager);
    process.init(file);
    // Verzeichnis mit anderem Dateimanager öffnen
    process.run(false, args, args.length);
    } else {
    // Verzeichnis mit Dateimanager des Systems öffnen
    this.FOLDER.launch();
    }
    },
    editUserCSS: function(aLeafName) {
    let file = Services.dirsvc.get("UChrm", Ci.nsIFile);
    file.appendRelativePath(aLeafName);
    this.edit(file);
    },
    edit: function(aFile) {
    var editor = Services.prefs.getCharPref("view_source.editor.path");
    if (!editor) return alert("Unter about:config den vorhandenen Schalter:\n view_source.editor.path mit dem Editorpfad ergänzen");
    try {
    var UI = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
    UI.charset = window.navigator.platform.toLowerCase().indexOf("win") >= 0? "Shift_JIS": "UTF-8";
    var path = UI.ConvertFromUnicode(aFile.path);
    var app = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
    app.initWithPath(editor);
    var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
    process.init(app);
    process.run(false, [path], 1);
    } catch (e) {}
    },
    create: function(aLeafName) {
    if (!aLeafName) aLeafName = prompt("Name des Styles", dateFormat(new Date(), "%Y_%m%d_%H%M%S"));
    if (aLeafName) aLeafName = aLeafName.replace(/\s+/g, " ").replace(/[\\/:*?\"<>|]/g, "");
    if (!aLeafName || !/\S/.test(aLeafName)) return;
    if (!/\.css$/.test(aLeafName)) aLeafName += ".css";
    let file = this.getFileFromLeafName(aLeafName);
    this.edit(file);
    },
    UCrebuild: function() {
    let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
    let query = "?" + new Date().getTime();
    Array.slice(document.styleSheets).forEach(function(css){
    if (!re.test(css.href)) return;
    if (css.ownerNode) {
    css.ownerNode.parentNode.removeChild(css.ownerNode);
    }
    let pi = document.createProcessingInstruction('xml-stylesheet','type="text/css" href="'+ css.href.replace(/\?.*/, '') + query +'"');
    document.insertBefore(pi, document.documentElement);
    });
    UCL.UCcreateMenuitem();
    },
    UCcreateMenuitem: function() {
    let sep = $("usercssloader-ucseparator");
    let popup = sep.parentNode;
    if (sep.nextSibling) {
    let range = document.createRange();
    range.setStartAfter(sep);
    range.setEndAfter(popup.lastChild);
    range.deleteContents();
    range.detach();
    }
    
    let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
    Array.slice(document.styleSheets).forEach(function(css) {
    if (!re.test(css.href)) return;
    let fileURL = decodeURIComponent(css.href).split("?")[0];
    let aLeafName = fileURL.split("/").pop();
    let m = $C("menuitem", {
    label        : aLeafName,
    tooltiptext    : fileURL,
    id            : "usercssloader-" + aLeafName,
    type        : "checkbox",
    autocheck    : "false",
    checked        : "true",
    oncommand    : "this.setAttribute('checked', !(this.css.disabled = !this.css.disabled));",
    onclick        : "UCL.UCItemClick(event);"
    });            
    m.css = css;
    popup.appendChild(m);
    });
    },
    UCItemClick: function(event) {
    if (event.button == 0) return;
    event.preventDefault();
    event.stopPropagation();
    
    if (event.button == 1) {
    event.target.doCommand();
    }
    else if (event.button == 2) {
    closeMenus(event.target);
    let fileURL = event.currentTarget.getAttribute("tooltiptext");
    let file = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getFileFromURLSpec(fileURL);
    this.edit(file);
    }
    },
    };
    
    function CSSEntry(aFile) {
    this.path = aFile.path;
    this.leafName = aFile.leafName;
    this.lastModifiedTime = 1;
    this.SHEET = /^xul-|\.as\.css$/i.test(this.leafName) ?
    Ci.nsIStyleSheetService.AGENT_SHEET:
    Ci.nsIStyleSheetService.USER_SHEET;
    }
    CSSEntry.prototype = {
    sss: Components.classes["@mozilla.org/content/style-sheet-service;1"]
    .getService(Components.interfaces.nsIStyleSheetService),
    _enabled: false,
    get enabled() {
    return this._enabled;
    },
    set enabled(isEnable) {
    var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile)
    aFile.initWithPath(this.path);
    
    var isExists = aFile.exists(); // Wenn die Datei existiert true
    var lastModifiedTime = isExists ? aFile.lastModifiedTime : 0;
    var isForced = this.lastModifiedTime != lastModifiedTime; // Wenn es eine Änderung in der Datei gibt true
    
    var fileURL = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromActualFile(aFile);
    var uri = Services.io.newURI(fileURL, null, null);
    
    if (this.sss.sheetRegistered(uri, this.SHEET)) {
    // Wenn diese Datei bereits gelesen wurde
    if (!isEnable || !isExists) {
    this.sss.unregisterSheet(uri, this.SHEET);
    }
    else if (isForced) {
    // Nach Stornierung erneut einlesen
    this.sss.unregisterSheet(uri, this.SHEET);
    this.sss.loadAndRegisterSheet(uri, this.SHEET);
    }
    } else {
    // Datei wurde nicht gelesen
    if (isEnable && isExists) {
    this.sss.loadAndRegisterSheet(uri, this.SHEET);
    }
    }
    if (this.lastModifiedTime !== 1 && isEnable && isForced) {
    log(this.leafName + " wurde aktualisiert");
    }
    this.lastModifiedTime = lastModifiedTime;
    return this._enabled = isEnable;
    },
    };
    
    function CSSTester(aWindow, aCallback) {
    this.win = aWindow || window;
    this.doc = this.win.document;
    this.callback = aCallback;
    this.init();
    }
    CSSTester.prototype = {
    sss: Components.classes["@mozilla.org/content/style-sheet-service;1"]
    .getService(Components.interfaces.nsIStyleSheetService),
    preview_code: "",
    saved: false,
    init: function() {
    this.dialog = openDialog(
    "data:text/html;charset=utf8,"+encodeURIComponent('<!DOCTYPE HTML><html lang="de"><head><title>CSSTester</title></head><body></body></html>'),
    "",
    "width=550,height=400,dialog=no");
    this.dialog.addEventListener("load", this, false);
    },
    destroy: function() {
    this.preview_end();
    this.dialog.removeEventListener("unload", this, false);
    this.previewButton.removeEventListener("click", this, false);
    this.saveButton.removeEventListener("click", this, false);
    this.closeButton.removeEventListener("click", this, false);
    },
    handleEvent: function(event) {
    switch(event.type) {
    case "click":
    if (event.button != 0) return;
    if (this.previewButton == event.currentTarget) {
    this.preview();
    }
    else if (this.saveButton == event.currentTarget) {
    this.save();
    }
    else if (this.closeButton == event.currentTarget) {
    this.dialog.close();
    }
    break;
    case "load":
    var doc = this.dialog.document;
    doc.body.innerHTML = '\
    <style type="text/css">\
    :not(input):not(select) { padding: 0px; margin: 0px; }\
    table { border-spacing: 0px; }\
    body, html, #main, #textarea { width: 100%; height: 100%; }\
    #textarea { font-family: monospace; }\
    </style>\
    <table id="main">\
    <tr height="100%">\
    <td colspan="4"><textarea id="textarea"></textarea></td>\
    </tr>\
    <tr height="40">\
    <td><input type="button" value="Vorschau" id="Vorschau"/></td>\
    <td><input type="button" value="Speichern" id="Speichern"/></td>\
    <td width="80%"><span class="log"></span></td>\
    <td><input type="button" value="Schließen" id="Schliessen"/></td>\
    </tr>\
    </table>\
    ';
    this.textbox = doc.querySelector("textarea");
    this.previewButton = doc.querySelector('input[value="Vorschau"]');
    this.saveButton = doc.querySelector('input[value="Speichern"]');
    this.closeButton = doc.querySelector('input[value="Schließen"]');
    this.logField = doc.querySelector('.log');
    
    var code = "@namespace url(" + this.doc.documentElement.namespaceURI + ");\n";
    code += this.win.location.protocol.indexOf("http") === 0?
    "@-moz-document domain(" + this.win.location.host + ") {\n\n\n\n}":
    "@-moz-document url(" + this.win.location.href + ") {\n\n\n\n}";
    this.textbox.value = code;
    this.dialog.addEventListener("unload", this, false);
    this.previewButton.addEventListener("click", this, false);
    this.saveButton.addEventListener("click", this, false);
    this.closeButton.addEventListener("click", this, false);
    
    this.textbox.focus();
    let p = this.textbox.value.length - 3;
    this.textbox.setSelectionRange(p, p);
    
    break;
    case "unload":
    this.destroy();
    this.callback(this);
    break;
    }
    },
    preview: function() {
    var code = this.textbox.value;
    if (!code || !/\:/.test(code))
    return;
    code = "data:text/css;charset=utf-8," + encodeURIComponent(this.textbox.value);
    if (code == this.preview_code)
    return;
    this.preview_end();
    var uri = Services.io.newURI(code, null, null);
    this.sss.loadAndRegisterSheet(uri, Ci.nsIStyleSheetService.AGENT_SHEET);
    this.preview_code = code;
    this.log("Preview");
    },
    preview_end: function() {
    if (this.preview_code) {
    let uri = Services.io.newURI(this.preview_code, null, null);
    this.sss.unregisterSheet(uri, Ci.nsIStyleSheetService.AGENT_SHEET);
    this.preview_code = "";
    }
    },
    save: function() {
    var data = this.textbox.value;
    if (!data) return;
    
    var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
    fp.init(window, "", Ci.nsIFilePicker.modeSave);
    fp.appendFilter("CSS Files","*.css");
    fp.defaultExtension = "css";
    if (window.UCL)
    fp.displayDirectory = UCL.FOLDER;
    var res = fp.show();
    if (res != fp.returnOK && res != fp.returnReplace) return;
    
    var suConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
    suConverter.charset = "UTF-8";
    data = suConverter.ConvertFromUnicode(data);
    var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
    foStream.init(fp.file, 0x02 | 0x08 | 0x20, 0664, 0);
    foStream.write(data, data.length);
    foStream.close();
    this.saved = true;
    },
    log: function() {
    this.logField.textContent = dateFormat(new Date(), "%H:%M:%S") + ": " + $A(arguments);
    }
    };
    
    UCL.init();
    
    function $(id) { return document.getElementById(id); }
    function $A(arr) { return Array.slice(arr); }
    function $C(name, attr) {
    var el = document.createXULElement(name);
    if (attr) Object.keys(attr).forEach(function(n) { el.setAttribute(n, attr[n]) });
    return el;
    }
    function dateFormat(date, format) {
    format = format.replace("%Y", ("000" + date.getFullYear()).substr(-4));
    format = format.replace("%m", ("0" + (date.getMonth()+1)).substr(-2));
    format = format.replace("%d", ("0" + date.getDay()).substr(-2));
    format = format.replace("%H", ("0" + date.getHours()).substr(-2));
    format = format.replace("%M", ("0" + date.getMinutes()).substr(-2));
    format = format.replace("%S", ("0" + date.getSeconds()).substr(-2));
    return format;
    }
    
    function log() { Application.console.log(Array.slice(arguments)); }
    
    })();
    Alles anzeigen

    Zwar werden CSS-Dateien geladen allerdings habe ich keinen Button mehr.. dazu nutze ich den CSS Code im neuen Post, da hier nur 20000 Zeichen erlaubt sind

  • Diverse Leisten nach rechts einrücken

    • Boersenfeger
    • 15. Oktober 2023 um 17:03

    CSS
    /*  Symbolleisten anordnen */
    
        #toolbar-menubar {
        appearance: none !important;
        order: -1 !important;
        }
        #tabs-toolbar {
        padding-left: 180px !important;
        order: 1 !important;
        }
        #titlebar > .icons-beside-text {
        padding-left: 200px !important;    
        order: 2 !important;
        }    
        
        #toolbar-menubar,
        #tabs-toolbar > .icons-beside-text {  
        padding-left: 125px !important;
        }
    Alles anzeigen

    Vorhin war erstmal Familie angesagt......

    Das geht bestimmt noch besser... Mein Fokus liegt jetzt aber erstmal auf die Funktionsfähigkeit einiger Scripte, die ich in anderen Threads gleich abfragen werde... :S

  • Diverse Leisten nach rechts einrücken

    • Boersenfeger
    • 15. Oktober 2023 um 14:30

    Vielen lieben Dank, mit deinem Code konnte ich rumprobieren und habe nun eine befriedigende Lösung gefunden!

    :thumbsup:

  • AHT Button nach "oben" (in die Toolbar) verschieben

    • Boersenfeger
    • 13. Oktober 2023 um 18:41

    Ja schade, dann muss ich mich auch umgewöhnen.... aber ich bin ja froh, dass die Erweiterung »weiter lebt«.

    Dafür mal einen großen Dank!

    :thumbsup:

  • Diverse Leisten nach rechts einrücken

    • Boersenfeger
    • 13. Oktober 2023 um 18:37

    Thunderbird 115.3.2

    Windows 10

    Ich habe mit dem CSS aus

    Beitrag

    RE: Reihenfolge der "Kopfleisten" ändern

    […]

    Teste mal das ↓ in der userChrome.css, funktioniert hier ohne Probleme.

    (Quelltext, 10 Zeilen)

    dharkness21
    13. Juli 2023 um 18:51

    Meine Leisten in die gewünschte Reihenfolge gebracht. Nun möchte ich diese aber noch einmitten bzw etwas nach rechts einrücken.

    Wie muss dafür der Code aussehen? :)

    CSS
    /*  Symbolleisten anordnen */
    
        #toolbar-menubar {
        appearance: none !important;
        order: -1 !important;
        }
        #tabs-toolbar {
        order: 1 !important;
        }
        #titlebar > .icons-beside-text {
        order: 2 !important;
        }
    Alles anzeigen
  • Hilfreichste Antworten

Aktuelle Programmversion

  • Thunderbird 156.0.1 veröffentlicht

    Thunder 23. September 2026 um 18:02

Aktuelle 153 ESR-Version

  • Thunderbird 153.3.1 ESR veröffentlicht

    Thunder 19. September 2026 um 11:35

Aktuelle 140 ESR-Version

  • Thunderbird 140.16.0 ESR veröffentlicht

    Thunder 16. September 2026 um 03:58

Keine Werbung

Hier wird auf Werbeanzeigen verzichtet. Vielleicht geben Sie dem Website-Betreiber (Alexander Ihrig - aka "Thunder") stattdessen etwas aus, um diese Seiten auf Dauer finanzieren zu können. Vielen Dank!

Vielen Dank für die Unterstützung!

Kaffee ausgeben für:

Per Paypal unterstützen*

*Weiterleitung zu PayPal.Me

Thunderbird Mail DE
  1. Impressum & Kontakt
  2. Datenschutzerklärung
    1. Einsatz von Cookies
  3. Nutzungsbedingungen
  4. Spendenaufruf für Thunderbird
Hilfe zu dieser Webseite
  • Übersicht der Hilfe zur Webseite
  • Die Suchfunktion benutzen
  • Foren-Benutzerkonto - Erstellen (Neu registrieren)
  • Foren-Thema erstellen und bearbeiten
  • Passwort vergessen - neues Passwort festlegen
Copyright © 2003-2026 Thunderbird Mail DE

Sie befinden sich NICHT auf einer offiziellen Seite der Mozilla Foundation. Mozilla®, mozilla.org®, Firefox®, Thunderbird™, Bugzilla™, Sunbird®, XUL™ und das Thunderbird-Logo sind (neben anderen) eingetragene Markenzeichen der Mozilla Foundation.

Community-Software: WoltLab Suite™