Terminal UI for the Sortal contacts manager
OCaml 95.3%
Dune 1.5%
Other 3.2%
3 2 0

Clone this repository

https://tangled.org/anil.recoil.org/sortal-term https://tangled.org/did:plc:nhyitepp3u4u6fcfboegzcjw/sortal-term
git@git.recoil.org:anil.recoil.org/sortal-term git@git.recoil.org:did:plc:nhyitepp3u4u6fcfboegzcjw/sortal-term

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Sortal-Term - Terminal UI for Sortal Contacts#

A Bonsai_term-based terminal user interface for browsing and editing Sortal contact metadata.

Status: This needs significant refactoring before it's ready for use.

Features#

  • Interactive browsing: Navigate through your contact list with keyboard controls
  • Search functionality: Quickly find contacts by name or handle
  • Contact viewing: View detailed contact information including emails, organizations, services, and URLs
  • Contact editing: Add, update, and delete contact metadata
  • Temporal support: View and edit time-bounded information (emails, organizations with date ranges)
  • Scrollable views: Handle long lists and detailed information with smooth scrolling

Installation#

opam install sortal-term

Usage#

Launch the terminal UI:

sortal-term

Keyboard Controls#

  • ↑/k - Move up
  • ↓/j - Move down
  • Enter - Select contact / Edit field
  • / - Search contacts
  • n - New contact
  • e - Edit current contact
  • d - Delete current contact
  • q - Quit

Building from Source#

# Clone the repository
git clone https://tangled.org/@anil.recoil.org/sortal-term.git
cd sortal-term

# Install dependencies
opam install . --deps-only

# Build
dune build

# Run
dune exec sortal-term

Architecture#

This application uses:

  • Bonsai: Incremental UI framework for managing application state
  • Bonsai_term: Terminal rendering and event handling
  • Bonsai_term_components: Pre-built UI components (scroller, textbox, border_box)
  • Sortal: Contact metadata storage with XDG compliance and git versioning

License#

ISC License - see LICENSE.md for details.