87 lines
4.2 KiB
Markdown
Executable file
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—: 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)
|