Worm - a floating, tag based window manager

Worm is a floating window manager, I plan to add a tiling mode at some point later.

And tags, are they the numbers that show up in the Awesome bar?

Yeah, I have an explanation in the README

1 Like

Ah … cool. I kind of didn’t understand. It’s not your fault I’m just too sleepy :smiley: .

1 Like

Oh, tiling in the future!! I’d really be interested if it handles multiple modes and can toggle at some future point. And in Rust - this could be very cool. WormWM could be a nice cousin to the functionality in xmonad (in Haskell) and awesome (in C and Lua) and eventually a row on https://en.wikipedia.org/wiki/Comparison_of_X_window_managers !!

I’d love to see AUR version managing so my paru CLI updates get the latest code. I’m going to download this today.

2 Likes

Thanks for the kind words, everyone!

I’ve implemented runtime configuration for most things. Now the only thing left to do that is advertised but not supported is to properly do tags; right now you can’t even move a window between them! I also plan to write a standalone bar, although font rendering is turning out to be a pain. I might cave in and use cairo, but that’s a lot of dependencies

4 Likes

@moson

In the pkgbuild, I’ll suggest adding this

prepare() {
        cd "$pkgname-$pkgver"
        cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
}

And in build() instead of just cargo build --release --locked, use this

export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR=target
cargo build --frozen --release --all-features

These will allow fetching dependencies before hand, and then build the package entirely offline.

This is similar to whats documented on Arch Wiki
https://wiki.archlinux.org/title/Rust_package_guidelines

8 Likes

This is an interesting project, I would consider it if it can switch between floating and tiled windows. I’ll be watching the progress of this closely. Looks great so far.

4 Likes

thanks. changed.
we follow the arch guidelines now :wink:

7 Likes

Made further progress on tags, now windows can move between tags. Just a bit more of this left…

6 Likes

Cool, 102 stars!
I’ve recently added support for the frame inheriting the bit depth of the client window, which means that for depth=32 windows transparency with a compositor finally works; yay! (for some reason this breaks shadows on those windows, trying to fix that right now)

5 Likes

status report, working on these:

  • borders for inactive window separate from that of active window
  • tiling layout
  • implementing misc. parts of ewmh to make tooling work better
  • better management of dock windows
  • titlebars on any side, or on more than one side! (can’t imagine why you would want to have them on more than one side though, if I’m working on placement anyways I might as well…)
  • ultimate plan for domination EOS Worm edition
6 Likes

Interested project! Looking forward to testing it once it matures a little bit.

As you plan on implementing tiling support, can I propose you add an option (if it does not yet exist) for keeping a floating window always on top? This is extremely useful for watching videos whilst doing other tasks, and sometimes overlooked in tiling WMs. Bspwm has this feature, and it is wonderful.

3 Likes

Thanks!

Sure, that feature seems useful, I’ll definitely take a look.

EDIT: reread your post, it sounds like you’re just describing always-on-top floating windows; yeah that’s definitely on the roadmap.

2 Likes

Correct!

1 Like

Haven’t worked on worm for a couple days, but back to adding stuff now it’s the weekend.

I’ve added support for inactive borders: https://github.com/codic12/worm/commit/dcdcd4b52604f7be91c4c8ec09dcd3b6cd213b92
(This is a breaking change, and I updated the example configuration, if anyone actually uses worm remember to do the same!)

2 Likes

Added support for rendering text to worm!

Terribly hardcoded so far.
Doesn’t actually draw the window title.
Both are easy to fix; the more challenging issue is fixing with windows with depth=32, I don’t know why that’s broken.
anyways, here is a preview:
image

4 Likes

Great work. I’m only waiting for tiling support to try it extensively!

1 Like

it’ll come soon, just need to get text rendering working properly. thanks!

4 Likes

It’s been almost 2 weeks since the last update here! It’s almost like this project is starting to Rust :wink:

All jokes aside, keep up the good work man, I always check out the git page to see the progress, it’s looking good!

3 Likes

Haha, sorry, I haven’t worked on it in a while, for now I’ve kinda moved on to other projects. I’ll definitely bring more updates soon, for now development is temporarily on hold though. Added notice to readme.

1 Like

Forgot to mention, worm is being rewritten in all it’s glory!
I’ve already gotten better than the old version in several aspects; I’m considering adding a dynamic language like Lua, Javascript, or Nimscript into the mix.

4 Likes