aboutsummaryrefslogtreecommitdiff
path: root/src/layout/monitor.rs
AgeCommit message (Collapse)Author
2025-01-10Allow workspace names to be changed dynamically (#904)rustn00b
* 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-09Add a window swap operation (#899)rustn00b
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-04Migrate to new Rectangle functionsIvan Molodetskikh
2024-12-30Hide focus ring for unfocused layout and under interactive moveIvan Molodetskikh
2024-12-30layout: Refactor window opening targetsIvan Molodetskikh
2024-12-30Remember floating window positionIvan Molodetskikh
2024-12-30layout: Preserve the Tile when moving across workspacesIvan Molodetskikh
2024-12-30Initial WIP floating window implementationIvan Molodetskikh
2024-12-01layout: Extract ScrollingSpaceIvan Molodetskikh
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-11-29Fix new warningsIvan Molodetskikh
2024-11-29Implement empty-workspace-above-first (#745)FluxTape
* 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-25Refactor animation timing to use lazy clocksIvan Molodetskikh
2024-11-25Refactor animations to take explicit current timeIvan Molodetskikh
2024-11-23layout/monitor: Extract add_workspace_bottom()Ivan Molodetskikh
2024-10-27Implement interactive window moveRasmus Eneman
2024-10-17layout: Accept anim_config in remove_column_by_idxIvan Molodetskikh
2024-10-16layout/monitor: Extract workspace_under()Ivan Molodetskikh
2024-10-14layout: Return Tile + info upon removalIvan Molodetskikh
2024-10-14layout: Extract Monitor::workspaces_with_render_positions()Ivan Molodetskikh
2024-10-12Implement ConsumeOrExpelWindow{Left,Right} by idIvan Molodetskikh
2024-10-10layout: Add clarifying commentIvan Molodetskikh
2024-10-10layout/workspace: Reduce code duplication in adding windowsIvan Molodetskikh
2024-10-10layout: Reduce field visibilityIvan Molodetskikh
The outside code isn't supposed to mess with the fields.
2024-09-28fix focus_up_or_rightMarwin Kreuzig
2024-09-12Add SwitchPresetWindowHeight by idIvan Molodetskikh
2024-09-12 Implement preset window heightsChristian Rieger
2024-09-06Implement by-id window addressing in IPC and CLI, fix move-column-to-workspaceIvan Molodetskikh
This is a JSON-breaking change for the IPC actions that changed from unit variants to struct variants. Unfortunately, I couldn't find a way with serde to both preserve a single variant, and make it serialize to the old value when the new field is None. I don't think anyone is using these actions from JSON at the moment, so this breaking change is fine.
2024-09-01Animate focus-workspace by idx/back and forth/previousIvan Molodetskikh
Deleting the test because it only made sense when no-animation was special cased.
2024-09-01layout: Cache monitor output nameIvan Molodetskikh
2024-08-23Implement window close transactionIvan Molodetskikh
Mainly visible with disabled animations.
2024-06-19Implement vertical middle mouse gestureIvan Molodetskikh
2024-06-18Animate xdg-activation and foreign-toplevel workspace switchesIvan Molodetskikh
These are a bit jarring without an animation.
2024-06-18Refactor layout to fractional-logicalIvan Molodetskikh
Lets borders, gaps, and everything else stay pixel-perfect even with fractional scale. Allows setting fractional border widths, gaps, struts. See the new wiki .md for more details.
2024-06-17layout: Cache scale and transform on the workspaceIvan Molodetskikh
2024-06-09Add `focus-column-right-or-first`, `focus-column-left-or-last` (#391)James Sully
* add focus-column-right-or-first * add focus-column-left-or-last
2024-05-24Added actions to allow focusing up or down as normal but to wrap to the ↵Micah N Gorrell
column to the left or right if there is no window above or below
2024-05-16Make workspace names case-insensitiveIvan Molodetskikh
2024-05-16Implement named workspacesGergely Nagy
This is an implementation of named, pre-declared workspaces. With this implementation, workspaces can be declared in the configuration file by name: ``` workspace "name" { open-on-output "winit" } ``` The `open-on-output` property is optional, and can be skipped, in which case the workspace will open on the primary output. All actions that were able to target a workspace by index can now target them by either an index, or a name. In case of the command line, where we do not have types available, this means that workspace names that also pass as `u8` cannot be switched to by name, only by index. Unlike dynamic workspaces, named workspaces do not close when they are empty, they remain static. Like dynamic workspaces, named workspaces are bound to a particular output. Switching to a named workspace, or moving a window or column to one will also switch to, or move the thing in question to the output of the workspace. When reloading the configuration, newly added named workspaces will be created, and removed ones will lose their name. If any such orphaned workspace was empty, they will be removed. If they weren't, they'll remain as a dynamic workspace, without a name. Re-declaring a workspace with the same name later will create a new one. Additionally, this also implements a `open-on-workspace "<name>"` window rule. Matching windows will open on the given workspace (or the current one, if the named workspace does not exist). Signed-off-by: Gergely Nagy <niri@gergo.csillger.hu>
2024-05-11Group input-related things in a subfolderIvan Molodetskikh
2024-05-11Add a reset-window-height actionIvan Molodetskikh
2024-05-10Implement interactive mouse resizingIvan Molodetskikh
2024-05-04Split update_render_elements() from advance_animations()Ivan Molodetskikh
advance_animations() is called from places like input, whereas update_render_elements() is strictly for rendering.
2024-04-19Synchronize column removal anim on consume left/rightIvan Molodetskikh
Visible when consuming left/right when always-centered and differing horizontal view anim.
2024-04-17Resolve animation defaults during parsingIvan Molodetskikh
2024-04-16Remove jumps on consume/expel animation startIvan Molodetskikh
2024-04-14Avoid continuous redrawing during horizontal gestureIvan Molodetskikh
2024-03-24Implement block-out-from window rule, fix alpha on window screenshotsIvan Molodetskikh
2024-03-19Move PartialEq from LayoutElement to an associated typeIvan Molodetskikh
2024-03-19Workspace back and forth (#253)FluxTape
* implement workspace back and forth * Make our own ID counter instead of SerialCounter, use a newtype * Rename FocusWorkspaceBackAndForth to FocusWorkspacePrevious * Add focus-workspace-previous to tests * Don't special case in switch_workspace_previous * Minor clean up * Add switch_workspace_auto_back_and_forth to tests * Skip animation on switch_workspace_previous * Preserve previous_workspace_id on workspace movement * Make Workspace::id private with a getter Reduce the chance it gets overwritten. * Add test for workspace ID uniqueness * Update previous workspace ID upon moving workspace across monitors --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2024-03-18Take workspace switch gesture into account for visual rectIvan Molodetskikh