A nano-sized not-really-a session manager intended to replace less-than-robust Bash/etc incantations in .xinitrc.
Go to file
Lily Tsuru 0a0ab0703a Make Process do prctl(PR_SET_PDEATHSIG)
This means that nanosm managed process will also predictably die if nanosm is killed.
2024-02-02 20:38:10 -05:00
cmake some sizecrunching 2024-02-02 06:52:59 -05:00
doc move original design sketching to doc/ 2024-02-02 20:28:12 -05:00
src Make Process do prctl(PR_SET_PDEATHSIG) 2024-02-02 20:38:10 -05:00
third_party add tomlpp 2024-02-01 23:20:42 -05:00
.clang-format Actually implement event loop & process stuff 2024-02-01 22:54:06 -05:00
.editorconfig init 2024-02-01 04:06:07 -05:00
.gitignore init 2024-02-01 04:06:07 -05:00
.gitmodules add tomlpp 2024-02-01 23:20:42 -05:00
CMakeLists.txt update readme, v0.1 bump 2024-02-02 06:41:46 -05:00
LICENSE init 2024-02-01 04:06:07 -05:00
README.md README/configuration improvements 2024-02-02 20:38:10 -05:00

README.md

nanosm

A nano-sized not-really-a session manager intended to replace less-than-robust Bash/etc scripts.

Written in C++20, using epoll (without helper libraries), to stay nice and smol (Yes I know io_uring exists, but using it for something tiny that literally just waits and restarts processes would be far more overkill).

Why write this?

Because app & then exec wm in .xinitrc is impressively awful. What if your WM crashes, or your panel? Guess you lose them!

And if your WM crashes? Your whole Xorg server goes with it, meaning so does everything else.

A more robust solution that's still small and easy to setup (read: Not written in bash) is clearly a better idea.

Installation

Requirements:

  • A C++20 compiler (GCC 13 known to work, whatever clang version probably works too)
$ git clone --recursive https://git.crustywindo.ws/modeco80/nanosm
$ cd nanosm
$ cmake -Wno-dev -GNinja -Bbuild -DCMAKE_INSTALL_PREFIX=/usr
$ ninja -C build
# ninja -C build install

Configuration

  • Copy /usr/share/doc/nanosm/nanosm.toml to ~/.config/nanosm/ and edit it to your liking/setup.
  • Remove the applications you added to your nanosm.toml from your .xinitrc, since nanosm will handle them
  • Add exec nanosm to the end of your .xinitrc.
  • ...
  • Profit?