aboutsummaryrefslogtreecommitdiff
path: root/src/layout.rs
AgeCommit message (Collapse)Author
2023-12-19Implement popup unconstrainingIvan Molodetskikh
Using my new Smithay implementation.
2023-12-19Add optional fallback to workspace focus/move for window focus/move (#93)Matt Cuneo
* Add optional fallback to workspace focus/move for window focus/move commands * Refactored to separate commands * fix indentation * fix white space * Stylistic fixes --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2023-12-05Prevent stealing focus from fullscreen clientsIvan Molodetskikh
Got hit by that Syncthing disconnect dialog a few times while playing games.
2023-11-24layout: Add hack to work around maximized GTK damageIvan Molodetskikh
2023-11-24layout: Switch to workspace on window activation if not transitioningIvan Molodetskikh
This should not be possible to trigger at the moment, but with xdg-activation it will be.
2023-11-24layout: Change workspace by idx functions to accept 0-based usizeIvan Molodetskikh
Makes more sense to do the converstion at the top of the call stack.
2023-11-13Add an action to center column within view bound to Ctrl-CIvan Molodetskikh
2023-11-13Preserve column width when toggling off full widthIvan Molodetskikh
2023-11-08Add set-window-height actionIvan Molodetskikh
2023-11-08layout: Implement auto height distributionIvan Molodetskikh
Takes into account min and, partially, max window heights, and adds 1 px when necessary to account for uneven division.
2023-11-08layout: Add window heights to columnsIvan Molodetskikh
2023-11-03Add default-column-width settingIvan Molodetskikh
2023-11-02Render top layer under fullscreen surfaces when stationaryIvan Molodetskikh
2023-11-02Add a check for primary monitor workspace invariantIvan Molodetskikh
2023-11-01Preserve column width on window actionsIvan Molodetskikh
Fixes https://github.com/YaLTeR/niri/issues/53
2023-11-01Fix losing track of window on move to output if there are noneIvan Molodetskikh
2023-11-01layout: Change with_surfaces to set_preferred_scale_transformIvan Molodetskikh
The former is too specific to concrete Window and not as amenable to testing.
2023-10-29Add support for wl_compositor@v6Kirill Chibisov
2023-10-21Use correct workspace vertical position for renderingIvan Molodetskikh
2023-10-21Stop updating focus during transitionsIvan Molodetskikh
This also includes touchpad swipes.
2023-10-21Remove assert on activating window on inactive workspaceIvan Molodetskikh
2023-10-21Rename variables to be less confusingIvan Molodetskikh
2023-10-21Crop workspaces during transition tightlyIvan Molodetskikh
2023-10-14Add binds to move workspaces up and downIvan Molodetskikh
2023-10-14Add check for no empty workspaces invariantIvan Molodetskikh
2023-10-14Fix moving empty workspaces to original outputIvan Molodetskikh
2023-10-14Fix by-idx workspace actions not cleaning upIvan Molodetskikh
2023-10-14Fix removing output not keeping empty focus on primaryIvan Molodetskikh
2023-10-14Fix assertion messageIvan Molodetskikh
2023-10-11Add a few more Tracy spansIvan Molodetskikh
2023-10-11Draw focus ring as border on SSD windowsIvan Molodetskikh
With SSD we're reasonably sure that the window is a rectangle with no rounded corners, so a rectangular border should work.
2023-10-11layout: Store location in FocusRingIvan Molodetskikh
2023-10-10Add screenshot-window actionIvan Molodetskikh
2023-10-08Add barebones three-finger-swipe workspace switchIvan Molodetskikh
Notable omission is velocity tracking.
2023-10-07Update bounds of toplevel windowsIvan Molodetskikh
2023-10-07Add gaps settingIvan Molodetskikh
The past few refactors have led up to this point, and now it's finally possible.
2023-10-07layout: Refactor view offset, padding, work area handlingIvan Molodetskikh
Fixes broken padding on fullscreen windows, especially with struts on the sides present. It is now view offset's job to include padding and struts.
2023-10-05layout: Add every_op test from starting stateIvan Molodetskikh
2023-10-05layout: Handle padding in ColumnWidth::resolve()Ivan Molodetskikh
2023-10-05Refactor layout for configurability, add preset-column-widths optionIvan Molodetskikh
layout.rs finally gets a struct actually named Layout.
2023-10-04layout: Store view size in ColumnsIvan Molodetskikh
2023-10-03Add set-column-width actionIvan Molodetskikh
2023-10-01Avoid sending frame callbacks to invisible surfacesIvan Molodetskikh
2023-10-01Make find_window_and_output() accept non-mut selfIvan Molodetskikh
2023-09-30Compute view offset relative to anim targetIvan Molodetskikh
This enables quickly tapping focus right-left to keep typing in the current window while showing the next window. Resolves https://github.com/YaLTeR/niri/issues/26
2023-09-30Refactor frame schedulingIvan Molodetskikh
Combine the redraw state variables into one enum, and refactor to get rid of the requirement that a VBlank must queue a subsequent redraw. Also fix the bug where ongoing animations that produced no damage could stall the redrawing.
2023-09-29Throttle frame callbacks to once per monitor refreshIvan Molodetskikh
Under some circumstances, the compositor can get into a commit-frame callback busy loop with a client. For example, if a client redraws on frame callbacks, but the resulting frame has empty damage (e.g. the damaged part of the client is outside the monitor). Or if the client simply commits with empty damage (looking at you, Firefox). This behavior is compliant with the Wayland specification and with the intended idea of frame callbacks, but causes a lot of unnecessary CPU usage in the client and the compositor. To solve this problem, this commit introduces frame callback throttling. Every surface may only receive a single frame callback in one monitor refresh cycle. If a surface commits resulting in no KMS frame submission, a timer is created, that will fire at the predicted would- be-VBlank time, and send the accumulated frame callbacks. This way, a surface that redraws on frame callbacks will not notice any change in frame callback delivery, if its commits suddenly stop producing KMS updates.
2023-09-28layout: Add communicate op to testsIvan Molodetskikh
2023-09-28layout: Refresh windows tooIvan Molodetskikh
This will send output enter/leave to new popups.
2023-09-27layout: Use actual working area on workspace creationIvan Molodetskikh
Fixes https://github.com/YaLTeR/niri/issues/19