Skip to content

Releases: miracle-wm-org/miracle-wm

v0.3.5

08 Sep 12:35
Compare
Choose a tag to compare

This is another patch release as we work towards making the Fedora Miracle spin bug-free.

What's changed?

  • Added a cmake option -DSYSTEMD_INTEGRATION. When built with this option, miracle will integrate with systemd on boot up, meaning that all relevant environment variables will be set in the user session and miracle logs will be available in journal. On top of that, miracle now binds to the graphical-session target, so any systemd units that depend on that target will function appropriately. (fixes https://bugzilla.redhat.com/show_bug.cgi?id=2308912)\
  • Created the miraclemsg subproject which is a drop-in replacement for swaymsg
  • Fixed a regression where XWayland applications were stealing focus from one another one was on a hidden workspace
  • Fixed a bug where shell components could not properly gain focus (fixes https://bugzilla.redhat.com/show_bug.cgi?id=2308911)
  • Fixed bugs with loading the default configuration

Full Changelog: v0.3.4...v0.3.5

v0.3.4

27 Aug 00:02
6b5eb23
Compare
Choose a tag to compare

Another quick bugfix for allowing executed applications to take down the compositor when they quit.

What's Changed

Full Changelog: v0.3.3...v0.3.4

v0.3.3

26 Aug 15:57
Compare
Choose a tag to compare

The sprint to the first version of the Fedora miracle spin continues 🏃 In this release, we've added a few important quality of life things, like being able to specify the path to a configuration or no configuration at all. On top of that, we've continued with even more refactoring work around containers, in preparation for a fuller i3-ipc implementation. A proper minor release should be happening at the end of September so stay tuned 📺

What's Changed

  • release: v0.3.2 by @mattkae in #207
  • ci: remove fedora build from Github actions by @mattkae in #208
  • debian: update to v0.3.2 by @mattkae in #209
  • feature: (partial) beginning implementation of container groups for multi-selection behind a feature flag by @mattkae in #202
  • feature: adding the skeleton of support for the sway input command via IPC by @mattkae in #212
  • feature: send tick in IPC + initial tests + clang tidy by @mattkae in #213
  • refactor: move the server to its own file in tests to be shared by @mattkae in #214
  • feature: adding the miracle-config-path option for loading from a specific file by @mattkae in #215
  • feature: be able to specify --no-config to not load any configuration file by @mattkae in #216
  • feature: add the --exec <APP_NAME> option by @mattkae in #217

Full Changelog: v0.3.2...v0.3.3

v0.3.2

13 Aug 12:46
Compare
Choose a tag to compare

Another patch release because I was mistakenly building against the nightly version of Mir. And that's why I should have better CI practices 😮‍💨

What's Changed

Full Changelog: v0.3.1...v0.3.2

v0.3.1

12 Aug 23:39
Compare
Choose a tag to compare

Happy end of summer everyone 🌆 This is a nice little patch release that introduces a major refactor of the Container system in miracle in addition to fixing a number of tricky bugs. All of this is being done in preparation for the Fedora Miracle Spin, that will (hopefully) be finalized later this month 🎉 There will probably be a few more minor releases in the meantime, so be on the look out for that.

Speaking of the Fedora Miracle Spin, I recently gave a presentation about it at Flock to Fedora! Feel free to check it out and get excited 😄

What's Changed

  • snap: update to v0.3.0 by @mattkae in #187
  • test + refactor: renames to more closely match i3, refactor to accomodate testing of the TilingWindowTree, initial tests for the tiling window tree by @mattkae in #189
  • minor: rename master to develop because master is not the mastered version in this context by @mattkae in #190
  • refactor: establish a single source of truth for the selected window by @mattkae in #192
  • refactor: giving Window modification control over to the Workspace instead of the Output by @mattkae in #193
  • refactor: make it so that the tiling window tree relies on the active window much less by @mattkae in #194
  • refactor: remove WindowMetadata and make everything a container + refactor Output and Workspace big time such that they do way less work by @mattkae in #195
  • bugfix: fixing how modes are reported and multi-subscriptions are created by @mattkae in #199
  • bugfix: no longer relying on the Output to get the compositor state by @mattkae in #200
  • refactor: a Container is used as the active element instead of a miral::Window by @mattkae in #201
  • Allow using custom mir libraries directory by @TibboddiT in #198
  • feature: swaymsg exit works now by @mattkae in #203
  • feature: no longer restarting commands that exit with 127 by @mattkae in #204
  • feature: if the configuration doesn't exist, we try to copy it from /usr/share/miracle-wm/config/default.yaml or we write it blank by @mattkae in #205

New Contributors

Full Changelog: v0.3.0...v0.3.1

v0.3.0

02 Jul 11:12
Compare
Choose a tag to compare

Happy summer 🌞 (or winter ❄️)

I am excited to announce the release of 0.3.0 of miracle-wm 🎉. This release took a little longer to get out the door than I initially imagined, but it is definitely worth the wait. I am able to daily-drive miracle now, albeit with a few hiccups 😄. That being said, please remember that all releases leading up to 1.0.0 are considered to be "pre-releases". As such you may encounter a number of bugs and desire a number of features. Still, if you would like to test out the compositor yourself and contribute bug reports/code fixes, it is greatly appreciated!

To install:

sudo snap install miracle-wm --classic

Demo 🎥

I made a quick little YouTube demo to show off the big features if you'd like to check it out. It was hastily made 😉 I plan on making some (much) better devlog/demo videos in the future, so stay tuned.

Features ⭐

Bugs 🐛

  • #166: Fixed a tricky bug where hidden XWayland surfaces on a Z-order above other XWayland windows would surfaces shown XWayland surfaces from receiving mouse input
  • #4: Gedit will still appear as a tile, but it will no longer be broken
  • #113: Fix for fullscreen windows accidentally being resized when they join the tiling grid, plus other bugs around fullscreen windows
  • Only one window resize can happen at a time now (as opposed to one resize per output)

What's Changed

  • bugfix: temporary fix for #24 while we consider it in the Mir project by @mattkae in #112
  • (#113) bugfix: fullscreen windows no longer get their rectangle set if one is pending by @mattkae in #114
  • feature: supporting the i3 focus command by @mattkae in #116
  • feature: displaying a border around windows by @mattkae in #103
  • feature: animation groundwork + window movement animation by @mattkae in #121
  • feature: configurable animations + animation for window opening + multiple ease functions by @mattkae in #125
  • feature: workspace switching animations by @mattkae in #128
  • epic: animations, animations, and animations! by @mattkae in #127
  • feature + testing: animation testing refactor + slide animation now includes a scale + improving workspace transforms + constraining less often by @mattkae in #130
  • snap: upgrade to core24 by @mattkae in #129
  • (#131 #132 #133) bugfix: clipped windows now behave properly when being animated by @mattkae in #135
  • refactor: move ProgramFactory to its own file + clang-tidy issues around the renderer by @mattkae in #139
  • bugfix: unset CMAKE_CXX_COMPILER by @pastalian in #138
  • feature: support for i3 'exec' command by @mattkae in #140
  • feature: implementation if the i3 'split' command by @mattkae in #142
  • feature: support for the i3 'move' command by @mattkae in #143
  • feature: support for i3 'sticky' command by @mattkae in #145
  • (#136) bugfix: interpolating first slide animation from the current position by @mattkae in #146
  • (#147) bugfix: workspace animations are now interpolated + border respecting workspace transforms + massive simplification of workspace transformation code by @mattkae in #148
  • refactor: resizing is now global instead of local to a particular output by @mattkae in #150
  • frankenstein: borders disappearing bug for floating windows + percentage not being clamped on animations + IPC_GET_VERSION + IPC_GET_BINDING_MODES + IPC_GET_BINDING_STATE + IPC_GET_OUTPUTS by @mattkae in #153
  • (#122) bugfix: border rendering no longer throws GL error 1281 by @mattkae in #155
  • (#156) bugfix: place fullscreen windows properly by @mattkae in #159
  • bugfix: XWayland windows some times become unclickable by @mattkae in #167
  • (#166) XWayland windows now have a proper Z-order so that they don't step on each other's toes by @mattkae in #170
  • bugfix: handling initially fullscreen windows + allowing workspaces to be floating by default + allowing windows to be floating initially + fixes for #168 by @mattkae in #171
  • bugfixes: select on hover always + release builds for debian & snap + fix for for #174 when we have zero monitors by @mattkae in #176
  • (#4) bugfix: gedit save dialog no longer appears as a tile + removing some dead code + mild refactor and debugging by @mattkae in #177
  • (#178) bugfix: fix for menus no longer being selectable + being able to allocate a floating window as the initial window by @mattkae in #179
  • bugfix: need libnotify4 in stage packages by @mattkae in #182
  • (#97) bugfix: preventing some windows (e.g. emacs) from deciding on too small of size for their tile by @mattkae in #184
  • Fix compile with glm 1.0.0+ and musl libc by @JamiKettunen in #185

New Contributors

Full Changelog: v0.2.1...v0.3.0

v0.2.1

23 Apr 20:19
e758652
Compare
Choose a tag to compare

It is me again 👋

As promised, I am following up with a release of the Ubuntu deb and Fedora packages. 📦 At the time of posting this, the Fedora package is not quite yet published, but it will follow shortly. The deb package is available on mantic and noble at the moment at version 0.2.0.

On top of this, I'll also took this opportunity to update how we present our documentation. Head on over to https://mattkae.github.io/miracle-wm-wiki/ for a much better documentation experience. Please feel free to open up pull requests to fix any errors that you see in the documentation 🎉

What's Changed

  • fedora: release 0.2.0 by @mattkae in #101
  • packaging: Only install unsnap wrapper when building as a snap by @mattkae in #105
  • debian: released 0.2.0 for noble and mantic by @mattkae in #106
  • feature: docs now exist on github pages by @mattkae in #108
  • fedora: bump to version 0.2.1 for fedora release by @mattkae in #107

Full Changelog: v0.2.0...v0.2.1

v0.2.0

19 Apr 15:54
a7641a1
Compare
Choose a tag to compare

Happy April everyone 🐦 🌷 (or alternatively "🥀 🍂" for my southern hemisphere friends). I am excited to announce release v0.2.0 of miracle-wm. As I mentioned in the previous release, all releases leading up to v1.0.0 are considered pre-releases, meaning that there may be some unexpected bugs or hitches on your particular platform that need fixing. Still, if you'd like to give the compositor a try - even if it's just to test if it runs on your machine and whatnot - I would very much appreciate it!

To install:

sudo snap install miracle-wm --classic

Features ⭐

  • (#35) sway/i3 IPC support has been implemented to minimally support waybar
  • (#45) Added "floating window manager" support whereby individual windows can be made to float above the tiling grid and behave just as they would in a "traditional" floating window manager
  • (#38) The user configuration now automatically reloads when a change is made to it
  • (#37) A terminal option can now be specified in the configuration to decide which terminal is opened up by the keybind. We also do a much better job of deciding on a sane default terminal
  • Environment variables can now be specified in the configuration (e.g. I needed to set mesa_glthread=false to prevent a bunch of screen tearing on my new AMD card)
  • Upgrade to Mir v2.16.4 which brought in a few important bugfixes for miracle-wm, namely:

Packaging 📦

I will personally be maintaining packages for the Fedora RPM and the Ubuntu deb. These packages will be updated within a few days of this release, so stay tuned. At that time, I will also update the README with installation instructions. If you don't want a snap, this is for you!

Bugs Fixed 🔧

  • (#48) Fullscreened windows are now guaranteed to be on top
  • (#34) Fixed a bug where panels could not be interacted with
  • (#50) Keyboard events are now properly consumed when a workspace switch happens
  • (#61) Outer gaps no longer include inner gaps
  • (#66) Disabled moving fullscreen windows between workspaces
  • (#67) Fixed a bug where resizing a window over and over again would make it progressively tinier due to rounding errors
  • Refactored the tiling window system in a big way for readability. This solved a number of tricky bugs in the process so I am very happy about it
  • (#81) Gaps algorithm no longer leaves some nodes smaller than others
  • The project finally has meaningful tests with many more to come 🧪

What's up next?

It is animation season! I am currently working in Mir on this task which will enable us to right our own renderer for miracle-wm. I also want to implement the remaining of the sway/i3 IPC tasks, but that work will be secondary to the animation work.

Check out the roadmap for more info.

v0.1.0

18 Feb 20:53
Compare
Choose a tag to compare

I am happy to announce the first-ever release of miracle-wm, a Wayland compositor based on Mir. I have successfully used the compositor as my daily-driver for two whole days at this point, and I am feeling quite confident in its current state. That being said, please be aware that all releases leading up to v1.0.0 are considered pre-releases, meaning that there may be some unexpected bugs or hitches on your particular platform that need fixing. If you'd rather wait for a feature-complete and stable release, feel free to "star" the repo so that you get a notification when that's ready. In the meantime, if you find any bugs, please report them on the issues page and I will be sure to get to them as soon as I can. Also if you fix any bugs, you will be my new friend 🤝.

To install the release yourself, simply do:

sudo snap install miracle-wm --classic

You can check out our Snap Store page here.

You can check out the user guide here.

Features

  • Tiling window management (open windows, delete windows, resize windows)
  • Gaps between windows
  • Support for exclusion zones for panels (e.g. waybar)
  • Support for fullscreen windows
  • Multi-output support
  • Workspace support
  • A nifty configuration file

What's up next?

Check out the roadmap for more info.