Table of Contents
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-librarianbinary at~/.cargo/bin/keylib-librarian.pngat~/.local/share/rustpg/keylib-librarian.desktopat~/.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
rustpgSettings 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.