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
@@ -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
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=KeepOrg
|
||||
GenericName=Password database synchronization
|
||||
Comment=Keep shared KeePass databases in step with a KeepOrg server
|
||||
Exec=keeporg tray
|
||||
Icon=keeporg
|
||||
Terminal=false
|
||||
Categories=Utility;Security;
|
||||
Keywords=keepass;kdbx;password;sync;
|
||||
StartupNotify=false
|
||||
@@ -15,10 +15,12 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>keeporg</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>KeepOrg</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>11.0</string>
|
||||
<!-- The agent has no window: it syncs in the background. -->
|
||||
<!-- A menu-bar application: no Dock icon, no main window. -->
|
||||
<key>LSUIElement</key>
|
||||
<true/>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user