ryudo/README.md

87 lines
4.2 KiB
Markdown
Executable file

# [[ 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)