this post was submitted on 21 Jan 2024
12 points (87.5% liked)

Ruby

530 readers
1 users here now

A community for discussion and news about Ruby programming.

Learning Ruby?

Tools

Documentation

Books

Screencasts

News and updates

founded 1 year ago
MODERATORS
 

What the title says. It's <1k lines of Ruby, and provides a basic tiling WM w/some support for floating windows. It's minimalist, likely still buggy and definitely lacking in features, but some might find it interesting.

It is actually the WM I use day to day

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 9 months ago

I'm not sure if "optimized" is the right word for my stack at the moment. Optimized in the sense that it is small, sure, but it does come at a performance cost - as much as I love Ruby, e.g. doing font rendering in Ruby is only viable because you only need to render each glyph once per size you use, for example. But I feel the performance tradeoff is acceptable. For me at least.

The terminal is also nothing "special" yet, other than the fact it's written in Ruby, and uses that Ruby font-renderer. It needs some serious bug fixes and cleanups and then that too will go on Github.

For me the tradeoff is that I get full control, and there are a few things I want to experiment with:

  • Since it can parse escape codes, there's nothing preventing a thin IO wrapper so it's possible to use the backend to output to an X11 window. Benefits of that would be being able to e.g. use part of a window for text output while rendering other things in the rest of the window, or plugging in your own code to augment the rendering in various ways.

  • But if you do that, you can strip out the escape code parsing, or bypass it, and use the underlying terminal buffer for the same purpose. E.g. my text editor already renders to a terminal-like buffer, and so when running under X it'd save going through the terminal pipeline, and I'd have the option of "upgrading" its rendering while keeping most of it pure text.

  • I'd like to play with ways to do filtering and post-processing of content. E.g. highlighting based on running Ruby code over the output.

Especially since a large part of my use is my editor, augmenting the backend with support for small "upgrades" w/GUI features, like letting Ruby apps that pull in the backend control and respond to a scrollbar in the terminal, or "replace" the scrollback buffer w/control over the editors buffer, or plugins to add a minimap, to make it really easy to write Ruby apps that work in any terminal but that can get extra features when it can open its own windows would be interesting.