2019-12-02 18:23:00 +00:00
# [[ RYUDO ]]
## the minimalist floatiling window manager that flows
2021-06-20 05:53:11 +00:00
-- Derek Stevens < nilix @ nilfm . cc > 2019 --
2019-12-02 18:23:00 +00:00
2022-03-01 19:22:14 +00:00
[![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)
2021-03-04 04:04:36 +00:00
2019-12-02 18:23:00 +00:00
### About
2022-03-01 06:40:32 +00:00
`ryudo` is a fork of Russ Cox's `rio` , itself a fork of David Hogan's `9wm` .
2019-12-02 18:23:00 +00:00
The primary additions I've made are:
2022-03-01 19:22:14 +00:00
- Explicit list of eligible terminal programs in `config.h`
2021-02-17 06:58:54 +00:00
- `urxvt` is the default terminal emulator (still tries `9term` and then `xterm` if no dice)
2021-03-04 04:04:36 +00:00
- Window spawning behavior has been made more natural -- windows shouldn't spawn partially offscreen like with `rio`
2021-02-26 05:36:37 +00:00
- Customizable colors, borders, fonts, gaps, and keybinds in `config.h`
2022-03-01 06:40:32 +00:00
- Multimonitor support via `Xrandr`
2019-12-02 18:23:00 +00:00
- Default keybindings:
2019-12-02 18:29:22 +00:00
+ New Terminal: Super+Slash
2022-03-01 19:22:14 +00:00
+ Switch Windows: Alt-Tab
+ Switch to Window on the next monitor: Alt-Shift-Tab
2019-12-02 18:29:22 +00:00
+ Destroy: Super+D
+ Iconify: Super+I
2019-12-08 03:56:19 +00:00
+ Uniconify: Super+U
2019-12-02 18:29:22 +00:00
+ Maximize: Super+M
+ moVe: Super+V
+ Reshape: Super+R
2022-03-01 06:40:32 +00:00
+ wrAngle: Super+A
2021-02-17 06:58:54 +00:00
+ Stick: Super+S
2019-12-02 18:29:22 +00:00
+ 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
2021-02-26 22:29:01 +00:00
+ Snap Big Center: Super+C
+ Snap Floating Center: Super+Shift+C
2019-12-02 18:29:22 +00:00
+ Virtual Desk++: Super+Right
2022-03-01 06:40:32 +00:00
+ Virtual Desk— : Super+Left
2021-02-17 06:58:54 +00:00
- Other new features customizable by `config.h` :
+ Show/hide 'Stick' Button3 menuitem
2021-02-26 05:36:37 +00:00
+ `AUTOSTICK` list of windows to spawn sticky by default and not focus (pseudo-panel/dock windows)
2021-11-16 22:16:28 +00:00
+ `TRANSPARENTLIST` of window classes to be rendered with partial transparency (and corresponding OPACITY setting)
2021-02-17 06:58:54 +00:00
+ Optionally notify with `notify-send` which desktop is switched to (I use it with `dunst` )
2021-02-26 05:36:37 +00:00
+ Gaps for pseudo-tiling
2021-02-26 22:29:01 +00:00
+ Option to swap the keyboard shortcuts between "Snap Big Center" and "Snap Floating Center" (and the preferred behavior for terminals launched by keyboard)
2022-03-01 19:22:14 +00:00
+ Focus model for new windows in multimonitor setup (follow mouse or follow active window)
2019-12-02 18:23:00 +00:00
The name "Ryudo" is a nod to "Rio" and a Japanese word for "flow."
2022-03-01 06:40:32 +00:00
Using `ryudo` should feel very natural -- you can do things with keyboard or
2019-12-02 18:23:00 +00:00
mouse depending on the situation. Terminal launching can be done with mouse
2019-12-02 19:38:26 +00:00
using the popup menu, or using the keyboard, which will spawn a terminal
2021-02-26 22:29:01 +00:00
window centered (its exact geometry is configurable via `config.h` ).
2019-12-02 18:23:00 +00:00
### Dependencies, Building, Installation
2022-03-01 06:40:32 +00:00
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
2019-12-02 18:23:00 +00:00
2021-11-11 19:05:37 +00:00
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).
2019-12-02 18:23:00 +00:00
2022-03-01 06:40:32 +00:00
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.
2019-12-02 18:23:00 +00:00
### Bugs and Caveats
2022-03-01 06:40:32 +00:00
Of the bugs and caveats not already mentioned in `rio` 's README:
2021-11-16 22:16:28 +00:00
2022-03-01 06:40:32 +00:00
- 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.
2021-02-26 22:32:45 +00:00
- 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.
2019-12-02 18:23:00 +00:00
- Probably more!
2022-03-06 21:57:26 +00:00
### License and Legacy
`ryudo` is distributed under the [9wm license ](./LICENSE ).
2022-03-01 06:40:32 +00:00
The original README from `rio` , (which contains the original README from 9wm) is in this repository. See [README.rio ](./readme.rio )