all repos — ryudo @ de0bc0397ac6302cb4e11c53097c77abcfb30eb5

the floatiling window manager that flows; fork of rio from plan9port

README.md (raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# [[ RYUDO ]]
## the minimalist floatiling window manager that flows
 -- Derek Stevens <nilix@nilfm.cc> 2019 --

[![micro centered](./screenshots/micro_centered.png.thumb.png)](./screenshots/micro_centered.png)
[![floating porn](./screenshots/floating.png.thumb.png)](./screenshots/floating.png)
[![firefox maximized](./screenshots/firefox_maximized.png.thumb.png)](./screenshots/firefox_maximized.png)
[![pseudotiling](./screenshots/pseudotiling.png.thumb.png)](./screenshots/pseudotiling.png)

### About
`ryudo` is a fork of Russ Cox's `rio`, itself a fork of David Hogan's `9wm`.
The primary additions I've made are:

- Explicit list of eligible terminal programs in `config.h`
- `urxvt` is the default terminal emulator (still tries `9term` and then `xterm` if no dice)
- Window spawning behavior has been made more natural -- windows shouldn't spawn partially offscreen like with `rio`
- Customizable colors, borders, fonts, gaps, and keybinds in `config.h`
- Multimonitor support via `Xrandr`
- Default keybindings:
  + New Terminal: Super+Slash
  + Switch Windows: Alt-Tab
  + Switch to Window on the next monitor: Alt-Shift-Tab
  + Destroy: Super+D
  + Iconify: Super+I
  + Uniconify: Super+U
  + Maximize: Super+M
  + moVe: Super+V
  + Reshape: Super+R
  + wrAngle: Super+A
  + Stick: Super+S
  + Snap Left: Super+H
  + Snap Right: Super+L
  + Snap Top: Super+K
  + Snap Bottom: Super+J
  + Snap Top-Left: Super+Q
  + Snap Bottom-Left: Super+W
  + Snap Bottom-Right: Super+O
  + Snap Top-Right: Super+P
  + Snap Big Center: Super+C
  + Snap Floating Center: Super+Shift+C
  + Virtual Desk++: Super+Right
  + Virtual Desk&mdash;: Super+Left
- Other new features customizable by `config.h`:
  + Show/hide 'Stick' Button3 menuitem
  + `AUTOSTICK` list of windows to spawn sticky by default and not focus (pseudo-panel/dock windows)
  + `TRANSPARENTLIST` of window classes to be rendered with partial transparency (and corresponding OPACITY setting) 
  + Optionally notify with `notify-send` which desktop is switched to (I use it with `dunst`)
  + Gaps for pseudo-tiling
  + Option to swap the keyboard shortcuts between "Snap Big Center" and "Snap Floating Center" (and the preferred behavior for terminals launched by keyboard)
  + Focus model for new windows in multimonitor setup (follow mouse or follow active window)

The name "Ryudo" is a nod to "Rio" and a Japanese word for "flow."
Using `ryudo` should feel very natural -- you can do things with keyboard or
mouse depending on the situation. Terminal launching can be done with mouse
using the popup menu, or using the keyboard, which will spawn a terminal
window centered (its exact geometry is configurable via `config.h`).

### Dependencies, Building, Installation

Running and building require the following:

* a full `plan9port` installation
* `libX11` and development headers
* `libXT` and development headers
* `libXrandr` and development headers

If virtual desktop switching notification is enabled, it requires

* `libnotify` and development headers

Build with `build.sh` (calls `mk` and does some other magic), and install with `install.sh` (will install to a local folder if run as a normal user, or to your `$PLAN9/bin/` plus session wrapper in `/usr/bin` and `.desktop` file in `/usr/share/xsessions/` if run as root).

If you have trouble building, you might need to edit the `mkfile` at line 2 to point to the proper location of your plan9port's `mkwsysrules.sh`, or edit the compiler flags (`CFLAGS`) linker flags (`LDFLAGS`) to point to your libraries' real location.

### Bugs and Caveats
Of the bugs and caveats not already mentioned in `rio`'s README:

- No per-pixel alpha support beyond `XShape` extension.
- Switching back and forth between virtual desktops very quickly can cause some windows to glitch out, lose their parent (border), and become unfocusable.
- Some applications that render fullscreen or dedicated OSD windows (Virtualbox, Zoom, etc) will need to be manually maximized to fix their alignment (in the former case) or otherwise misbehave.
- Probably more!

### License and Legacy

`ryudo` is distributed under the [9wm license](./LICENSE).

The original README from `rio`, (which contains the original README from 9wm) is in this repository. See [README.rio](./readme.rio)