- We are no longer reloading startup applications when the config gets refreshed since it was causing us to crash
- Config updates now happen in `AppendEventFilter` to ensure that they're threadsafe
- When we recalculate the root node area on config refresh, we rightfully commit those changes too
- Removed the `scale_area` and `translate` methods as they were unnecessary
- Using `set_logical_area` and `commit_changes` to make changes on output resize
Responses made to: https://bugzilla.redhat.com/show_bug.cgi?id=2272744#c3
- Added license headers to all of the source code files
- Added a `desktop-file-validate` line to the spec file
- Running tests in the spec file
- Added CI for fedora that builds the source rpm
- 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
- A working `debian` folder that I can use to upload to a ppa on launchpad
- Instructions on how to upload new builds. These instructions are very manual at the moment, but there exists another task to make this manual. I would prefer to do it manually for v0.2 at least.
* Added support for floating windows, including moving floating windows using the mouse, resizing floating windows, and complex pointer selection
* Fixed a bug where removing a node was causing the program to crash
* 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
* Configuration changes can be watched and the rest of the program can listen for those changes
* Added the idea of outer and inner gaps to windows
* Fixed up some of the problems with window gaps (still not very happy with it though)
* 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