Worm - a floating, tag based window manager

I’ve spent quite a while of my spare time writing a X11 window manager over the past couple weeks, as a fun side project.
It is:

  • reparenting (draws titlebars)
  • floating (a tiling layout is also planned)
  • IPC based
  • has tags (right now they only function like workspaces, but it’s very trivial to add IPC commands for more complicated use-cases)
  • written in pure Rust (later rewritten in Nim)

Check it out!

34 Likes

:crab:
yes

2 Likes

Looks pretty interesting! This won’t show up as an option at login or under an icon one has to click to start it at login, will it?

1 Like

@codic12
Are you planning to write a PKGBUILD for it? :sweat_smile:

2 Likes

if you need more screenshots for this, i can help you

1 Like

I’m on it :wink:

Edit : @moson did it. Thanks!

4 Likes

Thanks, I have no idea how :wink:

1 Like

well, it can by constructing a simple worm.desktop file and putting it in /usr/share/xsessions:

[Desktop Entry]
Encoding=UTF-8
Name=Worm
Comment=Floating, tag based window manager
Exec=worm
Type=XSession

(here worm should be in the global path, or otherwise you can change the Exec= line to point to it).

I’ll add these instructions to the readme too.

1 Like

go ahead!

PKGBUILD
_pkgbase='worm'
pkgname='worm-git'
pkgdesc="A floating, tag-based window manager written in Rust"
pkgver=0.1.0.7.g15c2d00
pkgrel=1
arch=('x86_64')
url="https://github.com/codic12/worm"
license=('unknown')
makedepends=('cargo')
source=("$_pkgbase::git+$url.git")
sha256sums=('SKIP')

pkgver() {
	cd "$_pkgbase"
	echo "$(grep '^version =' Cargo.toml|head -n1|cut -d\" -f2|cut -d\- -f1).$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)"
}

build(){
  cd "$_pkgbase"
  cargo build --release --locked
}

package() {
  cd "$_pkgbase"
  install -D -m755 "target/release/worm" "$pkgdir/usr/bin/worm"
  install -D -m755 "target/release/wormc" "$pkgdir/usr/bin/wormc"
}

Not sure what to put as deps though. xorg obviously.

I’m just getting a black screen when I run worm though :thinking:

@codic12 You may want to add a license.

I can publish it to the AUR if you want.

7 Likes

I’m just getting a black screen when I run worm though :thinking:

yeah, I haven’t added an autostart script yet, so that’s expected; you can go to another tty and do DISPLAY=:1 someapp (or if you don’t have another wm running somewhere else, set DISPLAY to :0). I’ll get to the autostart script later today, that should be fairly trivial.

Thanks for packaging! Added a MIT license, I think the xorg dep is enough for runtime.

Feel free to publish it to the AUR!

5 Likes

I’ve just added support for autostarting. You can make an executable ~/.config/worm/autostart and it will run.

5 Likes

Github is good with timezones lol

image

3 Likes

My laptop’s timezone is broken and I never bothered to fix it; probably from that

:slight_smile:

Here’s the AUR package:

https://aur.archlinux.org/packages/worm-git/

testers are welcome. :wink:

12 Likes

Thanks a lot!
I’ve added a link to the README. The package works perfectly on my system.

4 Likes

Will test as soon as I can! Thank you for your work!

1 Like

:+1: If you want to make versioned releases at some point, let me know.
Then we can add a “normal”/versioned -worm- package as well.

5 Likes

This is fantastic. Great work @codic12!

3 Likes

Congrats grate work.

I’m just out of curiosity. The worm is like a tiling WM but with tiling? And tags, are they the numbers that show up in the Awesome bar? or is it something else?

1 Like