inclement / vivarium

A dynamic tiling Wayland compositor using wlroots
GNU General Public License v3.0
367 stars 13 forks source link

Join forces? #98

Closed werererer closed 2 years ago

werererer commented 2 years ago

Hey I am the core maintainer/Author of japokwm and I have noticed that we share very similar goals with our windowmanagers.

I mean we both used xmonad and didn't keep using it for some reason. Oh and I also got inspired by dwm/sway and somewhat from herbstluft (I initially though you could create layouts in herbstluft lol).

I personally think that my windowmanager has had more development time allocated to it (approx a year). As we share similar goals I think it would be beneficial for us to work on a single project and not to split the development time into two projects. I currently have already put in a year of work and over 1200 commits (100000 lines changed ~10000 remaining lol).

My goals:

yeah and my github page: japokwm

So yeah tell me what you think. I am actually completely ok if you rather want to have an own separate project :).

inclement commented 2 years ago

Hi @werererer, thanks for getting in touch! I knew about japokwm but I hadn't realised how active your development has been and indeed how there are big similarities between our directions. I think back when I started on vivarium that wasn't so obvious - in fact, am I right to think japokwm came from juliawm?

I started writing vivarium as equal parts learning exercise and attempt to solve my own problem (of wanting to try wayland but with a window management behaviour following what I already had with xmonad). Surprisingly it went well enough that it's also core-feature-complete, although I think it's simpler and less ambitious than japokwm. I focused in particular on a simple config format specifically because I felt like it's a better experience for most configuration compared to e.g. xmonad's haskell config, and for the same reason I deliberately don't have any IPC as it stands. I'm not really sure if that was a good idea though and I suspect vivarium is on track to grow some IPC sooner or later! For more dynamic config my own plan has been to provide an easily-wrappable library layer so that it's easy to code layouts or event handling in any language...although that's quite blue sky thinking as it stands.

I think japokwm looks great, but I'd like to continue also working on vivarium - I think there is plenty of space for projects like this with different goals even if they're similar in some ways, and in fact I hope that the window manager ecosystem continues to grow as wlroots makes it easier. Hopefully things like the scene-graph layer make it easier and easier for different compositors to focus on their own unique logic and ideas rather than all the boilerplate which, it seems fair to say, is still somewhat duplicated between them all.

werererer commented 2 years ago

Ok thanks for the info :).

Your assumption that japokwm came from juliawm is correct. I initially wanted to use julia because I wanted to have simple user configuration and I liked it's syntax. Later I realised that it is still too slow so I chose lua instead and had to rename my project because it would have been confusing.

I actually also wanted to have my xmonad config in wayland without the hassle of haskell so I am very open to all features missing from xmonad. And I think that lua can have the potential to be verrry simple as long as the user doesn't need to edit a way to long config file (yeah you are meant awesome).

Btw when you will build in user custom layouts you will inevitably face the problem of resizing custom layouts. I partially fix this problem after a looooot of thinking for all layouts where resizing is dependent on the master window. This doesn't solve the problem for layouts which resize outward from the center of the screen though. I could fix it with an option though that the where the user decides that he wants to resize outward.

Anyways problems such as these are a reason why I wrote to you because with enough work we may be able to create a tiling manager library from the base code I wrote, where you put in a 3d array, specify the resize direction and amount and it spits out a new 3d array. This library may be then used to write plugins in other programs such as vim/tmux/emacs to enable dwm like tiling windowmanager behavior there. Currently the lack of manpower is hindering this process a lot though...

Also you could actually work on features like enabling coding in external/other languages directly or having very complex event handling (which basically already works in japokwm but can be improved upon) without having to code a lot of the unpleasant code that still awaits you(yeah I am talking of you ipc) and we both would get the windowmanager that we like to have faster.

Also there currently is a lack of a standardized ipc protocol to communicate workspaces to bars like ewmh(X11) and we then could focus on such things more.

In other words working together may enable us to create an even better window manager than doing alone would allow us.

Anyways if that is still not convincing enough for you then so be it :D. I mean more window managers = more innovation in features :).

werererer commented 2 years ago

Anyways lets close this issue :)