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>
102 lines
2.7 KiB
JSON
102 lines
2.7 KiB
JSON
{
|
|
"name": "claude-live-dashboard",
|
|
"productName": "Claude Live Dashboard",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"description": "Always-on-Top Mini-Dashboard für Claude-Plan-Auslastung unter Windows und Linux",
|
|
"main": "src/main/index.js",
|
|
"scripts": {
|
|
"start": "electron .",
|
|
"dump": "node src/main/dump.js",
|
|
"calibrate": "node src/main/calibrate.js",
|
|
"icons": "node tools/make-icon.js",
|
|
"dist": "electron-builder --win",
|
|
"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"
|
|
},
|
|
"build": {
|
|
"appId": "de.local.claude-live-dashboard",
|
|
"productName": "Claude Live Dashboard",
|
|
"copyright": "Copyright © 2026",
|
|
"directories": {
|
|
"output": "release",
|
|
"buildResources": "assets"
|
|
},
|
|
"files": [
|
|
"src/**/*",
|
|
"assets/**/*",
|
|
"config.json",
|
|
"!**/*.map"
|
|
],
|
|
"win": {
|
|
"target": [
|
|
{
|
|
"target": "nsis",
|
|
"arch": [
|
|
"x64"
|
|
]
|
|
},
|
|
{
|
|
"target": "portable",
|
|
"arch": [
|
|
"x64"
|
|
]
|
|
}
|
|
],
|
|
"icon": "assets/icon.png",
|
|
"artifactName": "${productName}-${version}-${arch}.${ext}"
|
|
},
|
|
"nsis": {
|
|
"oneClick": false,
|
|
"perMachine": false,
|
|
"allowToChangeInstallationDirectory": true,
|
|
"createDesktopShortcut": true,
|
|
"createStartMenuShortcut": true,
|
|
"shortcutName": "Claude Live Dashboard",
|
|
"installerLanguages": [
|
|
"de_DE"
|
|
],
|
|
"language": "1031",
|
|
"deleteAppDataOnUninstall": false
|
|
},
|
|
"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}"
|
|
}
|
|
}
|
|
}
|