- Thunderbird-Produkt
- Thunderbird für Windows
- Thunderbird-Version
- 157.0.1
- Betriebssystem
- WIN 11
Da ich Zeitgruppen-Topics wie „Heute“, „Gestern“ und „Älter“ schon länger vermisse und mir die native Lösung nie wirklich gefallen hat, habe ich in den letzten Tagen mit Unterstützung von KI ein Add-on entwickelt, das genau das umsetzt, was ich mir für Thunderbird schon lange wünsche.
Zeitgruppen + Themen – farbige Zeitabschnitte in der Themenansicht
Mit Zeitgruppen + Themen erhält die Thunderbird-Themenansicht eine zusätzliche zeitliche Gliederung. Zusammengehörige Themen bleiben vollständig erhalten, werden aber übersichtlich in farbige Zeitabschnitte einsortiert.
Zeitgruppen
- Heute
- Gestern
- Letzte 7 Tage
- Letzte 14 Tage
- Älter
Das bietet das Add-on
- Farbige Überschriften oberhalb der jeweiligen Zeitabschnitte
- Kompakte Navigationsleiste zum direkten Anspringen der Gruppen
- Automatisch angepasste Beschriftungen bei schmaler Nachrichtenliste
- Auf- und Zuklappen vollständiger Zeitgruppen
- Anzeige der Nachrichtenanzahl bei geschlossenen Gruppen
- Automatischer Sprung zur nächsten vorhandenen Gruppe, wenn ein Zeitraum leer ist
- Frei wählbare Farben für alle fünf Zeitgruppen
- Wahlweise eine einheitlich graue Darstellung
- Ein- und Ausschalten über die Thunderbird-Symbolleiste
- Deutsche und englische Benutzeroberfläche
Die vorhandenen Thunderbird-Themen werden nicht aufgelöst. Einzelne Themen können weiterhin wie gewohnt geöffnet und geschlossen werden.
Das Add-on verändert, verschiebt oder löscht keine Nachrichten.
Voraussetzungen
Diese Version ist ausschließlich für Thunderbird 158.x vorgesehen.
In der Nachrichtenliste werden folgende Einstellungen benötigt:
- Kartenansicht
- Sortierung nach Datum
- Gruppierung nach Thema
Einstellungen
Die Farben lassen sich in der Thunderbird-Add-on-Verwaltung über den Schraubenschlüssel bei „Zeitgruppen + Themen“ ändern.
Alle Einstellungen werden ausschließlich lokal gespeichert.
Download
Eine ausführliche Installationsanleitung und das Add-on befinden sich im Anhang.
Die XPI-Datei wird nicht entpackt, sondern über „Add-ons und Themes → Zahnrad → Add-on aus Datei installieren…“ ausgewählt.
SHA-256 der XPI-Datei:
Hinweis zur Veröffentlichung
Für die direkte Einbindung in Thunderbirds native Nachrichtenliste benötigt das Add-on eine Experiment-API. Deshalb wird diese Version derzeit direkt und nicht über das offizielle Thunderbird-Add-on-Portal angeboten.
Rückmeldungen und Fehlerberichte sind willkommen. Bitte dabei möglichst die genaue Thunderbird-Version, das verwendete Betriebssystem und – falls sinnvoll – einen Screenshot angeben.
----------------------------------------------------------------------------------------------------------
Zeitgruppen + Themen – Funktionsweise und technische Umsetzung
Dieser Beitrag ergänzt die allgemeine Vorstellung und beschreibt ausschließlich die technische Umsetzung der Erweiterung.
Einbindung in Thunderbird
Die normalen WebExtension-Schnittstellen erlauben es nicht, eigene Abschnittszeilen in Thunderbirds virtuelle Themenliste einzufügen. Deshalb stellt das Add-on über eine Experiment-API eine eigene interne Schnittstelle bereit.
Beim Öffnen eines Thunderbird-Hauptfensters wird die Ansicht „about:3pane“ erkannt. Dort bindet die Erweiterung ihre Navigation, Abschnittsüberschriften und ergänzenden Darstellungsregeln in die vorhandene Nachrichtenliste ein. Die eigentliche Thunderbird-Datenbankansicht bleibt dabei die Datenquelle.
Ermittlung des Zeitabschnitts
Ausgangspunkt ist jeweils eine oberste Themenzeile. Das Add-on liest nicht nur deren eigenes Datum, sondern ermittelt das neueste Nachrichtendatum des gesamten Themas. Dieser Zeitwert wird relativ zum lokalen Tagesbeginn einem internen Abschnitt zugeordnet.
Damit erfolgt die Zuordnung immer für das vollständige Thema. Untergeordnete Nachrichten werden nicht unabhängig voneinander klassifiziert.
Ansichts-Fassade und Zeilenzuordnung
Zwischen Thunderbirds ursprünglicher Datenbankansicht und der sichtbaren Liste liegt eine Proxy-Fassade. Sie führt zwei Zuordnungen:
- von einer sichtbaren Zeilennummer zur ursprünglichen Thunderbird-Zeile,
- von einer ursprünglichen Thunderbird-Zeile zurück zur sichtbaren Position.
Methoden, die einen Zeilenindex erwarten, werden über diese Zuordnung an die native Ansicht weitergereicht. Auch Auswahlbereiche und der aktuelle Zeilenindex werden synchronisiert. Thunderbird führt dadurch seine üblichen Nachrichtenbefehle weiterhin auf den ursprünglichen Datensätzen aus.
Technik des Auf- und Zuklappens
Beim Schließen eines Zeitabschnitts baut die Fassade ihre sichtbare Indexliste neu auf. Von diesem Abschnitt bleibt nur eine Ankerzeile für die Überschrift erhalten; die übrigen zugeordneten Themenzeilen werden aus der sichtbaren Abbildung entfernt. Beim Öffnen werden sie wieder aus der unveränderten Quelldarstellung übernommen.
Die angezeigte Anzahl entsteht beim Aufbau dieser Indexliste. Dazu werden die Nachrichtenmengen aller Themen des betreffenden Abschnitts addiert.
Zusätzlicher Platz für Überschriften
Thunderbird berechnet die Positionen seiner virtuellen Liste mit einer festen nativen Zeilenhöhe. Die zusätzlichen Abschnittsüberschriften benötigen jedoch eigenen Platz. Das Add-on führt deshalb für jede sichtbare Zeile einen zusätzlichen Höhenversatz und einen korrigierten unteren Abstandshalter.
Die Nachrichtenkarte der ersten Zeile eines Abschnitts wird innerhalb ihrer Zeile nach unten versetzt. Die Abschnittsüberschrift selbst liegt in dem dadurch freigehaltenen Bereich und nicht innerhalb der Nachrichtenkarte.
Virtuelle Zeilen und das Listenende
Thunderbird erzeugt nur die Zeilen, die für den sichtbaren Ausschnitt benötigt werden. Eine weit unten liegende letzte Gruppe könnte deshalb außerhalb des nativen Renderpuffers landen.
Die Fassade ergänzt am Ende unsichtbare virtuelle Pufferzeilen. Ihre Anzahl richtet sich nach der Höhe der Nachrichtenliste und der nativen Zeilenhöhe. Dadurch steht für jeden Abschnitt derselbe Scroll- und Ankerbereich zur Verfügung.
Sprungposition und Scroll-Stabilisierung
Beim Anspringen wird die Zielposition aus dem sichtbaren Index, der nativen Zeilenhöhe und den bis dahin eingefügten Überschriftenabständen berechnet.
Beim Auf- oder Zuklappen erneuert Thunderbird seinen virtuellen Zeilenpuffer zeitversetzt. Während mehrerer aufeinanderfolgender Animationsbilder vergleicht das Add-on deshalb die tatsächliche Bannerposition mit der gewünschten Position. Eine Abweichung wird unmittelbar ausgeglichen. So bleibt der gewählte Abschnitt trotz des Neuaufbaus am gleichen Punkt im sichtbaren Bereich.
Breitenabhängige Beschriftungen
Ein ResizeObserver meldet Änderungen an der Navigationsbreite. Die Erweiterung misst die benötigten Texte mit der tatsächlich aktiven Schriftart und Schriftgröße. Daraus werden mehrere Mindestbreiten berechnet und als Kompaktstufe auf die Navigationsleiste angewendet.
Die Entscheidung basiert somit nicht auf einer fest angenommenen Fensterbreite, sondern auf dem real verfügbaren Platz und der aktuellen Thunderbird-Darstellung.
Farbberechnung und Speicherung
Die gewählte Grundfarbe eines Abschnitts wird mit hellen und dunklen Zielwerten gemischt. Daraus entstehen zusammenpassende Werte für Hintergrund, Rahmen, Text und Klickbestätigung.
Der Aktivierungszustand, die Grundfarben und die Grau-Option werden mit der WebExtension-Berechtigung „storage“ lokal abgelegt. Änderungen werden vom Hintergrundskript erkannt und ohne erneutes Laden an bereits geöffnete Thunderbird-Fenster weitergegeben.
Lokalisierung
Die Texte liegen in getrennten Thunderbird-Lokalisierungsdateien. Das Hintergrundskript liest die zur aktiven Thunderbird-Oberflächensprache passenden Einträge und übergibt sie beim Start an die interne Schnittstelle. Ist keine passende Übersetzung vorhanden, verwendet Thunderbird die im Manifest festgelegte englische Standardsprache.
Versionsbindung
Die Experiment-API verwendet interne Klassen und Ansichtsobjekte von Thunderbird 158. Diese gehören nicht zur langfristig stabilen WebExtension-API und können sich mit einer neuen Thunderbird-Hauptversion ändern.
Im Manifest ist die Kompatibilität deshalb absichtlich auf 158.0 bis 158.x begrenzt. Vor einer Freigabe für eine spätere Hauptversion müssen die verwendeten internen Schnittstellen und das Verhalten der virtuellen Nachrichtenliste erneut geprüft werden.
----------------------------------------------------------------------------------------------------------
Zeitgruppen + Themen – Funktionsweise und technische Umsetzung
Dieser Beitrag ergänzt die allgemeine Vorstellung und beschreibt ausschließlich die technische Umsetzung der Erweiterung.
Einbindung in Thunderbird
Die normalen WebExtension-Schnittstellen erlauben es nicht, eigene Abschnittszeilen in Thunderbirds virtuelle Themenliste einzufügen. Deshalb verwendet das Add-on eine Experiment-API, die auf interne Funktionen der Nachrichtenansicht zugreifen kann.
Beim Öffnen eines Thunderbird-Hauptfensters wird die Ansicht „about:3pane“ erkannt. Dort bindet die Erweiterung ihre Navigationsleiste, die Abschnittsüberschriften und die erforderlichen Darstellungsregeln in die vorhandene Nachrichtenliste ein.
Die ursprüngliche Thunderbird-Datenbankansicht bleibt dabei unverändert und weiterhin die alleinige Quelle für Nachrichten, Themen und Befehle.
Ermittlung der Zeitabschnitte
Ausgangspunkt ist jeweils eine oberste Themenzeile. Das Add-on liest nicht nur deren eigenes Datum, sondern ermittelt das neueste Nachrichtendatum des vollständigen Themas.
Dieser Zeitwert wird relativ zum lokalen Tagesbeginn einer der folgenden Gruppen zugeordnet:
- Heute
- Gestern
- Letzte 7 Tage
- Letzte 14 Tage
- Älter
Die Zuordnung erfolgt dadurch immer für das vollständige Thema. Untergeordnete Nachrichten werden nicht unabhängig voneinander in verschiedene Zeitabschnitte einsortiert.
Ansichts-Fassade und Zeilenzuordnung
Zwischen Thunderbirds ursprünglicher Datenbankansicht und der sichtbaren Nachrichtenliste liegt eine Proxy-Fassade.
Sie verwaltet zwei Zuordnungen:
- Von einer sichtbaren Zeilennummer zur ursprünglichen Thunderbird-Zeile
- Von einer ursprünglichen Thunderbird-Zeile zurück zur sichtbaren Position
Methoden, die einen Zeilenindex erwarten, werden über diese Zuordnung an die native Ansicht weitergereicht. Auch Auswahlbereiche und der aktuelle Zeilenindex werden synchronisiert.
Thunderbird führt dadurch seine üblichen Nachrichtenbefehle weiterhin auf den ursprünglichen Datensätzen aus.
Direkte Übergabe der Ansicht
Seit Version 2.1.0 wird die Proxy-Fassade nicht mehr nachträglich über eine bereits sichtbare Nachrichtenansicht gelegt.
Stattdessen wird sie direkt in dem Moment erzeugt, in dem Thunderbird eine neue Datenbankansicht an die Themenliste übergibt. Thunderbird erhält somit von Anfang an die fertige Zeitgruppenansicht.
Die native Datenbankansicht bleibt intern erhalten, wird aber nicht kurzzeitig ungefiltert dargestellt. Dadurch entstehen bei einem echten Ordnerwechsel keine sichtbare Zwischenansicht und kein nachträglicher Austausch der dargestellten Liste.
Technik des Auf- und Zuklappens
Beim Schließen eines Zeitabschnitts baut die Fassade ihre sichtbare Indexliste neu auf.
Von dem geschlossenen Abschnitt bleibt eine Ankerzeile für die Überschrift erhalten. Die übrigen zugeordneten Themenzeilen werden aus der sichtbaren Abbildung entfernt. Beim erneuten Öffnen werden sie wieder aus der unveränderten Quelldarstellung übernommen.
Die angezeigte Nachrichtenanzahl wird beim Aufbau der Indexliste ermittelt. Dazu werden die Nachrichtenmengen aller Themen des betreffenden Zeitabschnitts addiert.
Andere geöffnete oder geschlossene Zeitgruppen bleiben von diesem Vorgang unberührt.
Verhalten beim Auf- und Zuklappen von Ordnern
Thunderbird 158 löst beim Zuklappen des aktuell ausgewählten Ordners erneut ein Auswahlereignis aus, obwohl sich der ausgewählte Ordner nicht geändert hat.
Ohne zusätzliche Prüfung würde Thunderbird daraufhin die vollständige Nachrichtenansicht schließen und erneut aufbauen. Das kann zu einem kurzen Aufblitzen der Nachrichtenliste und zum Verlust der aktuellen Scrollposition führen.
Das Add-on prüft deshalb vor dem Zuklappen, ob sich die Ordnerauswahl tatsächlich verändert.
Bleibt derselbe Ordner ausgewählt, wird ausschließlich das überflüssige Auswahlereignis unterdrückt. Die Nachrichtenansicht wird nicht neu geladen und die vorhandene Scrollposition bleibt unverändert.
Wird dagegen ein übergeordneter Ordner geschlossen, während ein darin liegender Unterordner ausgewählt ist, handelt es sich um eine echte Auswahländerung. Diese wird nicht blockiert und von Thunderbird normal verarbeitet.
Für diesen Vorgang werden keine Snapshots, verzögerten Ersatzklicks oder nachträglichen Scrollkorrekturen verwendet.
Zusätzlicher Platz für Überschriften
Thunderbird berechnet die Positionen seiner virtuellen Liste mit einer festen nativen Zeilenhöhe. Die zusätzlichen Abschnittsüberschriften benötigen jedoch eigenen Platz.
Das Add-on berechnet deshalb für jede sichtbare Zeile einen zusätzlichen Höhenversatz und passt den unteren Abstandshalter der virtuellen Liste entsprechend an.
Die Nachrichtenkarte der ersten Zeile eines Zeitabschnitts wird innerhalb ihrer Zeile nach unten versetzt. Die Abschnittsüberschrift liegt in dem dadurch freigehaltenen Bereich und nicht innerhalb der Nachrichtenkarte.
Virtuelle Zeilen und das Listenende
Thunderbird erzeugt nur die Zeilen, die für den aktuell sichtbaren Bereich und dessen Renderpuffer benötigt werden.
Eine weit unten liegende letzte Zeitgruppe könnte dadurch außerhalb des Bereichs liegen, den Thunderbird für die virtuelle Liste berechnet.
Die Fassade ergänzt deshalb am Listenende unsichtbare virtuelle Pufferzeilen. Ihre Anzahl richtet sich nach der Höhe der Nachrichtenliste und der nativen Zeilenhöhe.
Dadurch steht für jede Zeitgruppe derselbe Scroll- und Ankerbereich zur Verfügung. Auch die letzte Gruppe lässt sich vollständig anzeigen, schließen, öffnen und über die Navigationsleiste anspringen.
Sprungpositionen
Beim Anklicken eines Navigationsfeldes wird die Zielposition aus folgenden Werten berechnet:
- Dem sichtbaren Zeilenindex
- Der nativen Thunderbird-Zeilenhöhe
- Den bis dahin eingefügten Abständen der Abschnittsüberschriften
Ist die gewählte Zeitgruppe leer, sucht das Add-on in zeitlicher Reihenfolge nach der nächsten vorhandenen Gruppe und springt zu deren Überschrift.
Nach dem Aufbau des virtuellen Listenbereichs wird die tatsächliche Position der Zielüberschrift mit der berechneten Position abgeglichen. Dadurch bleibt die Überschrift auch bei dynamisch erzeugten Zeilen genau am vorgesehenen Punkt.
Breitenabhängige Beschriftungen
Ein ResizeObserver erkennt Änderungen an der verfügbaren Breite der Navigationsleiste.
Die Erweiterung misst die benötigten Beschriftungen mit der tatsächlich verwendeten Schriftart und Schriftgröße. Daraus werden mehrere Mindestbreiten und passende Kompaktstufen berechnet.
Die Beschriftungen werden dadurch nicht anhand einer fest angenommenen Fensterbreite gekürzt, sondern entsprechend dem tatsächlich verfügbaren Platz innerhalb der Thunderbird-Oberfläche.
Farbberechnung und Speicherung
Die gewählte Grundfarbe eines Zeitabschnitts wird mit hellen und dunklen Zielwerten gemischt. Daraus entstehen aufeinander abgestimmte Werte für:
- Hintergrund
- Rahmen
- Text
- Klickbestätigung
Der Aktivierungszustand, die Grundfarben und die Option für eine einheitlich graue Darstellung werden über die WebExtension-Berechtigung „storage“ lokal gespeichert.
Änderungen werden vom Hintergrundskript erkannt und ohne erneutes Laden an bereits geöffnete Thunderbird-Fenster weitergegeben.
Lokalisierung
Die Texte liegen in getrennten Thunderbird-Lokalisierungsdateien.
Das Hintergrundskript liest die zur aktiven Thunderbird-Oberflächensprache passenden Einträge und übergibt sie beim Start an die interne Schnittstelle.
Ist keine passende Übersetzung vorhanden, wird die im Manifest festgelegte englische Standardsprache verwendet.
Versionsbindung
Die Experiment-API verwendet interne Klassen und Ansichtsobjekte von Thunderbird 158. Diese gehören nicht zur langfristig stabilen WebExtension-API und können sich mit einer späteren Thunderbird-Hauptversion ändern.
Im Manifest ist die Kompatibilität deshalb absichtlich auf Thunderbird 158.0 bis 158.x begrenzt.
Vor einer Freigabe für eine spätere Hauptversion müssen die verwendeten internen Schnittstellen und das Verhalten der virtuellen Nachrichtenliste erneut geprüft werden.