115 lines
3.6 KiB
Markdown
115 lines
3.6 KiB
Markdown
# 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)
|