Ivan Molodetskikh
9f017e834c
wiki: Document new floating window rule and gesture
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
3c67b08488
floating: Implement directional move
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
4add755a4d
layout/floating: Extract move_and_animate()
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
56e249aee6
floating: Implement center_window()
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
6a7c8fcfd5
floating: Implement directional focus
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
14b1003c62
layout: Implement focus_right_or_first() generically
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
43a4bae010
Extract center_preferring_top_left_in_area()
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
9c205f77a2
layout/floating: Move a function higher up
...
Let's group action functions together. Activate is an action and set
width/height too.
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
c2e4cfd832
Stub out actions when floating is active
...
Make sure they don't go to the unfocused scrolling layout at least.
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
c008e1c5bc
floating: Implement smarter clamping for window location
...
A small part of the window always remains on-screen regardless of the working
area changes.
Interactive move lets the user position the window anywhere; automatic actions
like toggle-window-floating and dialog opening try to put the window fully
on-screen.
The size-fraction canonical floating window position remains unclamped, and
clamping happens when recomputing the logical position.
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
1aa60f0da3
Make right click during move toggle floating
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
bd1fd8383c
Stop move grab when the start button is released
...
Rather than when all buttons are released.
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
f2bec1f82f
Always honor min height in new window size
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
951f63b6fd
temp: Use patched Smithay (fix VRR cursor-plane-only)
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
e6d8932b3b
Update for Smithay VRR changes
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
70f96cca0a
Update Smithay (presentation-time v2)
2024-12-30 20:12:37 +03:00
Ivan Molodetskikh
4e357e9659
config: Fix border rule on -> off merging
2024-12-27 15:42:56 +03:00
Ivan Molodetskikh
1f8aed6732
config: Add a test for border rule on/off merging
2024-12-27 15:42:55 +03:00
Maximilian Huber
fa2bace3cd
Fix nix flake for client-server tests ( #896 )
...
This was suggested by @sodiboo in
https://github.com/YaLTeR/niri/issues/894#issuecomment-2562153840 and
was copied from https://github.com/sodiboo/niri-flake/commit/350e6b68c70f5002a75e10521f5e66ace4b5eed1i
Signed-off-by: Maximilian Huber <gh@maxhbr.de >
2024-12-26 14:44:07 +00:00
Nathan
955039b5ea
Update Configuration:-Key-Bindings.md ( #893 )
...
* Update Configuration:-Key-Bindings.md
Added Leve5 notes with scant instruction on how to use.
* Update wiki/Configuration:-Key-Bindings.md
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
2024-12-23 21:08:56 +03:00
Ivan Molodetskikh
771ea1e815
Implement client-server test infra and window opening tests
...
These tests make a real Niri instance and real Wayland clients (via manual
wayland-rs implementation), both on the same event loop local to the test. This
allows testing the full Wayland interaction, including arbitrary event ordering
and delays.
To start off, add a massive powerset test for the settings that influence where
a window may open.
2024-12-22 15:19:46 +03:00
Ivan Molodetskikh
d38bfc4aff
Add test-only single-pixel-buffer support
2024-12-22 15:19:46 +03:00
Ivan Molodetskikh
fbb0054232
Add a Headless backend for tests
...
Rendering and stuff is unimplemented.
2024-12-22 15:19:46 +03:00
Ivan Molodetskikh
2d3c36edae
Switch from k9 to insta for snapshot testing
...
We'll need some advanced features from insta.
2024-12-22 15:19:46 +03:00
Ivan Molodetskikh
8dcc41a54d
Initialize PipeWire lazily
...
This helps with:
- System setups starting PipeWire late (after niri startup, but before any
screencast).
- Tests which don't even want to start PipeWire.
2024-12-22 15:19:46 +03:00
bbb651
ba3d2e36c8
Bump MSRV to 1.80
...
It should be old enough for most distros, and allows upgrading to `zbus 5.x`
2024-12-22 15:19:46 +03:00
bbb651
b51047ffcc
Avoid implicit feature names
2024-12-22 15:19:46 +03:00
Rémi Labeyrie
b1c40a9079
fix: check for layer surface under cursor when clicking
2024-12-22 15:13:17 +03:00
Ivan Molodetskikh
b014c267ae
README: Replace Matrix badge with static
...
The dynamic one broke recently.
2024-12-20 23:07:19 +03:00
Ivan Molodetskikh
6b16cc52db
Add force-pipewire-invalid-modifier debug flag
2024-12-17 17:08:14 +03:00
Ivan Molodetskikh
d35ad73e35
wiki: Change Since 0.1.11 to Since next release
2024-12-15 16:44:35 +03:00
Ivan Molodetskikh
2a1af3d9ae
Add missing blank line
2024-12-15 10:40:09 +03:00
Ivan Molodetskikh
82e30246c1
Use gtk Notification portal
...
xdg-gnome 47 now implements notifications via GNOME Shell API which we don't
have. So force the gtk portal to make notifications work again.
2024-12-11 21:39:58 +03:00
Salman Farooq
bb3a05bb3f
Activate monitors on session unlock ( #858 )
...
So that e.g. unlocking by touching the fingerprint reader powers on the monitors.
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
Co-authored-by: Salman Farooq <46742354+SalmanFarooqShiekh@users.noreply.github.com >
2024-12-11 03:53:41 -08:00
Ivan Molodetskikh
40fa82275c
Extract rules.apply_{min,max}_size()
2024-12-09 13:25:52 +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
396089ef0e
layout: Extract Tile::verify_invariants()
2024-12-07 19:38:48 +03:00
Ivan Molodetskikh
df98b5021d
layout: Mark accessors as cfg(test)
2024-12-07 19:38:48 +03:00
sodiboo
34ce6d0b02
nix: update flake.lock
2024-12-03 05:53:48 -08:00
sodiboo
7af937b08e
nix: clang -> rustPlatform.bindgenHook
2024-12-03 05:53:48 -08: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