
Tabelleneditor für Linux mit konfigurierbaren Spalten
DEVONthink-Sheets unter Linux Öffnen/Erstellen/Bearbeiten: TSV/CSV-Tabelleneditor für Linux mit konfigurierbaren Spalten
DevonThink, mein macOS-Dokumenten Management System, bietet eine native Unterstützung von “Sheets” an. Dabei handelt es sich um TSV-Dateien mit konfigurierbaren Spalten, Inline-Bearbeitung direkt im DMS und eine Sortierbarkeit der gesamten Tabelle mit Klick auf die Spalte.

Die Spaltenkonfiguration wird in der ersten Zeile der Datei abgespeichert, befindet sich somit in der TSV-Datei:
"Geschäft#string" "Produkt#string" "Preis#real{format:currency,currency:€}" "Wertung#set{values:★|★★|★★★|★★★★|★★★★★}" "Kommentar#string" "URL#url"plaintextUnter Linux habe ich keine Applikation finden können, die damit umgehen kann. Ich habe somit Claude gebeten, mir eine zu schreiben. Anhand von Beispieldateien konnte Claude das Dateiformat erkennen und eine Python-GTK-Applikation für den Gnome-Desktop schreiben. Bereits nach wenigen Iterationen war sie funktional und konnte anschließend erweitert werden um speziellere Funktionen.
Sie erlaubt:
- Öffnen von Dateien, sowie Unterstützung von Gnomes Recent Files
- Automatisches Öffnen der zuletzt geöffneten Datei
- Einbindung als Desktop-Icon und in den Nautilus-Dateimanager
- Erstellung neuer Dateien
- Konvertierung bestehenden DEVONthink-Dateien, die nicht valide Daten enthalten
- Editor für die Spaltenkonfiguration
- Hinzufügen von Spalten zu bestehenden Dateien
- Umsortieren von Spalten
- Editor für die Inhalte von Zeilen
- Löschen einzelner Zeilen
- Anklicken von URLs in URL-Spalten
- Sortieren der gesamten Tabelle per Klick auf den Spaltenkopf
- Speichern und Speichern unter
- Eingabe gemäß der in Gnome konfigurierten Lokalisierungsregeln
- Applikation in Deutsch und Englisch
Funktionen#
Assistent für neue Dateien#
Beim Erstellen einer neuer Datei wird zunächst die Spaltenkonfiguration festgelegt, anschließend wird die leere Datei geöffnet und kann mit Inhalt befüllt werden.

Tabellen öffnen#
Eine meiner vegane-Produkte-Bewertungstabellen mit sechs Spalten. Der Preis befindet sich in einer Spalte für Dezimalnummern mit Euro-Symbol, das Symbol wird also automatisch ergänzt. Die Sterne-Bewertung ist ein Set, sodass aus den Sternen ausgewählt werden kann. Die letzte Spalte ist eine URL-Spalte, die beim Anklicken den Standardbrowser öffnet.

Bearbeitung der Spalten-Konfiguration#

Bearbeitung einer Zeile#
Ein Doppelklick in einer Zeile öffnet den Bearbeitungsdialog.

