TUI-Journal is a terminal-based application written in Rust that allows you to write and manage your journal/notes from within the comfort of your terminal. It provides a simple and efficient interface for creating and organizing your thoughts, ideas, and reflections. TUI-Journal supports two different local back-ends: a plain text back-end in JSON format and a database back-end using SQLite.
- Write and manage journal/notes entries from the terminal.
- Store your entries in either a plain text file using the JSON format or a SQLite database.
- Intuitive, responsive and user-friendly text-based user interface (TUI).
- Create, edit, and delete entries easily.
- Edit journal content with the built-in editor or use your favourite terminal text editor from withing the app.
- Add custom tags to the journals and use them in the built-in filter.
- Fuzzy Finder: Locate your desired journal with lightning-fast speed.
- Search functions for journals title and content in the built-in filter.
- Control many journals at once via the multi-select mode
- Keybindings is a combination of VIM and Emacs motions (VIM for navigation and Emacs for editing texts in edit-mode).
- Export and Import journals between different back-end files.
- Export the current journal's content to a predefined export path or the current directory
- See the keybindings from inside the app
- Cross-platform compatibility (Windows, macOS, Linux, NetBSD).
- Plain text JSON back-end.
- Database back-end using SQLite.
- RESTful back-end server with a client in the app.
- Edit journals content with external text editor from withing the app.
- Filter & Search functionalities.
- Customize themes and keybindings.
- Load entries as chunks for better performance.
Ensure you have Rust installed on your system.
Make sure the OpenSSL development package is installed on your system.
- Ubuntu/Debian:
sudo apt install -y libssl-dev
- Fedora:
sudo dnf install openssl-devel
To install TUI-Journal with default features (SQLite and JSON), you can use cargo
to install directly from crates.io:
cargo install tui-journal
To use the current nightly version, you can install it directly from the GitHub repository
cargo install --git https://github.com/ammarabouzor/tui-journal
You can choose to install TUI-Journal with specific features enabled or disabled by customizing the cargo installation command. To install TUI-Journal with only the JSON back-end feature, use the following command:
cargo install tui-journal --no-default-features --features json
To install TUI-Journal with only the SQLite back-end feature, use the following command:
cargo install tui-journal --no-default-features --features sqlite
On NetBSD a pre-compiled binary built with default features is available from the official repositories. To install it, simply run:
pkgin install tui-journal
Once installed, you can run TUI-Journal by typing tjournal
in your terminal:
$ tjournal
To view the available arguments and commands, you can use the --help
or -h
flag:
$ tjournal --help
Usage: tjournal [OPTIONS] [COMMAND]
Commands:
print-config Print the current settings including the paths for the backend files [aliases: pc]
import-journals Import journals from the given transfer JSON file to the current back-end file [aliases: imj]
help Print this message or the help of the given subcommand(s)
Options:
-j, --json-file-path <FILE PATH> Sets the entries Json file path and starts using it
-s, --sqlite-file-path <FILE PATH> Sets the entries sqlite file path and starts using it
-b, --backend-type <BACKEND_TYPE> Sets the backend type and starts using it [possible values: json, sqlite]
-w, --write-config write the current settings to config file (this will rewrite the whole config file)
-v, --verbose... Increases logging verbosity each use for up to 3 times
-l, --log <FILE PATH> Specifies a file to use for logging
(default file: <cache_dir>/tui-journal/tui-journal.log)
-h, --help Print help
-V, --version Print version
The configuration for TUI-Journal can be found in the config.toml
file located in the configuration folder within the TUI-Journal directory.
Here is a sample of the settings in the config.toml
file:
backend_type = "Sqlite" # available options: Json, Sqlite. Default value: Sqlite.
# Set the external terminal editor to use from withing the app.
# If the value isn't set the app will try to retrieve the editor from git global configurations then It'll try with the environment varialbes VISUAL, EDITOR then it'll fallback to vi.
external_editor = "nvim"
[export]
default_path = "<Absolute_path_to_export_directory>" # Optional default path to export multiple journals or a single journal's content. Falls back to the current directory if not specified.
show_confirmation = true # Show confirmation after successful export.
[json_backend]
file_path = "<Documents-folder>/tui-journal/entries.json"
[sqlite_backend]
file_path = "<Documents-folder>/tui-journal/entries.db"
For detailed information about the TUI Journal app, including usage guide, keymaps, and configuration details, please refer to the Wiki.
TUI-Journal would not have been possible without the following open-source crates:
-
tui-rs and its revival ratatui: TUI-Journal utilizes the
tui-rs
andratatui
crates, which provide a framework for building terminal user interfaces in Rust. They offer a wide range of components and utilities to create interactive and responsive TUI applications. -
tui-texteditor: TUI-Journal leverages the
tui-texteditor
crate, which offers a text editor widget specifically designed for terminal-based applications. It provides functionalities such as text manipulation, cursor movement, and scrolling within the TUI environment. -
sqlx: TUI-Journal benefits from the
sqlx
crate, which is a Rust library for interacting with databases. It enables seamless integration with SQLite, allowing TUI-Journal to store journal entries and notes in a reliable and efficient manner.
These crates have greatly contributed to the development of TUI-Journal, and the project extends its gratitude to the maintainers and contributors of these fantastic open-source libraries.
As the author of TUI-Journal and being new to the open-source community, I would greatly appreciate any contributions from experienced developers. Your contributions can help enhance the functionality, usability, and overall quality of TUI-Journal.
If you have any ideas, bug reports, or feature requests, please don't hesitate to open an issue on the TUI-Journal. Your feedback and input are invaluable in improving the application.
If you would like to contribute code, documentation, or any other form of assistance, I am open to collaboration. Please reach out through the GitHub repository and let's discuss how you can contribute to TUI-Journal.
Thank you for considering contributing to TUI-Journal. Your support is highly appreciated!