floatiling window manager that flows; fork of plan9port's rio
Find a file
2022-03-27 10:52:10 -06:00
screenshots v1.3.0 ready for release; fix for wrangle and zoom keybinds, update docs and config.def.h 2022-03-01 12:22:14 -07:00
showevent add OPACITY, TRANSPARENTLIST config macros; add clang-format back to build script; update docs 2021-11-16 15:16:28 -07:00
.clang-format tweak formatting 2021-02-26 14:50:23 -05:00
.gitignore use config.def.h -> config.h and document it in the manpage; v1.0 2021-09-21 23:26:52 -06:00
build.sh dont quit build if clang-format not present 2021-11-16 15:19:53 -07:00
client.c pass mouse clicks through to windows properly 2022-03-27 10:52:10 -06:00
color.c use Xrandr to store monitor info; next we must use this info to place windows 2022-02-27 10:18:17 -07:00
config.def.h v1.3.0 ready for release; fix for wrangle and zoom keybinds, update docs and config.def.h 2022-03-01 12:22:14 -07:00
cursor.c implement support for multimonitor setups; bump version to 1.3.0 2022-02-28 23:40:42 -07:00
dat.h implement support for multimonitor setups; bump version to 1.3.0 2022-02-28 23:40:42 -07:00
error.c use Xrandr to store monitor info; next we must use this info to place windows 2022-02-27 10:18:17 -07:00
event.c pass mouse clicks through to windows properly 2022-03-27 10:52:10 -06:00
fns.h fix heuristics for focusing windows after hiding or deleting current 2022-03-04 23:57:25 -07:00
grab.c implement support for multimonitor setups; bump version to 1.3.0 2022-02-28 23:40:42 -07:00
install.sh add OPACITY, TRANSPARENTLIST config macros; add clang-format back to build script; update docs 2021-11-16 15:16:28 -07:00
key.c v1.3.0 ready for release; fix for wrangle and zoom keybinds, update docs and config.def.h 2022-03-01 12:22:14 -07:00
LICENSE add 9wm license to its own file 2022-03-05 10:20:33 -07:00
main.c bump to v1.3.3 2022-03-06 14:56:04 -07:00
manage.c pass mouse clicks through to windows properly 2022-03-27 10:52:10 -06:00
menu.c pass mouse clicks through to windows properly 2022-03-27 10:52:10 -06:00
mkfile use Xrandr to store monitor info; next we must use this info to place windows 2022-02-27 10:18:17 -07:00
mkriorules.sh truncate long window labels, maximized windows have no visible border, fix makefile 2019-12-04 20:17:43 -05:00
monitor.c implement support for multimonitor setups; bump version to 1.3.0 2022-02-28 23:40:42 -07:00
patchlevel.h first commit 2019-12-02 13:23:00 -05:00
printevent.c tweak formatting 2021-02-26 14:50:23 -05:00
printevent.h fix clang-format, no sort includes! 2021-02-26 13:01:22 -05:00
README.md add reference to license in readme 2022-03-06 14:57:26 -07:00
README.rio implement support for multimonitor setups; bump version to 1.3.0 2022-02-28 23:40:42 -07:00
rio.c first commit 2019-12-02 13:23:00 -05:00
ryudo.1 v1.3.0 ready for release; fix for wrangle and zoom keybinds, update docs and config.def.h 2022-03-01 12:22:14 -07:00
ryudo.1.html v1.3.0 ready for release; fix for wrangle and zoom keybinds, update docs and config.def.h 2022-03-01 12:22:14 -07:00
ryudo.1.md v1.3.0 ready for release; fix for wrangle and zoom keybinds, update docs and config.def.h 2022-03-01 12:22:14 -07:00
ryudo.desktop update helpers 2021-11-10 23:45:17 -07:00
ryudo.log kinda fix edge case unmapping/destroying window immediately after switching from empty desktop 2022-03-06 14:55:33 -07:00
startryudo tweak startryudo script 2021-11-10 23:50:38 -07:00
xevents.c tweak formatting 2021-02-26 14:50:23 -05:00
xshove.c tweak formatting 2021-02-26 14:50:23 -05:00

RYUDO

the minimalist floatiling window manager that flows

-- Derek Stevens nilix@nilfm.cc 2019 --

micro centered floating porn firefox maximized pseudotiling

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.

The original README from rio, (which contains the original README from 9wm) is in this repository. See README.rio