2024-02-01 04:06:07 -05:00
# nanosm
A nano-sized not-really-a session manager intended to replace less-than-robust Bash/etc scripts.
2024-02-02 05:34:37 -05:00
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).
2024-02-01 04:06:07 -05:00
# Why write this?
2024-02-02 20:36:33 -05:00
Because `app &` then `exec wm` in `.xinitrc` is impressively awful. What if your WM crashes, or your panel? Guess you lose them!
2024-02-01 04:06:07 -05:00
2024-02-02 20:36:33 -05:00
And if your WM crashes? Your whole Xorg server goes with it, meaning so does everything else.
2024-02-01 04:06:07 -05:00
2024-02-02 05:34:37 -05:00
A more robust solution that's still small and easy to setup (read: Not written in bash) is clearly a better idea.
2024-02-01 04:06:07 -05:00
# Installation
2024-02-02 06:41:46 -05:00
Requirements:
- A C++20 compiler (GCC 13 known to work, whatever clang version probably works too)
2024-02-02 05:50:08 -05:00
```bash
2024-02-02 06:41:46 -05:00
$ git clone --recursive https://git.crustywindo.ws/modeco80/nanosm
$ cd nanosm
2024-02-02 05:50:08 -05:00
$ cmake -Wno-dev -GNinja -Bbuild -DCMAKE_INSTALL_PREFIX=/usr
$ ninja -C build
# ninja -C build install
```
2024-02-01 04:06:07 -05:00
# Configuration
2024-02-02 06:41:46 -05:00
- Copy `/usr/share/doc/nanosm/nanosm.toml` to `~/.config/nanosm/` and edit it to your liking/setup.
2024-02-02 20:36:33 -05:00
- Remove the applications you added to your `nanosm.toml` from your `.xinitrc` , since nanosm will handle them
2024-02-01 04:06:07 -05:00
- Add `exec nanosm` to the end of your `.xinitrc` .
2024-02-02 20:36:33 -05:00
- ...
- Profit?