- Add support for "workspace next/prev/next_on_output/prev_on_output"
- Add support for "workspace back_and_forth"
- Add support for "workspace <name>"
- Add support for "workspace number <name>"
- Integration tests
* Refactored GET_TREE tremendously so that it returns a tree with proper, parseable values
* Wrote IPC tests but had to disable them in CI until further notice
Miracle now supports running through systemd, including logging to the
journal and invoking processes as transient units through systemd-run.
This is controlled as a build-time feature in CMake.
- Begin an implementation for FloatingTreeContainer
- Hide FloatingTreeContainer behind a feature flag
- Added the ability to apply filters on rendering
- Further refactoring of how Containers are handled in general
* refactor: select_window_from_point is now on WorkspaceContent
* refactor: moving more bits to WorkspaceContent, including advise_new_window
* refactor: various reworks, including toggle_floating
* refactor: renaming OutputContent to Output, WorkspaceContent to Workspace, + other refactors
* refactor: remove Workspace::get_tree and even fix a bug!
* backout: renderer.cpp changes
- bugfix: borders disappearing behind other windows on floating windows
- bugfix: animation percentage not being clamped between 0 and 1
- feature: IPC_GET_VERSION
- feature: IPC_GET_BINDING_MODES
- feature: IPC_GET_BINDING_STATE
- feature: IPC_GET_OUTPUTS
- Added support for the i3 focus command: https://i3wm.org/docs/userguide.html#_focusing_moving_containers
- Laid down a lot of the foundation of i3 commands in general, including parsing
- CI now builds against the latest version of Mir's libraries
- Snap builds are now disabled while we wait to update to core24
- Refactored the `Node` concept into `LeafNode`s and `ParentNode`s so that we always know what we're working with
- Implemented the concept of a `Node::commit_changes()` which is used at the end of a series of complex operations to push changes to the screen at the end.
- Prepared the `TilingWindowTree` for testing, which will come next
* Establish the concept of `WindowMetadata` which every window must have. This data is used to associate a `Window` to its `OutputContent` and `Tree`
* The `Policy` now defers to the `OutputContent` for decisions on how a window should behave. The `Policy` is more of a metadata-resolver than anything, as it leaves the heavy-lifting to the `OutputContent`
* Prepares for the integration of a `FloatingWindowManager` that the `OutputContent` will be able to defer to when a window is of type `WindowType::floating`
* feature: selecting a sensible terminal, configurable terminal command, and notifying when we can't open it
* bugfix: using CMAKE_INSTALL_BINDIR for miracle-wm-sensible-terminal
Co-authored-by: Cosima Neidahl <opna2608@protonmail.com>
* enhancement: update program_exists check wihout bounds check
---------
Co-authored-by: Cosima Neidahl <opna2608@protonmail.com>
* Refactored window management and node discovery in preparation for a floating window manager
* This includes making node discovery a pointer jump instead of a tree search (huge for performance!)
* Renamed WindowTree to Tree
* Renamed MiracleWindowManagementPolicy to TilingWindowManagementPolicy
* Switching workspaces now emits a signal to i3 IPC clients which makes it so that waybar works
* Refactored a lot of workspace code for readability and usability