Download#
Anschließend auspacken und ./install.sh ausführen.
Der Installer möchte einige Abhängigkeiten installieren, kopiert die Python-Datei und legt die Desktop-Konfiguration an.
Abhängigkeiten, die der Installer per apt auflösen möchte:
- python3-gi
- python3-gi-cairo
- gir1.2-gtk-4.0
- gir1.2-adw-1
Warnung: Alpha-Software. Komplett von Claude per Chat-Diskussion erstellt. Absolut keine Qualitätssicherung. Ausgeführt und getestet nur in meiner Umgebung. Installer erwartet apt und (vermutlich) Gnome. Applikation zudem nur getestet unter Gnome. Kein Support durch mich. Wenn bei euch etwas kaputt geht oder gelöscht wird seid ihr selbst Schuld.
Aufruf#
Die Applikation folgt dem Standard-GTK/GIO-Verhalten bei Dateiargumenten:
Kein Argument
tabelleneditorplaintextÖffnet ein neues Fenster und lädt automatisch die zuletzt geöffnete CSV/TSV-Datei.
Eine oder mehrere Dateien
tabelleneditor datei.csv
tabelleneditor datei1.csv datei2.tsvplaintextFür jede übergebene Datei wird ein eigenes Fenster geöffnet. Ist die Datei bereits in einem laufenden Fenster geöffnet, wird dieses in den Vordergrund gebracht statt ein neues Fenster zu öffnen.
Wird die Applikation ein zweites Mal aufgerufen während sie bereits läuft, wird die Anfrage an die laufende Instanz weitergeleitet — es wird kein zweiter Prozess gestartet. Das Verhalten entspricht dann den obigen Fällen.
Unterstützte Dateiformate sind CSV (.csv) und TSV (.tsv).
Kompatibilität zu DevonThink#
- Die Spaltenkonfiguration entspricht weitgehend der von DevonThink, sodass die meisten Dateien direkt kompatibel sein sollten.
- Countries und Languages werden nicht unterstützt. Die Applikation führt einen Fallback auf “String” durch.
Korrektur fehlerhafter Daten:
Beim ersten Laden einer von DevonThink erstellten TSV-Datei können Zellen rot markiert werden, da DevonThink teils Daten schreibt, die nicht zur Spaltenkonfiguration passen. Für diesen Fall kann über das Hauptmenü eine Konvertierungsfunktion ausgeführt werden. Die Datei ist nach Speicherung nicht mehr kompatibel mit DevonThink!
Es finden folgende Konvertierungen statt:
| Spaltentyp | Format | Bedingung | Konvertierung | Beispiel |
|---|---|---|---|---|
int | – | Wert ist Dezimalzahl | Abrunden zur nächsten Ganzzahl | 6.88 → 6 |
int | currency | Wert ist Dezimalzahl | Abrunden zur nächsten Ganzzahl | 6.88 → 6 |
int | percent | Wert ist Dezimalzahl | ×100, dann abrunden zur nächsten Ganzzahl | 0.2 → 20 |
real | percent | Wert < 2.0 | ×100 (Dezimalwert bleibt erhalten) | 0.209 → 20.9 |
date | date | Wert enthält Zeitanteil | Zeitanteil (HH:MM:SS) entfernen | 1978-04-28 00:00:00 → 1978-04-28 |
Hinweis zur Heuristik bei real percent: Die Bedingung „Wert < 2.0” verhindert, dass bereits korrekt konvertierte Werte (z.B. 85.5 für 85,5 %) nochmals multipliziert werden. Werte ≥ 2.0 werden als bereits konvertiert betrachtet und nicht angetastet.
Tastenkombinationen#
| Tastenkombination | Aktion |
|---|---|
| Strg+N | Neues Fenster mit neuer Datei |
| Strg+O | Öffnen-Popover anzeigen |
| Strg+S | Datei speichern |
| Strg+Umschalt+S | Speichern unter… |
| Strg+Umschalt+N | Zeile hinzufügen |
| Strg+W | Fenster schließen |
| Strg+Q | Applikation beenden |
| F10 | Hamburger-Menü öffnen |
| Alt+Eingabe | Bearbeitungsdialog der ausgewählten Zeile |
| Strg+, | Spalten verwalten |
| Strg+X | Ausgewählte Zeile löschen |
| Strg+U | Ausgewählte Zeile duplizieren |
| Strg+? | Tastenkombinationen anzeigen |
| Doppelklick | Zeile bearbeiten |
Spaltenkonfiguration – Referenz#
Spaltentypen und Optionen#
| Typ | Bezeichnung | Optionen | Eingabe-Widget | Darstellung |
|---|---|---|---|---|
text | Text (mehrzeilig) | – | Mehrzeiliges Textfeld | Rohtext, gekürzt |
bool | Ja / Nein | – | Schalter (Ein/Aus) | „Ja” / „Nein” |
int | Ganzzahl | format | Zahlenfeld | Zahl, ggf. mit Suffix |
real | Dezimalzahl | format | Zahlenfeld | Lokalisierte Zahl, ggf. mit Suffix |
string | Einzelzeile | values | Freitextfeld oder Dropdown | Rohtext |
set | Wertemenge | values (Pflicht) | Dropdown | Gewählter Wert |
date | Datum | format (Pflicht) | Datumsfeld | Lokalisiertes Datum |
url | URL | – | URL-Feld mit Browser-Button | Klickbarer Link |
Option: format bei int und real#
| Wert | Bedeutung | Beispiel-Darstellung |
|---|---|---|
| (leer) | Keine Formatierung | 1234 / 1234,56 |
percent | Prozentwert | 42 % |
currency | Währungsbetrag | 19,99 € |
Bei format:currency kann zusätzlich currency gesetzt werden:
| Option | Bedeutung | Beispiel |
|---|---|---|
currency:€ | Währungssymbol | 19,99 € |
currency:$ | Anderes Symbol | 19.99 $ |
Option: format bei date#
| Wert | Bedeutung | Gespeichertes Format | Darstellung (DE) |
|---|---|---|---|
date | Nur Datum | YYYY-MM-DD | 28.03.1977 |
dateandtime | Datum mit Uhrzeit | YYYY-MM-DD HH:MM:SS | 28.03.1977 14:30:00 |
Option: values bei string und set#
Pipe-getrennte Liste erlaubter Werte. Bei set verpflichtend, bei string optional (erzeugt Dropdown statt Freitextfeld).
| Beispiel | Ergebnis |
|---|---|
Gut|Mittel|Schlecht | Dropdown mit drei Einträgen |
Ja|Nein|Vielleicht | Dropdown mit drei Einträgen |
Dateiformat-Syntax (Kopfzeile)#
Spaltenname#typ{option1:wert1,option2:wert2}plaintextBeispiele#
| Kopfzeileneintrag | Bedeutung |
|---|---|
Name#string | Einfaches Textfeld |
Aktiv#bool | Ja/Nein-Schalter |
Preis#real{format:currency,currency:€} | Dezimalzahl in Euro |
Rabatt#int{format:percent} | Ganzzahl als Prozentsatz |
Geburtsdatum#date{format:date} | Datumsfeld (nur Datum) |
Erstellt#date{format:dateandtime} | Datum mit Uhrzeit |
Webseite#url | Klickbare URL |
Kategorie#set{values:A|B|C} | Pflicht-Dropdown |
Notiz#text | Mehrzeiliges Freitextfeld |
Status#string{values:Offen|Erledigt} | Optionales Dropdown |
Hinweise#
- Speicherformat ist immer kanonisch: Dezimalzahl mit Punkt (
1.39), Datum als ISO 8601 (1977-03-28). - Darstellung folgt den Locale-Einstellungen des Systems (Komma als Dezimaltrennzeichen, lokales Datumsformat).
- Eingabe akzeptiert sowohl lokales als auch ISO-Format; beim Speichern wird normalisiert.
Zusammenfassung von Claude#
Session 1 — Grundgerüst Erste lauffähige Version: GTK4/Libadwaita-App mit Gtk.ColumnView, CSV/TSV-Import, einem Format-Deskriptor-System in der Kopfzeile (Name#typ{optionen}), editierbarer Tabelle mit Doppelklick-Dialog und Installations-Skript für Desktop-Integration.
Session 2 — Typsystem und Validierung Vollständiges Typsystem mit 8 Typen (text, bool, int, real, string, set, date, url), Anzeigeformatierung für Währung und Prozent, Datumsfeldbehandlung, Eingabevalidierung, Fehlermeldungen und Dialog für ungespeicherte Änderungen.
Session 3 — Locale und Spaltenmanagement Locale-bewusste Formatierung (Dezimaltrennzeichen, Datumsformat) über eine LocaleConfig-Klasse, Spalten-Manager-Dialog mit Reihenfolge ändern und neue Spalten hinzufügen, Fix des Install-Skripts für $HOME-Variable.
Session 4 — GNOME-UI-Verfeinerungen GNOME-konformer Öffnen-Popover mit Gtk.RecentManager, Suchfeld und ×-Button. Kopfleisten-Umbau: fetter Öffnen-Button, Hamburger-Menü rechts mit Trennlinie. Beim Start automatisch die zuletzt geöffnete Datei laden. Fenstertitel zeigt Dateinamen. App-ID auf de.tabelleneditor.app geändert. URL-Zellen klickbar. Zeilen löschen aus dem Bearbeitungsdialog. Vollständige DE/EN-Internationalisierung. Referenzdokument für Spaltenkonfigurationen erstellt.
Session 5 — Erweiterungen und Korrekturen
- Spalten löschen im Spalten-Manager: roter Papierkorb-Button pro Spaltenzeile, deaktiviert bei letzter verbleibender Spalte
- Tastenkombinationen vollständig implementiert: Strg+N/O/S/Umschalt+S/W/Q, F10, Alt+Eingabe, Strg+,/X/U/?, Strg+Umschalt+N
- Mehrfenster-Unterstützung: Strg+N öffnet neues Fenster, Dateiargumente beim erneuten Aufruf öffnen eigene Fenster, Duplikat-Erkennung verhindert doppeltes Öffnen derselben Datei
- Tastenkombinationen-Dialog (
Adw.ShortcutsDialog) mit drei Sektionen (Datei, Zeilen, Ansicht), aufrufbar per Strg+? und Hamburger-Menü - Zeilen duplizieren und löschen per Tastatur (Strg+U / Strg+X) mit korrekter Behandlung des SortModels
- Zeile hinzufügen per Tastatur (Strg+Umschalt+N), Tooltip des +-Buttons zeigt Kürzel
- Hamburger-Menü mit Tastenkombinationen:
set_accels_for_action()für automatische GNOME-konforme Darstellung - Kontextmenü (Rechtsklick) implementiert und wieder entfernt, da GTK4-Positionierungsprobleme nicht lösbar waren
- Zellvalidierung:
is_cell_valid()prüft jeden Zellwert gegen die Spaltenkonfiguration; ungültige Zellen werden mit@error_coloraus dem aktiven Theme hinterlegt — automatisch beim Öffnen, nach Bearbeitung und nach Konvertierung; unbekannte Spaltentypen werden ignoriert - Fehleranzeige im Bearbeitungsdialog: Felder mit ungültigem Initialwert werden beim Öffnen des Dialogs sofort rot markiert
datetime_fmt-Fix:D_T_FMTdurchD_FMT + " %H:%M:%S"ersetzt, daD_T_FMTsystemabhängig nicht round-trip-fähig ist- Entfernung der
" 00:00:00"-Sonderbehandlung beidate-Feldern im Bearbeitungsdialog — wird künftig durch die Konvertierungsfunktion übernommen - DEVONthink-Konvertierungsdialog: neuer Menüpunkt im Hamburger-Menü; analysiert die Tabelle und zeigt konvertierbare Spalten mit Regelname, Anzahl betroffener Zellen und Vorher/Nachher-Beispiel; nach Anwenden wird die Tabelle vollständig neu gerendert und verbleibende Fehler werden aufgelistet; fünf Konvertierungsregeln:
intplain/currency (floor),int percent(×100 + floor),real percent(×100, Heuristik < 2.0),date(Zeitanteil entfernen) - Verschiedene i18n-Korrekturen für neu hinzugefügte Strings