Intro

Panorama is a personal information manager.

Quick Start

Since panorama is still in active development, install from git master with

cargo install panorama --git https://github.com/iptq/panorama

Then, create a config file. The format along with examples can be found in this page of the manual.

That's it! Run panorama forever.

Config

Configuration is done by editing $XDG_CONFIG_HOME/panorama/panorama.toml. This is usually found somewhere like $HOME/.config/panorama/panorama.toml It follows the TOML file format, and the data structures are defined in code at src/config.rs.

Example configuration:

version = "0.1"

mail_dir = "~/.local/share/panorama/mail"
db_path = "~/.local/share/panorama/panorama.db"

[[mail]]
imap.server = "mail.example.com"
imap.port = 143
imap.tls = "starttls"
imap.auth = "plain"
imap.username = "foo"
imap.password = "bar"

As one of the primary goals of panorama, the application should automatically detect changes made to this file after it has started, and automatically re-establish the connections required. As a result, there's no UI for editing the configuration within the application itself.

Code Structure

The entire application is running on several async threads in a tokio runtime:

Each of these communicates with the others via pairs of unbounded async channels.

Mail

The mail thread is in charge of communicating with mail servers. It keeps a single connection alive to each server even if the UI thread has multiple mail views open.

UI

The UI thread manages everything user-facing. It runs a terminal UI using the tui crate. There's a tiny windowing system built in that allows for tiling windows, split horizontally or vertically.

VM

The VM runs the scripting language that can be used inside the application.