aboutsummaryrefslogtreecommitdiff
path: root/src/layout/monitor.rs
AgeCommit message (Collapse)Author
2025-03-29Add focus argument to move-window-to-workspace (#1332)nyx
* layout: add focus flag to move-window-to-workspace * lib: update comment * misc: minor dup refactor * input: format code * layout: minor nit * layout: update comment * input: remove unnecessary conditionals * misc: replace boolean * tests: fix the failing one * layout: change to smart * ipc: Option<bool> -> bool * lib: format code * Rewrite focus doc comment --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-02-27layout/monitor: Remove unused functionIvan Molodetskikh
2025-02-27layout/monitor: Remove redundant passthrough functionsIvan Molodetskikh
2025-02-17Implement expand-column-to-available-widthIvan Molodetskikh
2025-02-10Add set-column-display actionIvan Molodetskikh
2025-02-10Implement tabbed column display modeIvan Molodetskikh
2025-02-10Account for border in contents_under()Ivan Molodetskikh
Fixes pointer clicks going through window borders to a layer surface below, also fixes window not getting activated in all cases from a border click.
2025-02-05Add focus-window-in-column (by index) actionIvan Molodetskikh
2025-02-05Add focus-window-top/bottom/down-or-top/up-or-bottom actionsIvan Molodetskikh
2025-01-29layout: Do not update original output for named workspaces upon adding windowsIvan Molodetskikh
The way named workspaces are generally used makes them more "attached" to their original output. For example, you have a two-monitor setup with named workspaces on both. When you disconnect the monitor to go somewhere and work for a while, then return, you probably want your named workspaces to return to where they were on your second monitor. This is in contrast to unnamed workspaces which are more transient and should more easily follow you wherever you're working.
2025-01-25Add move-workspace-to-index and move-workspace-to-monitor actions (#1007)Kirottu
* Added move-workspace-to-index and move-workspace-to-monitor IPC actions * Added redraws to the workspace handling actions, fixed tests that panicked, fixed other mentioned problems. * Fixed workspace focusing and handling numbered workspaces with `move-workspace-to-index` * Fixed more inconsistencies with move-workspace-to-monitor * Added back `self.workspace_switch = None` * Reordered some workspace cleanup logic * Fix formatting * Add missing blank lines * Fix moving workspace to same monitor and wrong current index updating * Move function up and add fixme comment --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-01-10Fix new Clippy warningsIvan Molodetskikh
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>