Commit Graph

62 Commits

Author SHA1 Message Date
Matthew Kosarek
fa979a5b7e
bugfix: adding my own fork of MinimalWindowManager to accomodate better dragging support (#263)
- Fixes #90
- Makes it so that the default floating keybind is Meta + Shift + Space
- Fork MiinimalWindowManager for our own purposes
2024-10-26 07:48:12 +00:00
Matthew Kosarek
e48e3feaf2
feature: workspace switching IPC support (#256)
- 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
2024-10-10 23:46:00 +00:00
Matthew Kosarek
cd4a6efa54
feature: implementation of GET_TREE via ipc + integration tests (#250)
* 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
2024-10-07 17:54:13 +00:00
Matthew Kosarek
690da3a8f4
feature: miracle can now integrate with systemd in a meaningful way (#228)
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.
2024-09-07 13:07:58 +00:00
Matthew Kosarek
d24adc7f34
feature: create a miraclemsg subproject (#224) 2024-09-03 15:35:39 -04:00
Matthew Kosarek
a5026b0f91
feature: be able to specify --no-config to not load any configuration file (#216) 2024-08-25 16:46:43 -04:00
Matthew Kosarek
bd17e5b260
feature: (partial) beginning implementation of container groups for multi-selection behind a feature flag (#202)
- 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
2024-08-18 09:52:59 -04:00
TibboddiT
ea8c9db1ac
Allow using custom mir libraries directory (#198)
* allow using custom mir libraries directory

* update cmake options ordering to improve readability

* CI: install libmirwayland-dev

* CI: install libmirwayland-dev
2024-08-09 09:54:39 -04:00
Matthew Kosarek
c185c4c5bb
refactor: remove WindowMetadata and make everything a container + refactor Output and Workspace big time such that they do way less work (#195) 2024-08-02 09:50:03 -04:00
Matthew Kosarek
699587eaac
refactor: giving Window modification control over to the Workspace instead of the Output (#193)
* 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
2024-07-14 16:42:20 -04:00
Matthew Kosarek
e900b24db6
test + refactor: renames to more closely match i3, refactor to accomodate testing of the TilingWindowTree, initial tests for the tiling window tree (#189) 2024-07-03 16:49:17 -04:00
Matthew Kosarek
0115a377bd
(#4) bugfix: gedit save dialog no longer appears as a tile + removing some dead code + mild refactor and debugging (#177) 2024-06-22 14:01:55 -04:00
Matthew Kosarek
34f0614c62
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 (#153)
- 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
2024-06-14 07:44:15 -04:00
pastalian
051ee2f893
bugfix: unset CMAKE_CXX_COMPILER (#138)
* Predefining CMAKE_CXX_COMPILER overrides the user CXX variable and make building with clang difficult.
2024-05-30 11:21:13 -04:00
Matthew Kosarek
06668b0bd2
refactor: move ProgramFactory to its own file + clang-tidy issues around the renderer (#139)
* refactor: move ProgramFactory to its own file
* refactor: fixing various clang-tidy issues
* refactor: plenty of more cleanup
2024-05-27 18:58:54 -04:00
Matthew Kosarek
6789815eaf
feature: configurable animations + animation for window opening + multiple ease functions (#125)
- Added animations to the configuration
- Added an animation for window opening
- Implemented a number of easing functions
2024-05-10 15:20:02 -04:00
Matthew Kosarek
66ce46ee07
feature: animation groundwork + window movement animation (#121) 2024-05-08 07:55:39 -04:00
Matthew Kosarek
57515dda03
feature: displaying a border around windows (#103)
- Completely overrode the renderer
- Added border as a configuration option
- Rendering a border around focused windows and non-focused windows
2024-05-03 17:19:02 -04:00
Matthew Kosarek
dd89df3214
feature: supporting the i3 focus command (#116)
- 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
2024-05-02 10:14:16 -04:00
Neal Gompa
250f130688 packaging: Only install unsnap wrapper when building as a snap
This is only needed when Miracle is built as a snap, so exclude it
when making regular package builds.
2024-04-23 09:42:48 -04:00
Matthew Kosarek
9a2a0cb36f bugfix: processes spawned from the compositor need to be unsnapped to avoid driver errors 2024-04-19 11:24:44 -04:00
Matthew Kosarek
ee5dc57467 packaging: fedora spec file + SRPM (#73)
- Created an SRPM and spec file for the Fedora package
2024-04-02 15:09:21 -04:00
Matthew Kosarek
65332344c5 refactor: differentiating between ParentNodes and LeafNodes (#71)
- 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
2024-04-02 14:19:57 -04:00
Matthew Kosarek
001278c6e7 testing: implementing tests for configuration parsing (#56) 2024-03-10 16:40:26 -04:00
Matthew Kosarek
0601a51be3 refactor: establish the OutputContent as a source of truth for an Output's layout in preparation for floating windows (#44)
* 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`
2024-03-02 07:47:11 -05:00
Matthew Kosarek
9dca0468be Merge branch 'release/0.1.1' 2024-02-26 13:55:41 -05:00
Matthew Kosarek
50990f66b0 (#37) feature: selecting a sensible terminal, configurable terminal command, and notifying when we can't open it (#40)
* 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>
2024-02-26 13:48:59 -05:00
Matthew Kosarek
37d803997e refactor: window management and node discovery (#41)
* 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
2024-02-25 15:08:01 -05:00
Cosima Neidahl
48dbe2cfbd Use GNUInstallDirs for install locations (#39) 2024-02-25 10:27:53 -05:00
Cosima Neidahl
b8beba8006 Use GNUInstallDirs for install locations (#39) 2024-02-25 10:27:29 -05:00
Matthew Kosarek
b6d1ae752e feature: supporting I3 IPC enough to make waybar's workspaces function (#35)
* 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
2024-02-21 18:54:59 -05:00
Matthew Kosarek
d13c36cfb5 feature: handling the fact that an output may not be present 2024-02-15 14:09:27 -05:00
Matthew Kosarek
b9405e62d9 feature: rudimentary workspace foundation (#18)
* workspace data structure in place

* feature: rudimentary workspace support, but I expect some bugs

* bugfix: unfocusable nodes
2024-02-07 08:05:09 -05:00
Matthew Kosarek
b13beb2740 feature: support for default key command overrides in the configuration 2024-01-29 18:10:02 -05:00
Matthew Kosarek
64af9744b2 feature: set the meta key from the yaml config 2024-01-28 11:19:00 -05:00
Matthew Kosarek
da921123b6 feature: providing keybindings via a configuration; next step is loading it 2024-01-28 10:52:28 -05:00
Matthew Kosarek
166ae16d3f feature: installation for make install 2024-01-16 16:36:37 -05:00
Matthew Kosarek
bc0746c574 feature: unit testing integration + bugfix for starting in fullscreen mode (#13)
* cleanup: node interface

* bugfix: starting in fullscreen no longer breaks us

* feature: unit testing integration

* bad actions
2024-01-15 10:56:41 -05:00
Matthew Kosarek
4b999850ba bugfix: various clang-tidy tidbits 2024-01-08 18:42:04 -05:00
Matthew Kosarek
2ea798bf39 bugfix: if we start a fullscreen app, it appears fullscreen 2024-01-07 08:19:28 -05:00
Matthew Kosarek
d3643211d8 removing bogus comments and bogus files 2023-12-28 13:48:11 -05:00
Matthew Kosarek
aee7cc8363 snap support 2023-12-28 13:31:57 -05:00
Matthew Kosarek
baca05a08a refactor: delete unnecessary client code and refactor name of project 2023-12-28 10:56:38 -05:00
Matthew Kosarek
9f81b1befa enhancement: only need to keep track of the active window 2023-12-19 08:51:14 -05:00
Matthew Kosarek
1afcfad912 big cleanup: removing NodeContent in favor of a single Node, much cleaner 2023-11-30 17:41:41 -05:00
Matthew Kosarek
ed00baa8ae Shell of an initial tree implementation 2023-11-19 11:30:05 -05:00
Matthew Kosarek
f74c32a6c2 Using XDG shell to render, tada! 2023-10-30 09:20:00 -04:00
Matthew Kosarek
36dbaa08a3 Drawing a background appropriately 2023-10-27 16:26:34 -04:00
Matthew Kosarek
00e3b077e9 Merge branch 'master' of github.com:mattkae/mir-i3 2023-10-11 10:06:17 -04:00
Matthew Kosarek
c04bd458c1 Initial WIP with new files 2023-10-11 10:05:08 -04:00