aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* Huge refactor for the Haskell code.HEADmainJosh Rahm2024-02-28
| | | | | | | This adds new layout configuration, preparing for actually using the layouts. This also restructures the code and tries to keep code interfacing with the foreign structures together and rename them to more sensible names.
* better surface handlingJosh Rahm2024-02-22
|
* Add wofi to the keylist and change the hotreload keyJosh Rahm2024-02-21
|
* Do not keylog myselfJosh Rahm2024-02-21
|
* Have the plugin handle more responsibility with keybindings.Josh Rahm2024-02-21
| | | | The plugin now passes the key events to the Wayland clients.
* Do a major garbage collection before hot reloading the plugin.Josh Rahm2024-02-21
| | | | | | | | | This is done to cleanup the dangling reference to the opaque state before unloading the plugin. This fixes the problem where the runtime gets a "strange object" during garbage collection after hot-reloading the plugin while keeping the RTS running.
* Add the typed codepoint as an argument to the keyboard handler.Josh Rahm2024-02-21
|
* Do most of keyboard handling in the plugin now.Josh Rahm2024-02-21
|
* add back the metaloadJosh Rahm2024-02-20
|
* Added ability to exit the program via a back-interface.Josh Rahm2024-02-16
|
* Framework for plugin to call into harness.Josh Rahm2024-02-14
| | | | | | This is done by passing an interface to the plugin from the harness. The plugin can then request the harness do some things (such as reload), and the harness will do that.
* WIP: Working on the foreign interface.Josh Rahm2024-02-13
|
* add clang-formatJosh Rahm2024-02-12
|
* Do not actually need to have the config wetterhorn function an FFI function.Josh Rahm2024-02-12
| | | | Remove it as such!
* Change the message a bit when running wtr.so directly.Josh Rahm2024-02-11
|
* Move Main.hs to Config.hs and override _start()Josh Rahm2024-02-11
| | | | | | | | | | Now if one tries to execute the built binary with 'stack run' or by just executing it, a helpful message prints to the screen instead of the segmentation fault that normally happens. This technically makes things not portable to other architectures, but it's all just window dressing and can be taken out if need be for other architectures.
* Added event handlers for map/unmap/destroy surfaces, added Alt+F5 for hot ↵Josh Rahm2024-02-11
| | | | | | | | | | | | reload. It turns out I could actually remove the metaload handler from the plugin interface. As things turn out, when fully unloading the shared object and reloading it, the Haskell runtime no longer complained. This makes things much simpler, which is great. I do wonder if I'm going to run into issues because of this, but I'll cross that bridge when it's burning.
* Import tinywl into the project, starting the compositor phase.Josh Rahm2024-02-11
| | | | | | Right now nothing interesting is happening, but the new tinywl implementation is successfully loading a plugin and calling a handler for 'handle keybinding', which is pretty slick.
* Added some more commentsJosh Rahm2024-02-11
|
* Change up a lot of stuff.Josh Rahm2024-02-11
| | | | | Add more functions to the plugin interface and write some generators to generate an interface header file and the plugin's loading code.
* Start making some more changes to harness and add plugin interface.Josh Rahm2024-02-11
|
* Move the harness to its own CMake project.Josh Rahm2024-02-09
|
* Just some minor changes. Proof of concept for state change.Josh Rahm2024-02-08
|
* Made some more complex state in Wetterhorn.Josh Rahm2024-02-08
| | | | | Things are still purely for testing as I figure out how best to handle the ffi boundary, though things are starting to make sense.
* Initial commit for Project Wetterhorn.Josh Rahm2024-02-08
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.