This is an automated archive.

The original was posted on /r/linux by /u/TheAbyssBr0 on 2023-08-30 21:21:59+00:00.


I’m going to write an Obsidian-like note taking TUI application and I have a few features in mind. And so I thought: why not try to make it useful for other people as well who might be interested in using such an application. Thus, I would like to know what features you’d like to see besides the ones here.

Common features

Open a folder (something Obsidian would call a vault), and show you your md files in itself and its sub-folders. md files must be able to have links to other (sections of) md files or itself. #tags to organize items across different md files. Fuzzy search (also thinking about LLM assisted search discussed in next section).

I will also like to write a companion read-only phone app for this based on the argument (raised by YouTuber and my 2nd favorite Rust-enjoyer No Boilerplate) that one cannot simply leave their ‘2nd brain’ behind on their computer when they go outside. This would be difficult though as I have never written an android app but I’m confident I can figure it out.

Different features (still thinking about 'em)

Should look like raw mark down in insert mode and fancy rendered mark down in command mode. The controls will be somewhat VIM-like but I am unsure how many VIM-motions I’d want to implement here.

Capability to automatically run code on input, where the input might be a linked section of some md file fed as stdin to the code. Ex 1

LLM assisted search where some locally running LLM could look through a vectorized database of the vault and show similar-enough results. This should in theory be able to find things that even the fuzzy finder cannot. Even if this is implemented, it will be implemented last on a day when I have nothing better to do. That said, I do think it would be a nice-to-have when required (if ever required).

Why TUI application of something that already exists?

  • FOSS
  • it will be usable from a terminal emulator/TTY/through SSH
  • I like using minimalist applications
  • no electron

I’m thinking of writing it in either Nim, Rust, or C++ (decreasing preference order). I know Rust and C++ have some nice curses libraries that would make developing this very easy (famous last words). I have used Nim to create an incredibly simple TUI tool but the library I used was very similar to a standard ncurses library and I’m unsure if Nim has any higher level libraries to make development easier. That said, I really enjoyed my time using Nim, especially the ability to cross-compile for different platforms through C. And I will shill for this language until I find something that has a better comfy-performance ratio.

1 This could be good for example code snippets in your notes. Or something like:

### Typing speeds over time
`69 71 73 75 120 6`

### Calculate averages and show graph
/* %run invokes python interpreter in local machine and runs the program with given input */ 
%run python3 [link to python script in 'vault'] [link to inputs header]

And then any link to [Calculate averages and show graph] when followed could run the python script and output necessary data (or paste directly into the header body that invoked it).

And finally, thank you for taking the time to read all of this! I look forward to your feedback.