screenshots | ||
showevent | ||
.clang-format | ||
.gitignore | ||
build.sh | ||
client.c | ||
color.c | ||
config.def.h | ||
cursor.c | ||
dat.h | ||
error.c | ||
event.c | ||
fns.h | ||
grab.c | ||
install.sh | ||
key.c | ||
LICENSE | ||
main.c | ||
manage.c | ||
menu.c | ||
mkfile | ||
mkriorules.sh | ||
monitor.c | ||
patchlevel.h | ||
printevent.c | ||
printevent.h | ||
README.md | ||
README.rio | ||
rio.c | ||
ryudo.1 | ||
ryudo.1.html | ||
ryudo.1.md | ||
ryudo.desktop | ||
ryudo.log | ||
startryudo | ||
xevents.c | ||
xshove.c |
RYUDO
the minimalist floatiling window manager that flows
-- Iris Lightshard nilix@nilfm.cc 2019 --
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 tries9term
and thenxterm
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 withdunst
) - 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 headerslibXT
and development headerslibXrandr
and development headerslibnotify
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:
- Compositing rules in picom are ignored in favor of the ones in config.h.
- 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.
The original README from rio
, (which contains the original README from 9wm) is in this repository. See README.rio