<feed xmlns='http://www.w3.org/2005/Atom'>
<title>montis.git/test, branch dev</title>
<subtitle>Wetterhorn. A Wayland compositor based on XMonad.</subtitle>
<link rel='alternate' type='text/html' href='http://git.josher.dev/montis.git/'/>
<entry>
<title>Initial commit for Project Wetterhorn.</title>
<updated>2024-02-09T02:50:10+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2024-02-09T02:50:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/montis.git/commit/?id=3e5cdf208606700b45acecf7c8a0b366a8caa106'/>
<id>3e5cdf208606700b45acecf7c8a0b366a8caa106</id>
<content type='text'>
Project Wetterhorn is an attempt to make a Wayland compositor inspired
by XMonad. This project is different from other Wayland compositors in
that one of its core tenets is dynamic reloading of as much code as
possible.

The architecture is going to be:
  - A harness, written in C, supplies the basic components to create a
    Wayland compositor. This will be modeled on tinywl, sway, dwl and
    others and use wlroots as its main abstraction to wayland.

  - A dynamic library, written in Haskell, will provide bindings for
    handling events and managing the windows. This dynamic library can
    be recompiled and reloaded at runtime, allowing the user to write
    their 'configuration' in Haskell, much as XMonad, but without
    needing to reboot the whole compositor.

The boundaries of responsibilities between the harness and the plugin
will be an evolving matter, depending on how important the dynamic
reloading is for that specific responsibility and the need for raw
performance.

I chose this architecture as a compromise. With this architecture,
dynamic loading is achieved without the need to define a whole protocol
around controlling the window management, but this also gives the plugin
the full ability to control the compositor because it is literally a
part of it making anything possible in theory, which is a huge benefit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Project Wetterhorn is an attempt to make a Wayland compositor inspired
by XMonad. This project is different from other Wayland compositors in
that one of its core tenets is dynamic reloading of as much code as
possible.

The architecture is going to be:
  - A harness, written in C, supplies the basic components to create a
    Wayland compositor. This will be modeled on tinywl, sway, dwl and
    others and use wlroots as its main abstraction to wayland.

  - A dynamic library, written in Haskell, will provide bindings for
    handling events and managing the windows. This dynamic library can
    be recompiled and reloaded at runtime, allowing the user to write
    their 'configuration' in Haskell, much as XMonad, but without
    needing to reboot the whole compositor.

The boundaries of responsibilities between the harness and the plugin
will be an evolving matter, depending on how important the dynamic
reloading is for that specific responsibility and the need for raw
performance.

I chose this architecture as a compromise. With this architecture,
dynamic loading is achieved without the need to define a whole protocol
around controlling the window management, but this also gives the plugin
the full ability to control the compositor because it is literally a
part of it making anything possible in theory, which is a huge benefit.
</pre>
</div>
</content>
</entry>
</feed>
