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
+38 -12
View File
@@ -1,27 +1,53 @@
KeepOrg for Windows
===================
keeporg.exe is the synchronization agent and the administration command.
keeporg-tray.exe is the tray application. keeporg.exe is the same program for a
command prompt: administration commands, and the agent without a tray.
First run
---------
1. Copy both files to %LOCALAPPDATA%\Programs\KeepOrg and start keeporg-tray.exe.
A padlock appears in the notification area.
2. Choose Open Config from its menu, set "server_url" to your server, for
example "https://keeporg.example.com", and save.
3. Choose Sign In... and approve the code in the browser that opens, with
your password or single sign-on.
Your databases appear in %UserProfile%\KeepOrg. Open them with KeePass,
KeePassXC or any compatible application: every save is pushed to the
server, and changes made by other people are applied to the files. The
Databases submenu shows each one's state and opens it.
Tick Start at Login to start KeepOrg when you sign in to Windows.
Settings
--------
%AppData%\keeporg\config.json holds every setting, and the tray applies an
edit as soon as it is saved:
server_url the server, as a browser sees it
device_label this computer's name in the server's session list
mirror_dir where the .kdbx files are kept
poll_seconds how often local saves are looked for
request_timeout_seconds the limit on one request to the server
ca_file a PEM bundle, for a server behind a private CA
log_file the log; empty means keeporg.log beside config.json
notifications desktop notifications (not shown on Windows yet)
username, token written by signing in
Without the tray
----------------
keeporg.exe login -server https://keeporg.example.com -user you
keeporg.exe run
`login` stores its configuration in
%AppData%\keeporg\config.json and mirrors your databases into
%UserProfile%\KeepOrg by default. Pass -dir to choose another directory.
Open the .kdbx files in that directory with KeePass, KeePassXC or any
compatible application. Every save is pushed to the server, and changes made
by other people are applied to the files.
Keeping it running
------------------
Import keeporg-task.xml into Task Scheduler to start the agent at logon:
keeporg-task.xml starts `keeporg.exe run` at logon through Task Scheduler,
for a machine where nobody uses the tray:
schtasks /create /tn KeepOrg /xml keeporg-task.xml
Only one agent synchronizes a directory at a time; a second one reports
that the first is running and stops.
Conflicts
---------
If someone else saved first, your save is kept beside the file as