Introducing sel, a small interactive TUI picker.

Published on ataractic's blog.

It's been a while that I didn't start a programming project, as my focus shifted on my end-of-studies internship a year ago now, and recently on my first full-time job. It took time for me to adapt to the new lifestyle but since I'm writing these lines, I guess I made it. My last project was libcfg, a robust and thoroughly tested/fuzzed configuration file parser written in C, of which the source code is available on my SourceHut.

During my internship, I took the time to finally switch to a new workflow, TUI based, keyboard-driven, but most importantly completely unknown to me at the time, leaving VSCodium in favour of the scary but cool NVim (thanks to my friend djnn) then Helix, switching from Gnome that I used for 6+ years to the Wayland compositor Sway, going from Fedora to Alpine Linux, and learning touch-typing for the first time on the TypeMatrix 2030 keyboard (Colemak layout). I think I learned a lot from this experience despite being scared of the time it would take to re-learn everything. After all, citing the words of my manager: "If writing code is what awaits you for the rest of your career, it is important to take time learning the tools.".

3 month ago, I discovered dte, a very configurable and small Vim-like TUI text editor, written in pure C. I always had an interest for C and minimalism, so I decided to take a look and see if I could daily-drive it for my personal/work needs. It leverages the Unix philosophy , and a lot of other editor's builtins can be recreated by pairing external Unix tools with it. Check out my dotfiles for an idea and configuration samples. One common pair can be made with a TUI fuzzy finder such as fzf to rapidly navigate between project files at the press of a keybind, similar to NVim's telescope or Helix's builtin file search.

This is how I decided to start the development of sel, an abbreviated form of "select", or "selection", as a lightweight alternative to the popular fzf but written in C and without any needed dependencies for Unix-like systems providing a POSIX-compliant libc. The goal is not to recreate the entire feature set of fzf but rather make the tool as simple and integrable as possible in any workflow while keeping it usable and intuitive for entry selection, and having fun developing it.

If you want to try it out, I released the first version, 1.0.0-alpha.1, a few days ago as the program is now stable enough for basic usage. Feedback is appreciated; please use the dedicated mailing list or send me an e-mail directly. Visit sel's repository.