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:
Reactorcoremeltdown
2026-11-02 12:30:28 +01:00
co-authored by Claude Opus 5.5
parent d314188247
commit ead82dc777
37 changed files with 2301 additions and 108 deletions
+13
View File
@@ -1,3 +1,16 @@
keeporg (0.5.0) unstable; urgency=medium
* KeepOrg is now a system tray application: started without a command (or
from the applications menu) it shows a padlock whose menu signs in
through the browser, lists each database's state, opens the mirror
folder, the web interface, the settings and the log, and starts at
login. The configuration file now holds every setting (device_label,
request_timeout_seconds, ca_file, log_file, notifications), is written
in full on first start, and is reloaded when saved. Only one agent
synchronizes a mirror directory at a time.
-- Azer Abdullaev <github@reactorcoremeltdown.anonaddy.com> Mon, 02 Nov 2026 11:22:07 +0100
keeporg (0.4.0) unstable; urgency=medium
* keeporg db -delete now asks for your account password
+9 -2
View File
@@ -3,6 +3,8 @@ Version: @VERSION@
Section: utils
Priority: optional
Architecture: @ARCH@
Recommends: libnotify-bin
Suggests: keepassxc, zenity | kdialog
Maintainer: tiredsysadmin <rcmd@garage.rcmd.space>
Homepage: https://garage.rcmd.space/keeporg
Description: KeePass database synchronization client
@@ -13,5 +15,10 @@ Description: KeePass database synchronization client
Each save is pushed to the server and changes other people push are applied
locally. The client never opens a database and never sees a master password.
.
A systemd user unit is included: enable it with
`systemctl --user enable --now keeporg`.
KeepOrg starts as a system tray application from the applications menu; its
menu signs in, shows each database's state and opens the settings. The tray
needs a StatusNotifierItem host: KDE, XFCE, Cinnamon and most panels have
one, GNOME needs the AppIndicator extension.
.
Without a desktop, `keeporg run` is the same agent, and a systemd user unit
is included for it: `systemctl --user enable --now keeporg`.