TUI Application to manage Obsidian notes
TUI Application to manage Obsidian vaults and notes directly from the terminal ✨.
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-tuiThis 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.
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
- 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)
- Do not run test when pushing a tag
- Run vhs when basalt dir changes and commit it to the current PR
- Add mdbook and gh pages
- 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
:wand quitting:q - Switch between scrollbar and paging using a command
:set scrollor: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 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.
There's a useful pre-push git-hook under scripts, which you can enable by running the following command:
cp scripts/pre-push .git/hooks/
The script runs the same test commands as in the test.yml workflow.