# SAMU 🪷

**SAMU** is an opinionated Window Manager that manages the windows simple and
without any **BS**. It's meant to be very _Zen like_, the user can focus on
just what ever he wants to do on his PC an it will _just work_. It's my own custom & cute linux desktop (˶˃⤙˂˶).

```bash
date +"%Y is the year of the `uname -o` desktop"
```

SAMU is a CWM fork with opinionated changes. The changes are big enough to
justify a rename as it's not to be confused with the regular CWM anymore.

<a><img src="./example/screenshots/example.jpg" width="53%" align="right"></a>

## Roadmap 👀

There will not be any big changes anymore as I'm focused on a new Wayland
window manager.

There are also still some applications that have issues on Wayland, especially
on NVIDIA cards which makes this the '_final X11 WM until Wayland is there_' for me.

There are still many CWM keywords in the code that could be cleaned up but
I don't care. The WM is completely tested, stable and done until I
will switch to Wayland.

## Features 💫

Some of the notable changes to CWM:

- no coordinates when moving windows (removed with other useless stuff)
- fix transparency on borders when using picom
- slight changes to mouse behavior when opening new windows
- added autostart
- added new tiling options (top left, bottom right, etc..., center) (the gif shows some tiling, it only lags because of the compression)
- added background color (only works without compositor)
- colored window borders on sticky windows

Notable features from CWM:

- good **EWMH** support so that all applications will actually work well
- very optimized performance when dragging around windows and resizing them

### Supported EWMH hints 🤖

```
"_NET_SUPPORTED",
"_NET_SUPPORTING_WM_CHECK",
"_NET_ACTIVE_WINDOW",
"_NET_CLIENT_LIST",
"_NET_CLIENT_LIST_STACKING",
"_NET_NUMBER_OF_DESKTOPS",
"_NET_CURRENT_DESKTOP",
"_NET_DESKTOP_VIEWPORT",
"_NET_DESKTOP_GEOMETRY",
"_NET_VIRTUAL_ROOTS",
"_NET_SHOWING_DESKTOP",
"_NET_DESKTOP_NAMES",
"_NET_WORKAREA",
"_NET_WM_NAME",
"_NET_WM_DESKTOP",
"_NET_CLOSE_WINDOW",
"_NET_WM_STATE",
"_NET_WM_STATE_STICKY",
"_NET_WM_STATE_MAXIMIZED_VERT",
"_NET_WM_STATE_MAXIMIZED_HORZ",
"_NET_WM_STATE_HIDDEN",
"_NET_WM_STATE_FULLSCREEN",
"_NET_WM_STATE_DEMANDS_ATTENTION",
"_NET_WM_STATE_SKIP_PAGER",
"_NET_WM_STATE_SKIP_TASKBAR",
```

## Autostart 🚗💨

SAMU will attempt to run a `autostart.sh` file located by default in
`XDG_CONFIG_HOME/samu/autostart.sh`. This file does not need to be there,
but you can add other applications and commands there to run on launch.

## Config ✍️

Edit `~/.samurc`. Infos with `man samu`.
Check out `conf.c` for pre configured configs, the default terminal is `kitty`.

## Installation 👷

### Manually 🏗️

1. Run `make` to build `samu`.
2. Copy it to your bin path or run `make install`.
3. Launch `samu-desktop` with `X`

The executable of `samu` is called `samu-desktop` to avoid any complications
with other software that might be called `samu` as well.

## Thanks

Inspiration taken from:

- [sowm](https://github.com/dylanaraps/sowm)
- [cwm](https://github.com/leahneukirchen/cwm)
- [bspwm](https://github.com/baskerville/bspwm)
- [2bwm](https://github.com/venam/2bwm)
- [SmallWM](https://github.com/adamnew123456/SmallWM)
- [berry](https://github.com/JLErvin/berry)
- [catwm](https://github.com/pyknite/catwm)
- [dminiwm](https://github.com/moetunes/dminiwm)
- [dwm](https://dwm.suckless.org)
- [monsterwm](https://github.com/c00kiemon5ter/monsterwm)
- [openbox](https://github.com/danakj/openbox)
- [possum-wm](https://github.com/duckinator/possum-wm)
- [swm](https://github.com/dcat/swm)
- [tinywm](http://incise.org/tinywm.html)
