AmmarAbouZor / tui-journal

Your journal app if you live in a terminal
https://crates.io/crates/tui-journal
MIT License
406 stars 13 forks source link
command-line-interface command-line-tool journal rust terminal terminal-app tui

TUI-Journal

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.

Demo

Fuzzy Finder

Table of Contents

Features

Roadmap

Back-ends:

Installation

Grab the most recent pre-built binaries for your platform from the Releases page, or utilize the available package managers.

Arch Linux

On Arch Linux, you can install TUI-Journal by using pacman:

pacman -S tui-journal

Alpine Linux

TUI-Journal is available for Alpine Edge. It can be installed via apk after enabling the testing repository.

apk add tui-journal

FreeBSD

On FreeBSD, you can install TUI-Journal by using pkg:

pkg install -y tui-journal

NetBSD

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

Nix

TUI-Journal is available on the Nix package manager. You can install it using the following commands:

# On NixOS:
nix-env -iA nixos.tui-journal

# On Non NixOS:
nix-env -iA nixpkgs.tui-journal

For more information, visit the TUI-Journal package page on Nix.

Homebrew (macOS and Linux)

For macOS and Linux users, TUI-Journal can be installed via Homebrew using a direct installation method:

brew install AmmarAbouZor/homebrew-tui-journal/tui-journal

Build & Install via Cargo

Ensure you have Rust installed on your system.

The minimum required Rust version is 1.75.0

Linux Dependencies:

Make sure the OpenSSL development package is installed on your system.

Install with default features:

To install TUI-Journal with default features (SQLite and JSON), you can use cargo to install directly from crates.io:

cargo install tui-journal --locked

Install nightly version:

To use the current nightly version, you can install it directly from the GitHub repository

cargo install --git https://github.com/ammarabouzor/tui-journal

Install with Specific Features:

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 --locked --no-default-features --features json

To install TUI-Journal with only the SQLite back-end feature, use the following command:

cargo install tui-journal --locked --no-default-features --features sqlite

Usage

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]
  assign-priority  Assign priority for all the entires with empty priority field [aliases: ap]
  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

Configuration

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.

default_journal_priority = 3  # Sets the suggested priority while creating a new journal

scroll_per_page = 5  # Sets how many journals will be scrolled when using page up/down commands

sync_os_clipboard = false  # Syncs editor clipboard actions with operating system clipboard 

history_limit = 10  # Sets the maximum changes limit for the undo & redo stacks. Use 0 to disable it.

colored_tags = true   # Sets if automatically coloring for tags is enabled.

# Sets the visibility option for the datum of journals. Available options:
#  - `show`: Render datum in journals list.
#  - `hide`: Hide datum without providing an extra empty line for journal without `priority` value. 
#  - `empty_line`: Hide datum providing an extra empty line for journal without `priority` value.
datum_visibility = "show"  

[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.
scroll_per_page = 5    # Sets how many journals will be scrolled using Page-Up and Page-Down command

[external_editor]
# Set the external terminal editor to use from within 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 variables VISUAL, EDITOR then it'll fallback to vi.  
command = "nvim"
# Enabling this save the journal content automatically after closing the external editor
auto_save = false

# Note: external_editor can still be configured in one line to set the command. In that case, the default values for the other fields will be used
# external_editor = "nvim"

[json_backend]
file_path = "<Documents-folder>/tui-journal/entries.json"

[sqlite_backend]
file_path = "<Documents-folder>/tui-journal/entries.db"

Documentation

For detailed information about the TUI Journal app, including usage guide, keymaps, and configuration details, please refer to the Wiki.

Acknowledgments

TUI-Journal would not have been possible without the following open-source crates:

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.

Contributing

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!

License

MIT