threadpanic/rustpg
1
0
Fork
You've already forked rustpg
0
1 Key_Librarian
Bert van der Weerd edited this page 2026年05月12日 12:02:22 +02:00

Key Librarian

keylib-librarian is a standalone GUI binary for browsing and managing key_material.rpg independently of the main rustpg window.

Current status: Hello World stub. The window opens, renders a heading and a Close button, and exits. All key-management features are planned for future iterations.


Running

cargo run -p keylib-librarian
# or after install:
keylib-librarian

The window is fixed at ×ばつ200 and non-resizable until real content is added.


Building

keylib-librarian is a workspace member — it builds with everything else:

cargo build --workspace # Linux
make windows # includes keylib-librarian.exe
make windows-zip # included in the ZIP

The Windows EXE embeds assets/keylib-librarian.ico at compile time via build.rs + winresource, identical to the rustpg pattern. The icon uses a teal gradient background (vs. the blue of rustpg) with the same yellow key — visually related but distinct.


Installing on Linux

make install # installs binary + .desktop + icon to ~/.local/
make sys-install # installs to /usr/local/ (system-wide)

This places:

  • keylib-librarian binary at ~/.cargo/bin/
  • keylib-librarian.png at ~/.local/share/rustpg/
  • keylib-librarian.desktop at ~/.local/share/applications/

The .desktop entry registers the app in application menus (Categories=Utility;Security;).


Icon

Two scripts generate the icon assets:

Script Output
assets/gen_icon_rustpg.py rustpg.png + rustpg.ico (blue background)
assets/gen_icon_librarian.py keylib-librarian.png + keylib-librarian.ico (teal background)

Both require Pillow (pip install pillow). Run from the workspace root:

python3 assets/gen_icon_librarian.py

Crate structure

crates/keylib-librarian/
 src/main.rs ← egui App (Librarian struct)
 build.rs ← embeds .ico on Windows
 Cargo.toml

Dependencies: eframe, egui, keystore, keystore-rpg, keystore-gnupg, keylib-gui.

The keylib-gui crate (currently a stub) will eventually supply reusable egui dialogs that keylib-librarian assembles into a full window.


Planned features

  • Browse all identities in key_material.rpg
  • Add / generate / remove identities
  • Import and export (public and full)
  • Revoke identities and import revocation certs
  • Change the master password
  • Switch between RPG and GnuPG store (mirrors the rustpg Settings toggle)
  • Backup and restore keyring

The separation from rustpg means the librarian can be opened by a user who only needs key management and has no file to encrypt or decrypt.