floatiling window manager that flows; fork of plan9port's rio
Find a file
2024-11-29 09:52:32 -07: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 fix some regressions from 1.4 (1.5 is based on 1.3); 'proper' mouse passthrough not there yet 2024-09-26 07:50:54 -06:00
.clang-format fix some regressions from 1.4 (1.5 is based on 1.3); 'proper' mouse passthrough not there yet 2024-09-26 07:50:54 -06: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 add simple (nice) cascading 2024-11-29 09:52:32 -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 add simple (nice) cascading 2024-11-29 09:52:32 -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 add simple (nice) cascading 2024-11-29 09:52:32 -07:00
fns.h add simple (nice) cascading 2024-11-29 09:52:32 -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 clean up and simplify 2024-09-29 20:58:18 -06:00
LICENSE fix some regressions from 1.4 (1.5 is based on 1.3); 'proper' mouse passthrough not there yet 2024-09-26 07:50:54 -06:00
main.c clean up and simplify 2024-09-29 20:58:18 -06:00
manage.c fix some regressions from 1.4 (1.5 is based on 1.3); 'proper' mouse passthrough not there yet 2024-09-26 07:50:54 -06:00
menu.c clean up and simplify 2024-09-29 20:58:18 -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 add simple (nice) cascading 2024-11-29 09:52:32 -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 fix some regressions from 1.4 (1.5 is based on 1.3); 'proper' mouse passthrough not there yet 2024-09-26 07:50:54 -06: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 merge 1.5.0 into main 2024-09-26 07:54:46 -06:00
ryudo.1.html merge 1.5.0 into main 2024-09-26 07:54:46 -06:00
ryudo.1.md merge 1.5.0 into main 2024-09-26 07:54:46 -06: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

-- Iris Lightshard 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
  • 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:

  • 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