2 releases
new 0.3.1 | May 2, 2025 |
---|---|
0.3.0 | Apr 30, 2025 |
#128 in Authentication
194 downloads per month
110KB
2K
SLoC

Basalt
TUI Application to manage Obsidian notes
TUI Application to manage Obsidian vaults and notes directly from the terminal ✨.

Installation
For now unfortunately, you have to compile this binary yourself, if you want to run basalt. The next thing I'll be doing is adding a GitHub workflow to produce cross-platform binaries.
Install basalt using cargo:
cargo install basalt-tui
Background
This is something that has been brewing in my head for quite some time. There has been different incarnations over the years, however, nothing as substantial as this.
I have been using Neovim and the official Obsidian app. However, I wanted to have something dedicated that offers the same writing experience as Neovim, but has more WYSIWYG experience as in the official Obsidian app. I'm fully aware of (obsidian.nvim)https://github.com/epwalsh/obsidian.nvim, which many people use and find more than sufficient. However, I want to see images, beautified text, note graphs, etc. I want it to be a bit more.
The problem for me personally is that when I leave the terminal, my flow breaks, especially if I'm writing. Using an entirely different app disrupts that flow, and it annoys me. So here I am, building a TUI for Obsidian.
The goal of basalt is not to replace the Obsidian app. Basalt is to fill and cater for a need to have a terminal view to the selection of notes and vaults, providing quick access from anywhere in the terminal with a simple command.
Keybindings
For now these are not configurable, but this will change when the configuration file is supported.
q Quit the application
? Show help
t Toggle side panel visibility and select mode
k Move selection up
j Move selection down
↑ / ↓ Scroll selected up / down
↩ Enter Select the highlighted note
Space Toggle vault selector modal
Ctrl-u Scroll up half a page
Ctrl-d Scroll down half a page
Task List
- Add rudimentary support for markdown rendering
- Add Sidepanel for note selection in vault
- Add bottom information bar that shows the current mode Select, Normal, Insert and statistics for words and characters
- Add help modal / popup with
?
- Add vault selection screen with basalt logo (Splash screen)
- Add vault selector modal
- GitHub Workflows !
- Run tests and build
- Run create release artifacts (cross-platform binaries)
- Run vhs when basalt dir changes and commit it to the current PR
- Async file loading (tokio)
- Persistent scroll state in help modal
- Fuzzy search in panes (note, sidepanel, modals)
- Markdown rendering
- Add support to all markdown nodes
- Add text formatting to different styles like Fraktur and DoubleStruck for heading purposes
- Improve and fix codeblock rendering so it appears as a 'block'
- Support complete Obsidian Flavor
- Add image rendering support
- Note tree
- Create new note under vault
- Collapsible folders
- Notes within Folders in vault
- Move note
- Rename note
- Delete note under vault (with confirmation modal)
- Editor mode
- Editor mode should change to raw text where cursor is. Only changes the current markdown node. Text is inserted node by node.
- Edit and save notes
- Support some vim keybindings to get started (vim mode should be configurable option)
- Easy text yanking
- Command bar
- Add ability to invoke command bar with
:
- Add commands for saving
:w
and quitting:q
- Switch between scrollbar and paging using a command
:set scroll
or:set paging
. Paging will only fit the content it can within the height of the rect and generate pages accordingly.
- Add ability to invoke command bar with
- Configuration file (.basalt.toml)
- Add rudimentary config file and move keybinds to the file
- Wrap lines with prefix (calculate width and add length of prefix)
- Easy backups with Git (Config, (git2-rs)https://github.com/rust-lang/git2-rs)
- Integration tests using https://core.tcl-lang.org/expect/index
- When creating a link show autocomplete tooltip list of potential files to link to
- Add features to basalt-core and basalt-widgets. Default feature set and individual features.
- Clickable checkboxes
I want to help
I haven't yet had the chance to add a contributors' guide. If you would like to help, please feel free to create a pull request directly. At this stage, opening a separate issue is not required unless you would like to start a discussion first.
Please note that this process may change in the future. The expected contribution flow will likely become: Create issue → Create pull request.
Dependencies
~8–22MB
~277K SLoC