Linux-Fassung (Ubuntu) ergaenzen

Die Fachlogik war bereits plattformneutral — paths.js loeste ~/.config
schon auf, jsonl.js liest ueber os.homedir(). Zu tun waren Autostart,
Build-Targets und drei Linux-Eigenheiten der Oberflaeche.

XWayland erzwingen: Ab Electron 36 waehlt Chromium in einer
Wayland-Sitzung von sich aus Wayland. Dort darf sich ein Fenster weder
selbst positionieren noch dauerhaft in den Vordergrund legen — beides
ist der Kern dieses Widgets. Der Schalter muss auf der Kommandozeile
stehen, weil Ozone die Plattform vor dem Main-Skript festlegt;
appendSwitch() und ELECTRON_OZONE_PLATFORM_HINT kommen beide zu spaet.
Bleibt ein einmaliger Neustart mit --ozone-platform=x11, der sich am
Argument selbst als Abbruchbedingung erkennt. Im AppImage muss dabei
execPath auf APPIMAGE zeigen, sonst laeuft der Nachfolger in den
/tmp-Einhaengepunkt, den der Vorgaenger beim Beenden wegraeumt.

Autostart: app.setLoginItemSettings() gibt es unter Linux nicht. Das
neue Modul autostart.js kapselt die Weiche und schreibt bzw. loescht
dort ~/.config/autostart/claude-live-dashboard.desktop. Der Startbefehl
kommt aus APPIMAGE, falls gesetzt.

Ausserdem: enable-transparent-visuals fuer echte Transparenz, das
32-px-Tray-Symbol in der GNOME-Leiste, plattformabhaengige
Beschriftungen in Tray-Menue und Einstellungsdialog, AppImage- und
deb-Targets, icon.png auf 512 px (electron-builder rechnet daraus die
Linux-Groessen herunter) und start.sh als Gegenstueck zu start.cmd.

Getestet unter GNOME/Wayland: Fenster auf X11 an erwarteter Position,
gemerkte Position wird wiederhergestellt, Tray registriert sich auf
DBus, dump liest die Transkripte, beide Pakete bauen und das AppImage
startet ohne Schalter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 21:52:08 +02:00
co-authored by Claude Opus 4.8
parent 868f31fa9a
commit c1b899ec8b
9 changed files with 294 additions and 23 deletions
+32 -2
View File
@@ -3,7 +3,7 @@
"productName": "Claude Live Dashboard",
"version": "1.0.0",
"private": true,
"description": "Always-on-Top Mini-Dashboard für Claude-Plan-Auslastung unter Windows",
"description": "Always-on-Top Mini-Dashboard für Claude-Plan-Auslastung unter Windows und Linux",
"main": "src/main/index.js",
"scripts": {
"start": "electron .",
@@ -11,10 +11,14 @@
"calibrate": "node src/main/calibrate.js",
"icons": "node tools/make-icon.js",
"dist": "electron-builder --win",
"pack": "electron-builder --win --dir"
"pack": "electron-builder --win --dir",
"dist:linux": "electron-builder --linux",
"pack:linux": "electron-builder --linux --dir"
},
"author": "",
"license": "MIT",
"_homepage": "Platzhalter — nur nötig, weil das .deb-Paket ein Homepage-Feld verlangt.",
"homepage": "https://github.com/exilkieler/claude-live-dashboard",
"devDependencies": {
"electron": "^43.2.0",
"electron-builder": "^25.1.8"
@@ -66,6 +70,32 @@
},
"portable": {
"artifactName": "${productName}-${version}-portable.${ext}"
},
"linux": {
"target": [
{
"target": "AppImage",
"arch": [
"x64"
]
},
{
"target": "deb",
"arch": [
"x64"
]
}
],
"icon": "assets/icon.png",
"executableName": "claude-live-dashboard",
"category": "Utility",
"maintainer": "Stefan <exilkieler@gmail.com>",
"synopsis": "Auslastung des Claude-Abos im Blick",
"description": "Rahmenloses Always-on-Top-Widget, das die Auslastung des Claude-Abos aus den lokalen Claude-Code-Transkripten liest.",
"desktop": {
"StartupWMClass": "claude-live-dashboard"
},
"artifactName": "${productName}-${version}-${arch}.${ext}"
}
}
}