Ivan Molodetskikh
623687e59b
Fix new Clippy warnings
2025-01-10 09:11:31 +03:00
rustn00b
5958d3be62
Allow workspace names to be changed dynamically ( #904 )
...
* Add un/set workspace name actions
* Add SetWorkspaceName reference to proptests
* Simplify unname_workspace
* Add ewaf version of set first workspace name test
* Simplify more
* Fix comment
* Make workspace in set-workspace-name a positional option
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
2025-01-10 06:03:19 +00:00
Ivan Molodetskikh
142e57450d
Add missing interactively moved window check in center_window
2025-01-09 11:55:01 +03:00
rustn00b
80815a1591
Add a window swap operation ( #899 )
...
Swap the active window with the a neighboring column's active window.
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
Take into account PR comments
- no longer behave like an expel when a swap is made in a direction
where there is no column to swap with
- fix janky animation
2025-01-09 08:29:36 +00:00
Ivan Molodetskikh
a2f9d132a0
Migrate to new Rectangle functions
2025-01-04 11:22:56 +03:00
Ivan Molodetskikh
a7c57f4faf
Add toggle-window-width by-id action
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
8409107a5b
Implement default-window-height for scrolling windows
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
9089c3fb02
Fix move-window-to-workspace panic when wrong monitor is active
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
6c897d5201
Add center-window by-id action
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
be05b66ac3
Hide focus ring for unfocused layout and under interactive move
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
4ea4d2bd3b
layout: Add animate arg to move_floating_window()
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
6c52077d92
Add move-floating-window action
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
5b4750a009
Add focus-floating/tiling actions
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
ad50dd21fe
Add move-window-to-floating/tiling actions
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
8b0cb0bb57
Add set-window-width action
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
a24a6e4e3c
Implement is-floating window rule matcher
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
daaee43be3
layout: Refactor window opening targets
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
28b78a563b
layout: Pass and store view_size on a Tile
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
2f380de73b
floating: Take into account non-fixed min/max size window rule
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
3e13fc3e70
floating: Change from getters to pub(super)
...
These fields are just data storage. They won't have any logic in
getters/setters.
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
88116b9fb1
Preserve tile when moving across monitors
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
53e1c58cc5
Remember floating window position
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
4b9ecdd11d
Render fullscreen scrolling windows on top of floating
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
5488aaf69f
floating: Don't use fullscreen size as floating size
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
96e493d8b1
Restore floating size during interactive move
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
e409453fbd
floating: Update stored size only on removal
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
309bf1348c
floating: Improve expected size requests to avoid (0, 0) and duplicates
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
f4f2a1f6de
floating: Remember and restore window size
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
c359672bd2
floating: Request size only once
...
Let floating windows resize themselves and keep that size.
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
38350935e6
layout: Rename update_interactive_resize() to on_commit()
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
421cd89a0f
layout: Accept &mut self in request_fullscreen()
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
f38acfe988
layout: Remember whether to unfullscreen back into floating
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
aac54d0ea1
Implement floating child stacking above parents
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
4fe718581b
layout: Extract TestWindowParams
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
71842f07bd
Make interactive move keep in the same layout (floating/tiling)
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
10460191b9
Honor min/max size in more places like initial configure
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
c5fffd6e2c
Initial WIP floating window implementation
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
9824321fc9
layout: Return instead of breaking
...
There's no code past this, and we want to break out of all loops.
2024-12-08 09:25:39 +03:00
Ivan Molodetskikh
27e607ab82
layout: Return bool from activate_window()
...
Avoid an extra has_window() call.
2024-12-08 09:25:27 +03:00
Ivan Molodetskikh
a2b27b8790
layout: Ignore more actions during interactive move
...
The interactively moved window is the active window, so this makes sense.
2024-12-07 19:38:48 +03:00
Ivan Molodetskikh
8665003269
layout: Extract ScrollingSpace
...
Leave the Workspace to do the workspace parts, and extract the scrolling parts
into a new file. This is a pre-requisite for things like the floating layer
(which will live in a workspace alongside the scrolling layer).
As part of this huge refactor, I found and fixed at least these issues:
- Wrong horizontal popup unconstraining for a smaller window in an
always-centered column.
- Wrong workspace switch in focus_up_or_right().
2024-12-01 22:24:21 -08:00
Ivan Molodetskikh
1e76716819
layout: Add a test for windows on other workspace remaining activated
2024-12-01 22:24:21 -08:00
Ivan Molodetskikh
91a42fdf58
layout: Fix windows on other workspaces losing activated state
...
This erroneous check was introduced in interactive move.
2024-12-01 22:24:21 -08:00
Ivan Molodetskikh
5ed5243be6
layout: Fix possible crash when dropping move on different, animating output
2024-12-01 22:24:21 -08:00
Christian Meissl
305fc3b557
Activate newly mapped windows with a valid activation token
...
most of the time the activation token is passed
while the window is still unmapped. in this case
store the intend to activate the window for
later retrieval on map.
2024-11-29 21:57:36 -08:00
FluxTape
11f351dbeb
Implement empty-workspace-above-first ( #745 )
...
* Implement empty-workspace-above-first option
* add two failing tests
* fix interactive_move_onto_empty_output_ewaf and
interactive_move_onto_first_empty_workspace tests
* Add two failing ewaf option toggle tests
* Fix adding/removing first empty workspace on option toggle
* Don't remove first empty workspace if focused
* Stop workspace switch when enabling ewaf
* layout/monitor: Offset workspace switch on adding workspace above
* Fix some initial active workspace ids with ewaf
* wiki: Document empty-workspace-above-first
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
2024-11-29 08:46:13 +03:00
Ivan Molodetskikh
815fa379ea
layout: Stop workspace switch when moving workspaces to primary
...
Okay, this might be one of the oldest layout issues to have remained uncaught.
Well, maybe as I add more randomized tests, I'll catch even more of those.
2024-11-27 20:55:20 +03:00
Ivan Molodetskikh
4c480a1ea3
layout/tests: Add post option update to randomized test
...
Will help to catch cases where updating options doesn't update the state
correctly.
2024-11-26 22:02:46 +03:00
Ivan Molodetskikh
fa4aa0e06d
layout: Fix adjusting for scale for moved tile when reloading config
2024-11-26 22:01:26 +03:00
Ivan Molodetskikh
e2a6374bf5
layout/tests: Return Layout from check_ops()
...
Cuts down on boilerplate in a few places.
2024-11-26 22:00:44 +03:00