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.
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.