Ivan Molodetskikh
6fcdb41922
Refactor layout for configurability, add preset-column-widths option
...
layout.rs finally gets a struct actually named Layout.
2023-10-05 09:25:07 +04:00
Ivan Molodetskikh
1bcc889e62
Add tablet map-to-output setting
2023-10-03 17:02:07 +04:00
Ivan Molodetskikh
ba0a6d6b88
Remove accidentally committed debug element
2023-10-02 18:55:10 +04:00
Ivan Molodetskikh
382c049b5a
Send output enter/leave to pointer and DnD surfaces
...
This allows them to apply the right scale factor.
2023-10-02 18:48:41 +04:00
Kirill Chibisov
9168f08038
protocols: add wlr_data_control
...
Also update smithay to the latest git hash.
Fixes #20 .
2023-10-02 16:28:08 +03:00
Ivan Molodetskikh
5b6b3fcfbe
Avoid sending frame callbacks to invisible surfaces
2023-10-01 19:41:42 +04:00
Kirill Chibisov
d8a511bbac
config/input: add cursor section
...
This should allow users to configure theme and size for the cursor,
as well as automatically set `XCURSOR_THEME` and `XCURSOR_SIZE` env
variables.
2023-10-01 17:50:42 +03:00
Ivan Molodetskikh
8d443c2e84
Make default cursor respect output scale
...
First part of https://github.com/YaLTeR/niri/issues/16
2023-10-01 08:03:12 +04:00
Kirill Chibisov
d39da3f461
protocols: add IME protocols
...
This commit adds support for the `input_method_v2`, `text_input_v3`,
and `virtual_keyboard`. The implementation follows the one in the
anvil and catacomb, but those protocols are mostly enabled and
forget type of things.
Fixes #22 .
2023-10-01 06:29:33 +03:00
Ivan Molodetskikh
a3aa5fca12
Refactor frame scheduling
...
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-30 17:13:56 +04:00
Ivan Molodetskikh
21737abbfd
Make output position configurable
...
Implements https://github.com/YaLTeR/niri/issues/14
2023-09-30 11:33:02 +04:00
Ivan Molodetskikh
f381db8354
Make pipewire / xdp-gnome-screencast optional
2023-09-30 09:58:34 +04:00
Ivan Molodetskikh
404661ed8d
Throttle frame callbacks to once per monitor refresh
...
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-29 13:12:50 +04:00
Kirill Chibisov
804e064826
shell: add support for kde server decorations
...
This should provide server side decorations for the gtk3 applications,
like firefox.
2023-09-27 18:38:38 +04:00
Ivan Molodetskikh
5d8bb2589e
Fix layer-shell render layering
2023-09-27 08:50:00 +04:00
Ivan Molodetskikh
93369e1958
Implement primary selecton
...
Firefox clipboard doesn't always work without it.
2023-09-26 22:22:11 +04:00
Ivan Molodetskikh
953d1064c2
Add layer shell exclusive zone support
2023-09-26 20:12:04 +04:00
Ivan Molodetskikh
4a585a3293
Add initial config hot reloading
2023-09-26 19:24:50 +04:00
Ivan Molodetskikh
80928632ba
Add prefer-no-csd option
2023-09-26 13:45:03 +04:00
Ivan Molodetskikh
a62e1cbef6
Make focus ring configurable
2023-09-26 13:45:03 +04:00
Ivan Molodetskikh
906ee36a93
Skip rendering when backend is inactive
2023-09-26 13:45:03 +04:00
Ivan Molodetskikh
ac16717f4e
Avoid unwraps in more places
2023-09-26 13:45:03 +04:00
Ivan Molodetskikh
fb43dcd61e
Remove obsolete comment
2023-09-26 13:45:03 +04:00
Ivan Molodetskikh
cd4f7c0378
Remove LoopData
...
The calloop Smithay update finally lets me do this.
2023-09-26 13:45:03 +04:00
Ivan Molodetskikh
c422fdab0f
Update Smithay
2023-09-26 13:45:03 +04:00
Ivan Molodetskikh
f58e56d65a
Add focus rings
2023-09-24 18:11:20 +04:00
Ivan Molodetskikh
109668fa30
Add output configuration & integer scaling support
2023-09-21 13:48:50 +04:00
Ivan Molodetskikh
dbcd667877
niri: Fix Output global creation and removal
2023-09-21 13:48:50 +04:00
Ivan Molodetskikh
9fc731c115
Plot target presentation time offset
2023-09-20 11:51:25 +04:00
Ivan Molodetskikh
1963aaa775
Add initial impl of org.gnome.Shell.Screenshot
...
Enough to make the portal all-outputs screenshot work. With this,
Flameshot kinda-works.
2023-09-20 09:28:23 +04:00
Ivan Molodetskikh
8b4f2cf483
niri: Add include_pointer argument to render()
2023-09-20 09:22:39 +04:00
Ivan Molodetskikh
1c85230d18
niri: Make render helpers generic over RenderElement
2023-09-20 09:22:15 +04:00
Ivan Molodetskikh
e88577bc82
niri: Extract render_to_vec()
2023-09-19 19:08:45 +04:00
Ivan Molodetskikh
69f561cd6f
Extract make_screenshot_path()
2023-09-19 19:05:03 +04:00
Ivan Molodetskikh
99b945c385
Allow replacement of screencast and displayconfig dbus
...
This way the session can start with those dbus services registered, but
then for debugging they can be subsequently replaced anyway.
2023-09-19 16:46:13 +04:00
Kirill Chibisov
b66b4399ad
Add keyboard.repeat-rate and keyboard.repeat-delay
...
Add option to let the users configure the keyboard repeat delay and
rate. Also change the default values to mimic the Xorg, which is
also the values used by default by the majority of the compositors.
Fixes : #7
2023-09-16 18:13:52 +03:00
Ivan Molodetskikh
89f9e11f65
Store Config as Rc<RefCell<>> field
2023-09-14 22:43:24 +04:00
Ivan Molodetskikh
092095ead0
Add debug flag to wait for frame completion
2023-09-14 09:33:42 +04:00
Ivan Molodetskikh
07c4632165
Update dependencies
2023-09-11 19:24:09 +04:00
Ivan Molodetskikh
d52ca23caa
Add initial monitor screencast portal impl
...
DmaBuf monitor screencasting through xdg-dekstop-portal-gnome!
Somewhat limited currently, e.g. the cursor is always embedded. But gets
most of the job done.
2023-09-08 23:53:56 +04:00
Ivan Molodetskikh
72d6b387e7
Fix extra ref
2023-09-05 17:28:07 +04:00
Ivan Molodetskikh
5225bc9e55
Add configuration file
2023-09-05 12:58:59 +04:00
Ivan Molodetskikh
1947a77fd8
niri: Remove start_time
2023-09-04 14:27:48 +04:00
Ivan Molodetskikh
7eaf9ec2b0
Use monotonic time as frame callback time
2023-09-04 14:27:16 +04:00
Ivan Molodetskikh
95cbe2a636
Send scanout feedbacks to surfaces
2023-09-03 15:15:55 +04:00
Ivan Molodetskikh
03a9fd8af3
Move all traits one layer up
2023-09-03 14:10:02 +04:00
Ivan Molodetskikh
dcc6a55777
Move LoopData into niri file
2023-09-03 13:25:43 +04:00
Ivan Molodetskikh
73d7a1d73d
Remove DisplayHandle from LoopData
2023-09-03 13:14:20 +04:00
Ivan Molodetskikh
5a707c879b
Replace Backend trait with enum
2023-09-03 13:04:32 +04:00
Ivan Molodetskikh
2187661ff8
Inhibit power key when systemd service
...
This way we can suspend on power key rather than poweroff.
2023-09-03 10:28:00 +04:00