github miracle-wm-org/miracle-wm v0.5.0

latest releases: v0.8.2, v0.8.1, v0.8.0...
9 months ago

I'm back with the first release of 2025 🌸 🍀

Check out the release demo video on YouTube if you'd like to see everything in action 🎥

⭐ Features ⭐

  • Added the ability to drag and drop containers (default is to hold the action key + shift and use the left mouse pointer to move containers around in the grid)
  • (Re)added the ability to move floating containers with the mouse pointer (default is to hold the action key and use the left mouse pointer to move the floating container)
  • When floated outside of the grid, users can now turn floating windows into a "mini" tiling grid that is floating above the main tiling grid, thus unlocking some pretty neat workflows!
  • Implemented i3/sway's command criteria, minus a few of the X11-specific bits
  • Added window closing animations (finally!)
  • Added the ability to fade in/out windows and made that the default behavior

🐛 Bugs Fixed 🔧

  • Fullscreen windows now appear on the correct layer (above shell elements)
  • Disallowed maximized/minimized windows
  • Fixing a lot of bugs where clients were sending an incorrect size and we were respecting it
  • Lots and lots of output unplug/replug bugs
  • Improved animation smoothness
  • Fixed X11 app flickering issues
  • GET_OUTPUTS ipc command now returns a correct payload
  • Sending an i3 shutdown notification correctly when miracle closes
  • Fixed a bug where clip areas were not scaling correctly (#188)
  • Improved object lifetime management using C++ smart pointers
  • Increased test coverage 20x
  • Improved build flags for debug and release modes
  • And lots more!

What's Changed

  • release: v0.4.0 by @mattkae in #322
  • refactor: change how animation is done to improve smoothness + maintainability of the software by @mattkae in #324
  • feature: add new feature flag for drag and drop by @mattkae in #325
  • feature: add drag_and_drop to the configuration by @mattkae in #326
  • refactor: the focused output is now set via an interface rather than yolo-ing equality by @mattkae in #327
  • feature: clicking on a leaf container with the proper modifiers held now triggers the dragging state to be entered in reported to applications like waybar by @mattkae in #328
  • feature: added the ability to drag leaf containers around and return them to their tile afterward by @mattkae in #329
  • refactor: move all controller logic from the Policy to a separate controller to ease testing by @mattkae in #330
  • refactor: prepare CommandController such that it can more easily be tested by @mattkae in #331
  • feature: implement the core drag and drop functionality by @mattkae in #333
  • feature: if a container is being dragged and focus is lost to it, then we end the drag and return to the normal mode by @mattkae in #334
  • feature: when dragged, the actual position of the window cannot deviate from the dragged position by @mattkae in #335
  • bugfix: when dragging a container, we make sure that we do not constantly intersect the same container by @mattkae in #336
  • feature: when a window is being dragged, it is unconstrained by @mattkae in #337
  • refactor: create the DragAndDropService and move the state over there by @mattkae in #338
  • feature: add the ability to drag to an empty tiling window tree by @mattkae in #339
  • bugfix: guard StubSurface::initial_placement_done so that miracle can be updated in f41 by @mattkae in #340
  • bugfix: remove remaining references to boost by @mattkae in #341
  • bugfix: when we release a drag, we call set_rectangle so that we hook into the animation loop properly by @mattkae in #342
  • bugfix: processing the modifier key on drag and drop by @mattkae in #343
  • testing: add gmock dependency to tests by @mattkae in #344
  • release: v0.4.1 by @mattkae in #345
  • testing: implement tets for the DragAndDropService by @mattkae in #346
  • bugfix: Enforce minimum Mir version at build-time by @Conan-Kudo in #347
  • refactor: renderer now gathers its data from an intermediary list instead of reaching out to the container and its surrounding objects by @mattkae in #349
  • bugfix: last_selected should be std::nullopt when unset, not nullptr by @mattkae in #350
  • bugfix: the animation system no longer crashes due to bad accesses on the miral::Window by @mattkae in #352
  • bugfix: fixed how intersections are done with drag and drop to work appropriately + added a test for dragging on top of another container by @mattkae in #359
  • refactor: miracle::Output should not rely on the miral::Output by @mattkae in #360
  • bugfix: when an output disappears, we now mark it as defunct instead of removing it by @mattkae in #361
  • feature: when an output disappears, we now rehome its workspaces to the next available output by @mattkae in #363
  • refactor: leaf container is now more separated from the tiling tree by @mattkae in #364
  • refactor: removed the TilingWindowTree entirely and moved all functionality up to the Workspace by @mattkae in #365
  • feature: add a ParentContainer.is_anchored flag by @mattkae in #366
  • refactor: floating windows are now just LeafContainers in an unanchored tiling window tree by @mattkae in #367
  • refactor: added functionality to move one container to another to the Container instead of the Workspace by @mattkae in #369
  • refactor: large refactor of lifetimes and long ignored edges in the codebase by @mattkae in #370
  • bugfix: pinned windows now work as they did before by @mattkae in #371
  • feature: enable build flags for debug and release builds by @mattkae in #372
  • (#376) firefox no longer flickers when switching workspaces by @mattkae in #377
  • (#373) workspaces select the application zone as their area during construction by @mattkae in #378
  • (#368) reimplement scratchpad per the latest understanding by @mattkae in #383
  • (#379) moving a window to its current workspace no longer causes a crash by @mattkae in #384
  • feature: users can resize a single window floating container with the resize mechanism by @mattkae in #385
  • (#388) if a window starts attached or hidden, then it should not become a leaf by @mattkae in #389
  • (#386) appropriately handling the case for fullscreened and maximized windows by @mattkae in #390
  • bugfix: ipc uses weak_ptr instead of raw ptr by @mattkae in #393
  • bugfix: slightly smoother 60fps animations, but this might need something very different by @mattkae in #395
  • (#394) bugfix: properly selecting the last selected container when switching to a workspace by @mattkae in #396
  • refactor: use the ServerActionQueueAnimator instead + minor fixes by @mattkae in #397
  • (#398) fixing clip area of fullscreen requests coming from the client (e.g. youtube) by @mattkae in #403
  • (#400) when hidden, a leaf should be sent to the back to avoid focus issues with X11 windows by @mattkae in #404
  • (#402) no longer allowing minimized windows by @mattkae in #405
  • bugfix: clients cannot request to be hidden by @mattkae in #406
  • (#188) applying proper scale to clip area at render time by @mattkae in #409
  • (#355) layer shell elements no longer interact with the animation system by @mattkae in #411
  • (#407) workspace animations do not have a race condition + we select the right container when we switch by @mattkae in #415
  • (#419) fixing how LeafContainer resolves is_focused by @mattkae in #420
  • (#417) do not make output selections on an output that is animating by @mattkae in #421
  • warnings: fix output compilation warnings by @mattkae in #422
  • feature: implementing command criteria for all IPC commands by @mattkae in #424
  • feature: request the handle move request from clients by @mattkae in #428
  • bufix: Fix FTBFS with glm 1.0.0+ and musl/libc++ (again) by @JamiKettunen in #432
  • feature: implementing surface outro animations by @mattkae in #433
  • feature: implement fade in / out animations by @mattkae in #437
  • (#438) No longer throwing a fatal error when we don't have an output in Policy::advise_new_window by @mattkae in #441
  • feature: reenable the ability to resize windows when they are floating by themselves by @mattkae in #442
  • (#443) bugfix: hack-fixing the ipc notification not being sent on shutdown by @mattkae in #445
  • (#444) opacity changes trigger a rerender on the surface properly by @mattkae in #446
  • (#447) bugfix: consuming the input event even if we don't move by @mattkae in #448
  • (#425) GET_OUTPUTS ipc now returns a sway-compatible result by @mattkae in #450
  • (#451) move and drag and drop container services always use the primary button now instead of a random one by @mattkae in #452
  • bugfix: supporting more IPC criteria and using it on the focus command by @mattkae in #455
  • release: bump version to 0.5.0 by @mattkae in #456

Full Changelog: v0.4.1...v0.5.0

Don't miss a new miracle-wm release

NewReleases is sending notifications on new releases.