- cross-posted to:
- ruby@programming.dev
- cross-posted to:
- ruby@programming.dev
Most of my workspaces are tiling (bspwm), but I have one where all windows are floated.
This is showcasing my own (very minimalist; ~300 lines) unreleased desktop manager written in pure Ruby, using a Ruby font renderer and Ruby X11 client library (both on github), and showing a custom menu written in Ruby that auto-populates with actions based on directory contents, and showing my Ruby terminal showcasing double-width and double-height support (xterm has it, but few others), and a window showing me editing my Ruby text editor with itself…
Oh, and Polybar. One of the terminals is st - the Ruby terminal is a bit wobbly in a few respects still, though I use it more and more. So there are a few non-Ruby bits left. So far.
You win
Pretty cool idea. The few lines of code also make it easy to rewrite in case you want to switch to wayland.
Thanks. I’m in no rush, but yeah, it’s all very small. They depend pretty much on a handful of X calls at the moment, and aiming to isolate that in a couple of very small classes, so should be very simple. Hoping to clean it up and push more of these to github soon.
Looks awesome, I love Ruby!! For even more ruby you could swap bspwm with subtle, whose config file is written in ruby :) (subtle itself isn’t though sadly)
That’s an interesting one I’d missed. Thanks :)
It might just tempt me to ditch bspwm, or at least experiment. I use little enough of bspwm capabilities, so it might be feasible. I have also lightly toyed with the idea of writing my own, as since I don’t use menu bars etc. even on my floating screen (the “menu bars” in my desktop manager are just client rendered titles) I really need very few capabilities. Basically pretty much just a placement function similar-ish to bspwm, and the ability to move and resize and float windows.
On the other hand, a truly minimalist WM is <100 lines, so I might consider writing one from scratch too (I’d need to update the Ruby X11 binding to handle StructureNotify events and add a few more calls, but that’s pretty trivial). Though at this point we’re quickly approaching zealotry :) It would be fun, though. Maybe when I’m done replacing the terminal fully…
A ruby-written window manager would be too cool, I’d check it out! Although unfortunately I’ve switched to Wayland months ago and I know Wayland is a lot harder to write for… ah well :)
Heh, yeah, that’s part of what’s currently keeping me on X. I use little more than a bunch of shells and Chrome, so there’s not many incentives for me to switch. All of my Ruby X tools are very light on the X11 API use, so they’ll eventually be fairly simple to migrate over, but the window manager vs. compositor situation is frustrating.
I’m somewhat tempted to hack together some FrankenCompositor based on wlroots that implements the bare minimum of the X11 protocol to allow an X11 window manager to to manage the windows. The X11 protocol itself is simple, and while making every WM run would be a ton of work, if you first have a Wayland compositor making it possible to run simpler WMs wouldn’t actually necessarily be so bad. Not likely to happen anytime soon, though, it’s not exactly necessary and I’m not that much of a masochist :)
A somewhat more sane variant might be FFI bindings for wlroots so it’s possible to use it to build a compositor, but that too seems an awful lot more work than an X window manager.
Very true! Well hey those are still some great ideas - would be really nice to see something like that exist for sure. Keep us updated on the project! Always love seeing new ruby stuff
Sources?
Not everything is on Github yet, and much of it is messy and with dependencies on my environment (in the process of cleaning that up), but if you click through the “cross-posted to:” link there are a bunch of links to repo’s of what I have pushed so far.