I'm on holiday so I've been able to do more on CoW this week.
In no particular order, here's what's changed:
* Switched to libevent. The hand-rolled poll loops, socket handling code is gone, in favour of using libevent.
* Refactorings: across the code base, I've split out larger functions into helpers and reused them. This has reduced some of the duplication by about 60%.
* New hook: "on-start" which runs once CoW has started. Useful to be able to set outputs to different desks/pages.
* DSL: CoW now has a small DSL (which might evolve over time) to reduce boilerplate. This is achieved via the `script` command. For example:
```
rule -g -T on-start -n startup-pages script {
let output = "HDMI-A-1"
for d in (desks where d.output == output) {
desk -t '#{output}' -d #{d.nr}
scroll -t '#{output}' -a 1,1
}
}
````
This sets all desks on output `HDMI-A-1` to start on page `1,1` when CoW starts.
As usual the relevant man pages have been updated.
No doubt there's a tonne of bugs introduced with these changes. If you do happen to spot any, please open an issue on Codeberg:
https://codeberg.org/thomasadam/cow/issues
As always, see the pinned issues if you're interested in trying to help:
https://codeberg.org/thomasadam/cow/issues
And do join me and a small number of others on IRC if you wanted to learn more:
Server: irc.libera.chat
Channel: #cow-wayland
Thanks everyone!






