Turn the desktop client into a system tray application
Started without a command, keeporg now shows a padlock in the system tray with a menu like midi-webhook's: a status line, the mirror folder, each database with its state, Sync Now, browser sign-in and sign-out, the web interface, the configuration, the log, Start at Login, About and Quit. The commands are unchanged. config.json now carries every client setting (device_label, request_timeout_seconds, ca_file, log_file, notifications), is written in full on first start and is reloaded by the tray when saved. A lock in the mirror directory admits one agent at a time, since the tray, `keeporg run` and a service unit could otherwise race each other. The tray uses fyne.io/systray: pure Go on Linux, BSD and Windows, cgo on macOS only. The server keeps no third-party dependencies. Desktop versions go to 0.5.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
d314188247
commit
ead82dc777
@@ -16,10 +16,17 @@ case $kind in
|
||||
client)
|
||||
pkg=keeporg
|
||||
binary=keeporg
|
||||
mkdir -p "$stage/usr/bin" "$stage/usr/lib/systemd/user"
|
||||
mkdir -p "$stage/usr/bin" "$stage/usr/lib/systemd/user" \
|
||||
"$stage/usr/share/applications" "$stage/usr/share/icons"
|
||||
install -m 0755 "$root/build/linux-$arch/keeporg" "$stage/usr/bin/keeporg"
|
||||
install -m 0644 "$root/packaging/systemd/keeporg.service" \
|
||||
"$stage/usr/lib/systemd/user/keeporg.service"
|
||||
# The tray application: a menu entry, and the icon it and the tray use.
|
||||
install -m 0644 "$root/packaging/linux/keeporg.desktop" \
|
||||
"$stage/usr/share/applications/keeporg.desktop"
|
||||
cp -R "$root/build/icons/hicolor" "$stage/usr/share/icons/hicolor"
|
||||
rm -f "$stage/usr/share/icons/hicolor/.stamp"
|
||||
find "$stage/usr/share/icons" -type d -exec chmod 0755 {} + -o -type f -exec chmod 0644 {} +
|
||||
;;
|
||||
server)
|
||||
pkg=keeporgd
|
||||
|
||||
@@ -21,12 +21,12 @@ app=$stage/KeepOrg.app
|
||||
rm -rf "$stage"
|
||||
mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources"
|
||||
|
||||
# The bundle runs the client itself: started with no command it is the
|
||||
# menu-bar application, and the same binary serves `keeporg` in a terminal.
|
||||
install -m 0755 "$root/build/darwin-$arch/keeporg" "$app/Contents/MacOS/keeporg"
|
||||
sed -e "s/@VERSION@/$version/" -e "s/@APPID@/$appid/" \
|
||||
"$root/packaging/macos/Info.plist.in" > "$app/Contents/Info.plist"
|
||||
install -m 0755 "$root/packaging/macos/launcher.sh" "$app/Contents/MacOS/KeepOrg"
|
||||
sed -e "s/@APPID@/$appid/" "$root/packaging/macos/launch-agent.plist.in" \
|
||||
> "$app/Contents/Resources/$appid.plist"
|
||||
iconutil -c icns -o "$app/Contents/Resources/KeepOrg.icns" "$root/build/icons/KeepOrg.iconset"
|
||||
cp "$root/docs/HANDOVER.md" "$stage/Read me first.md" 2>/dev/null || true
|
||||
|
||||
# The symlink every macOS DMG carries, so installing is one drag.
|
||||
|
||||
Reference in New Issue
Block a user