Eine native Desktop-Anwendung (PySide6 / Qt 6) für Stundenzettel aus Jira-Worklogs - der einfach zu bedienende Desktop-Port der Textual-Anwendung jira-timesheet. Mit Liste, Monat und Jahr, Excel- und PDF-Export, Feiertagskalender und Jahres-Prognose.






















Diese Desktop-GUI und die Textual-TUI bauen auf demselben Code auf - dieselbe Jira-Anbindung, Stundenzettel-Logik, manuelle Erfassung und der Excel-/PDF-Export. Gleiche Ergebnisse, gleiche Funktionen. Beide laufen unter Windows, macOS und Linux. Der Unterschied ist nur, wie Du damit arbeitest. Nimm die, die zu Deiner Umgebung oder Deinen Vorlieben passt - oder beide.
Läuft in jedem Terminal, auch über SSH, und braucht keinen Window-Manager - die natürliche Wahl auf einem entfernten Rechner oder einem Linux-Server ohne Oberfläche. Tastaturzentriert, leichtgewichtig, mit Retro-Themes. Sie kann alles, was diese GUI kann. Zur TUI.
Native Fenster, Menüs und Dialoge, durchgehend mit der Maus bedienbar, Spalten per Maus ziehbar, betriebssystemeigene Datei- und Druckdialoge. Die komfortable Wahl, wenn Du am Desktop sitzt und ein Fenster-Programm bevorzugst.
Stundenzettel aus Jira - automatisch geholt, um eigene Zeiten ergänzt, visuell aufbereitet, exportbereit.
Worklogs per REST-API - standardmäßig Jira Cloud (v3, Basic-Auth mit API-Token), per Schalter auch altes Server/Data Center (v2, Bearer-Token).
Bei Jira Cloud findet ein Klick das Budget-Custom-Field automatisch - kein manuelles Nachschlagen der Field-ID nötig.
Filtert beim Tippen nach Ticket-ID oder Beschreibung; die Treffer werden in der Liste hervorgehoben.
Liste mit KW und Wochentag, Monatsansicht mit einer Zeile je Ticket und Soll-Ist-Balken, Jahresansicht mit Prognose, dazu die drei Ticket-Ansichten. Umschalten per Reiter oder Klick.
Neben dem Stundenzettel und neben den drei Ticket-Ansichten zeigt ein Splitter das gewählte Ticket read-only: Status, gebuchte Stunden, Lösungsversionen, zugewiesene Person, Autor, Fälligkeitsdatum, dazu Titel und Beschreibung mit Bildern. Personen sind Links: ein Klick zeigt ihre Tickets unter Mein Team, auch wenn sie nicht auf der Merkliste stehen. Einschaltbar unter Einstellungen, Seite Darstellung.
Alle Dir zugewiesenen Tickets, gruppiert danach, wer am Zug ist: ich bin dran, andere sind dran, Backlog, live und wartet auf Test, Übergabe, abgeschlossen. Dazu Merkmale für Handlungsbedarf, die Liegezeit in Arbeitstagen und drei Diagramme.
Tickets, an denen Du mitgewirkt hast, auch wenn sie jemand anderem gehören: kommentiert, erwähnt, bearbeitet oder bebucht - in einem einstellbaren Zeitfenster.
Derselbe Blick auf den Ticketstand von Kolleginnen und Kollegen, ohne dass die etwas installieren müssen. Gesucht wird über den Namen - eine Person kann mehrere Jira-Konten führen, und viele Konten geben ihre Mailadresse gar nicht heraus. Bewusst ohne Diagramme: Durchsatz je Monat wäre über eine andere Person eine Leistungskennzahl.
Markiert Tickets, deren Status Aktivität behauptet, obwohl es seit der Schwelle weder eine Änderung noch eine gebuchte Stunde gab. Ein bewusst offengehaltenes Dauerticket mit regelmäßigen Buchungen bleibt draußen - eine Ausnahmeliste braucht es nicht.
Das Format wird im Speichern-Dialog gewählt. Excel mit Logo und Unterschriftszeile, PDF Adobe-signierbar, JSON als vollständiger Datensatz, Markdown für Tickets und Mails. Druckvorschau direkt aus der App.
Deutsche Feiertage pro Bundesland. Lücken-Erkennung für fehlende Arbeitstage.
Arbeitszeitvergleich mit Differenz. Jahres-Prognose mit Urlaubstagen und Netto-/Brutto-Umsatzprognose.
Nicht jede Stunde landet als Worklog in Jira. Mit Strg+N lassen sich Zeiten erfassen - Aufwand wahlweise als 3h 30m, 3:30 oder 3,5. Sie liegen in einer eigenen SQLite-Datei, zählen überall mit und sind farblich markiert.
Jede Spalte lässt sich getrennt für Anzeige und Export schalten und im Export frei benennen. In der Liste ziehst Du die Breiten mit der Maus; die Beschreibung füllt den Rest.
Macht aus einem Ticket einen interaktiven Bericht: maßstabsgetreue Zeitachse des Lebenszyklus, Liegezeit je Status - Kalenderzeit gegen echte Arbeitszeit -, die Beteiligten, Kennzahlen wie Flow-Effizienz und erste Reaktion, dazu Befunde mit Beleg. Ergebnis ist eine einzelne HTML-Datei, die offline läuft und sich weitergeben lässt (Strg+Umschalt+A). Auffällig lange Liegezeiten werden rot markiert, verwandte Tickets zeigen ihren Titel, und der fertige Bericht öffnet sich gleich im Browser.
Ersetzt Tickets, Beschreibungen, Autoren und den Jira-Host durch Dummy-Werte - für sichere Screenshots. Die echten Daten bleiben unangetastet.
Skaliere die ganze Oberfläche mit Strg +/- oder Strg + Mausrad. Helles und dunkles Erscheinungsbild mit einstellbarer Akzentfarbe.
Abgeschlossene Monate werden gecacht - die Jahresansicht lädt sofort. Jedes Speichern der Einstellungen legt eine rollierende Sicherung an.
Die Reiter Meine Tickets, Meine Aktivitäten und Mein Team gruppieren nicht nach Statusnamen, sondern nach der Frage wer ist am Zug. Weil jede Jira-Instanz ihre Status anders nennt, wird diese Zuordnung einmal eingetragen: Einstellungen (Strg+,), Seite Tickets. Bleiben die Felder leer, ordnet die Anwendung nach Jiras eigener Statuskategorie zu - das funktioniert sofort, ist aber grob.
| Gruppe | Was dort hingehört | Beispiel |
|---|---|---|
| Ich bin dran | Der Ball liegt bei Dir, es wird gerade gearbeitet | In Bearbeitung, Im Review |
| Backlog | Fertig verfeinert, wartet darauf, gezogen zu werden | Bereit, Eingeplant |
| Andere sind dran | Wartet auf Freigabe durch jemand anderen | Wartet auf Freigabe |
| Live, wartet auf Test | Produktiv gesetzt, muss auf PROD noch getestet werden | Ausgeliefert, Zur Bewertung |
| Übergabe | Status, die Jira als fertig zählt, obwohl das Ticket noch auf die Live-Setzung wartet | Zur Übergabe, Deployment offen |
| Abgeschlossen | Wirklich fertig - reiner Kontrollblick, ohne Handlungsbedarf | Erledigt, Abgeschlossen |
Das Feld Übergabe ist das wichtigste. Ein Status wie "Deployment offen" oder "Zur Übergabe" liegt in Jira in der Kategorie Done. Solche Tickets fallen durch jeden normalen Filter und werden ohne diesen Eintrag gar nicht erst abgefragt - sie fehlen dann vollständig, ohne dass es auffällt.
Gerechnet wird in Arbeitstagen (Mo-Fr, 8-18 Uhr), nicht in Kalendertagen. Ein Ticket, das über ein langes Wochenende liegt, ist nicht drei Tage vernachlässigt worden. Die Schwellen für den Pile of Shame sind eine Setzung, keine Messung: zu klein gewählt trifft der Hinweis alles und sagt dann nichts mehr.
| Taste | Aktion |
|---|---|
F5 | Holt die sichtbare Ansicht und immer auch die Buchungen des Monats |
Strg+F | Suchfeld fokussieren |
Strg+N | Manuelle Zeit erfassen |
Strg+D | Ticket-Details anzeigen |
Strg+Umschalt+A | Ticket-Analyse (interaktiver Bericht als HTML-Datei) |
Strg+T / Strg+Umschalt+T | Nächstes / voriges Theme (wenn die Themes eingeschaltet sind) |
Strg+E | Export - Format (Excel, PDF, JSON, Markdown) wird im Speichern-Dialog gewählt |
Strg+P | Druckvorschau |
Strg+L | Meldungsfenster ein-/ausblenden |
Strg +/- / 0 | Zoom rein / raus / zurücksetzen (auch Strg + Mausrad) |
Strg+, | Einstellungen |
F1 | Info |
Strg+Q | Beenden |
irm https://raw.githubusercontent.com/michaelblaess/jira-timesheet-qt/main/install.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/michaelblaess/jira-timesheet-qt/main/install.sh | bash
Oder das Archiv unter Releases herunterladen. Läuft unter Windows, macOS und Linux · jira-timesheet-qt --demo startet ohne Jira-Zugang mit Beispieldaten.
Das Programm meldet sich mit deinem eigenen Konto an - kein Server, kein Konto beim Hersteller nötig. Drei Angaben: Adresse, Token, Kennung. Zum Ausprobieren genügt --demo, dafür braucht es gar keinen Zugang.
Token unter id.atlassian.com anlegen: Create API token, Name, Ablaufdatum (1 bis 365 Tage). Er wird nur einmal angezeigt. Als Kennung die Mailadresse des Atlassian-Kontos.
Avatar → Profile → Personal access tokens (ab Jira 8.14). Kennung ist der Jira-Benutzername, und der Schalter Jira-Modus muss an sein. Hier ist ScriptRunner Pflicht - die Worklog-Suche läuft über dessen JQL-Funktion.
Das Budget-Feld findet auf Cloud ein Klick selbst. Die Statuslisten der Ticket-Ansichten dürfen leer bleiben - dann sortiert das Programm nach der Statuskategorie, die Jira ohnehin vergibt.
Schritt für Schritt steht das in der README.
Beim ersten Start erscheint ein Hinweis, der bestätigt werden muss - ohne Zustimmung beendet sich das Programm. Das Werkzeug liest über die Jira-REST-API Arbeitszeit-Buchungen aus einem fremden System; je nach Rechtevergabe gehören dazu auch Buchungen anderer Personen. Mit der Bestätigung erklärst Du, das Programm nur gegen dazu berechtigte Jira-Instanzen einzusetzen und nur Daten auszuwerten, zu deren Verarbeitung Du befugt bist. Die Zustimmung wird in ~/.jira-timesheet-qt/disclaimer.json festgehalten.
Die Software wird ohne jede Gewährleistung bereitgestellt ("as is"), wie in der Lizenz geregelt. Die Haftung des Autors (Michael Blaess) für Schäden aus der Nutzung ist im gesetzlich zulässigen Rahmen ausgeschlossen. Die Haftung für Vorsatz und grobe Fahrlässigkeit, für die Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Produkthaftungsrecht bleibt unberührt.
Haftungshinweis: Dieses Projekt ist nicht von Atlassian entwickelt, unterstützt oder autorisiert. "Jira" und "Atlassian" sind eingetragene Markenzeichen von Atlassian Corporation. Dieses Werkzeug nutzt die öffentliche Jira REST API und steht in keiner Verbindung zu Atlassian.
Der Quelltext steht unter der Business Source License 1.1 - offen einsehbar, die kommerzielle Verwertung durch Dritte aber nicht gestattet.
Als Privatperson darfst Du den Quelltext lesen, bauen und benutzen - auch für Deine berufliche Arbeit. Repository klonen, uv sync, starten.
Die gebauten Programmpakete für Windows, macOS und Linux gibt es gegen einen kleinen Betrag. Sie sind an den Erwerber gebunden und dürfen nicht weitergegeben werden.
Jede Version wird vier Jahre nach ihrer Veröffentlichung automatisch zur Mozilla Public License 2.0.