aboutsummaryrefslogtreecommitdiff
path: root/src/layout/workspace.rs
AgeCommit message (Collapse)Author
2024-10-27Implement touch interactive resizeIvan Molodetskikh
2024-10-27Implement interactive window moveRasmus Eneman
2024-10-19layout: Update tile config in Column::add_tile_at()Ivan Molodetskikh
2024-10-18layout: Add missing active idx check before setting activate prev on removalIvan Molodetskikh
2024-10-17layout: Use remove_column_by_idx in remove_tile_by_idxIvan Molodetskikh
2024-10-17layout: Accept anim_config in remove_column_by_idxIvan Molodetskikh
2024-10-14layout: Return Tile + info upon removalIvan Molodetskikh
2024-10-12layout: Fix expel animation of the smaller window in columnIvan Molodetskikh
2024-10-12Implement ConsumeOrExpelWindow{Left,Right} by idIvan Molodetskikh
2024-10-12layout/workspace: Add add_tile_to_column()Ivan Molodetskikh
2024-10-11Support empty column in tile_offsetsIvan Molodetskikh
Will be needed for the new inserting tile code.
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-10-05use `if let Some()` over `match` with `None => ()`sodiboo
2024-09-12Always clamp non-auto window height with >1 windows in columnIvan Molodetskikh
2024-09-12Update commentsIvan Molodetskikh
2024-09-12Add SwitchPresetWindowHeight by idIvan Molodetskikh
2024-09-12 Implement preset window heightsChristian Rieger
2024-09-06Fix set-window-height SetProportion scaleIvan Molodetskikh
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-05implement always_center_single_column layout optionelkowar
2024-09-04layout: Prevent view gesture snap beyond first/last columnIvan Molodetskikh
2024-09-04layout: Extract snap_points()Ivan Molodetskikh
2024-09-03Use libdisplay-info for make/model/serial parsing, implement throughoutIvan Molodetskikh
2024-09-01Implement by-id workspace action addressingIvan Molodetskikh
It's not added to clap because there's no convenient mutually-exclusive argument enum derive yet (to have either the current <REFERENCE> or an --id <ID>). It's not added to config parsing because I don't see how it could be useful there. As such, it's only accessible through raw IPC.
2024-09-01Change IdCounter to be backed by an AtomicU64Ivan Molodetskikh
Let's see if anyone complains.
2024-09-01Make WorkspaceId inner field privateIvan Molodetskikh
2024-09-01Implement the event stream IPCIvan Molodetskikh
2024-08-25layout: Break out early on min sizeIvan Molodetskikh
2024-08-25layout: Fix rounding in height distributionIvan Molodetskikh
Rounding before checking min height could artificially increase the window height that we check, leading to an incorrectly satisfied min constraint.
2024-08-25layout: Clamp window height to max available in columnIvan Molodetskikh
When the window is alone in its column this logic intentionally isn't triggered. Until we have a floating layer, there's no other way to get a window larger than the screen, which I need.
2024-08-23Implement window close transactionIvan Molodetskikh
Mainly visible with disabled animations.
2024-08-22Implement resize transactionsIvan Molodetskikh
2024-08-22Implement window resize throttlingIvan Molodetskikh
2024-08-15layout: Do not recompute total_weight every iterationIvan Molodetskikh
2024-08-15layout: Implement weighted height distributionIvan Molodetskikh
The intention is to make columns add up to the working area height most of the time, while still preserving the ability to have one fixed-height window. Automatic heights are now distributed according to their weight, rather than evenly. This is similar to flex-grow in CSS or fraction in Typst. Resizing one window in a column still makes that window fixed, however it changes all other windows to automatic height, computing their weights in such a way as to preserve their apparent heights.
2024-08-15layout: Pre-subtract gaps during height distributionIvan Molodetskikh
Same result, but code a bit clearer.
2024-07-09Fix view offset anim restart on switching focusIvan Molodetskikh
2024-07-09Add tolerance to view offset anim restart checkIvan Molodetskikh
It was getting tripped by tiny differences.
2024-07-05Implement focus-follows-mouse max-scroll-amountIvan Molodetskikh
2024-07-05Refactor and simplify new view offset calculationIvan Molodetskikh
* Split new offset computation from starting the animation. * Simplify new column on empty workspace logic.
2024-06-19Somewhat fix height distribution logicIvan Molodetskikh
This got a bit broken with fractional layout. The current logic seems to give exact results for integer scales again, but for fractional scales sometimes the resulting height goes beyond the maximum, even clearly by more than one logical pixel. Not entirely sure why that is.
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-17Fix cached data not updating on config changeIvan Molodetskikh
2024-06-17layout: Cache scale and transform on the workspaceIvan Molodetskikh
2024-06-10Signal fractional scale to clientsIvan Molodetskikh
Doesn't do anything yet because we don't bind the fractional scale manager and don't allow fractional scales.
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-06-09Fix typos (#429)Ujp8LfXBJ6wCPR
* Fix typos reported by "typos" crate https://github.com/crate-ci/typos * Ignore typo datas -> data See https://github.com/crate-ci/typos?tab=readme-ov-file#false-positives for more configureability. --------- Co-authored-by: Carl Hjerpe <git@hjerpe.xyz> Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2024-06-04Add missing fullscreen checkIvan Molodetskikh
Fixes crash when a window in a column requests to be unfullscreened.
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>