Commit Graph

51 Commits

Author SHA1 Message Date
13f01bcb4b render: do basic yes/no damage tracking 2021-05-24 16:43:21 +02:00
89e0d4c083 river: remove Root.server
The server is now global so this is no longer needed.
2021-05-13 14:26:27 +02:00
f72656b72e river-layout: create and implement protocol
Replace the current layout mechanism based on passing args to a child
process and parsing it's stdout with a new wayland protocol. This much
more robust and allows for more featureful layout generators.

Co-authored-by: Isaac Freund <ifreund@ifreund.xyz>
2021-04-20 18:27:03 +02:00
9e3e92050e river: update for wlroots 0.13.0 2021-04-08 00:21:17 +02:00
5887d54f04 Deny move/resize requests from tiled XdgToplevel Views 2021-02-17 14:42:23 +01:00
fb7d50a019 xdg shell: use XdgSurface.getGeometry()
This is important to use instead of direct access as clients are not
strictly required to set a geometry, in which caese the dimensions
of the wl_surface are used instead.
2021-02-14 16:55:24 +01:00
98d51f6d24 Use std.log instead of log.zig 2021-02-08 18:35:11 +01:00
b73cb7bb69 render: draw popups over borders 2021-01-05 20:05:35 +01:00
a2ef687e51 view: fix handling of title/app_id change 2021-01-01 13:29:57 +01:00
cc08be2dee code: clean up listener initialization 2020-12-31 15:35:35 +01:00
760c88b094 foreign-toplevel-management: basic implementation
We do no yet set the parent of toplevels. We also only honor activate
requests if the target view is already visible on the focused output.
2020-12-24 13:07:59 +01:00
20d804cdb5 code: switch to custom wlroots/libwayland bindings
This is a big step up over @cImport() for ergonomics and type safety.
Nearly all void pointer casts have been eliminated!
2020-12-13 22:53:33 +01:00
f80992e329 meta: make copyright headers more maintainable
- list all files as copyright "The River Developers"
- add an AUTHORS file to acknowledge contributors
2020-11-11 20:33:43 +01:00
ac1762567c Send zriver_seat_status_v1.focused_view when title of focused view changes 2020-10-25 17:28:13 +01:00
e4a3698d86 view: update comments
These should have been moved in the previous commit
2020-10-22 19:24:01 +02:00
79dc9cc49a xwayland: make behavior more like xdg toplevels
- float fixed size xwayland windows by default
- align configure handling with that of xdg toplevel views
2020-10-22 19:22:54 +02:00
ec5d5e8826 Move Cursor.Mode impl functions to Cursor 2020-10-17 23:42:37 +02:00
d5d1e87a95 Implement XDG-Toplevel move and resize request handlers 2020-10-17 23:42:37 +02:00
bb23464322 Send view tags when applying pending state in XdgToplevel.zig 2020-10-05 23:03:57 +02:00
b67ea748a3 Implement configurable view opacity with fade effect 2020-10-05 23:03:57 +02:00
1fbaaa55b3 xdg-toplevel: clean up initialization 2020-08-21 16:45:27 +02:00
fa08d85c58 view: implement frame-perfect destroy
river's View objects may now outlive their wlroots counterparts so that
we can continue to render a destroyed view until the transaction is
completed.
2020-08-21 16:31:39 +02:00
bd99428766 view: handle setting fullscreen in configure() 2020-08-13 11:17:15 +02:00
2669a615b6 root: refactor transaction initiation
- require the caller to use Root.startTransaction() directly
- introduce View.applyPending() to unify logic
- introduce View.shouldTrackConfigure() to unify more logic
- update all callsites to intelligently rearrange only what is necessary
2020-08-13 11:17:15 +02:00
946e4f21ba Enforce minimum window size also for views with constraints 2020-08-10 22:15:09 +02:00
96a91fd2f7 view: double buffer focus, use counter not bool
- Double buffering focus state ensures that border color is kept in sync
with the transaction state of views in the layout.
- Using a counter instead of a bool will allow for proper handling of
multiple seats. This is done in the same commit to avoid more churn in
the future.
2020-08-03 18:54:18 +02:00
ef4efbcadf view: fix xdg_toplevel fullscreen request handling 2020-08-01 19:56:34 +02:00
7a244092e5 view: sidestep transaction for float/fullscreen
Transactions are only useful when multiple views need to atomically
change size together. Float/fullscreen views are independant of the
layout and should bypass the transaction system.
2020-07-31 17:06:26 +02:00
9f3ee76e51 cursor: implement resize 2020-07-31 17:06:26 +02:00
228c2c372f Fix bug causing XDG toplevels with a parent to not respect the CSD filter 2020-07-16 21:24:08 +02:00
be29b0ef95 Implement csd_filter list 2020-07-16 17:08:19 +02:00
341fe1e977 code: handle out of memory as well as possible 2020-07-05 22:49:17 +02:00
34d42d9e8c xdg-shell: honor fullscreen requests 2020-06-29 11:52:53 +02:00
c78d31acf4 view: save and restore floating dimensions
When a floating view is fullscreened and returned to floating, it should
remember its previous floating size/position.
2020-06-29 11:15:55 +02:00
3cbd95fadc river: implement toggle-fullscreen
The command works, but behaves a little strangely. Also, fullscreen
views are not yet rendered on an opqaue backdrop.
2020-06-29 01:00:57 +02:00
82a444a7c0 view: use saved geometry for borders if needed
This fixes the issues caused by 60f06a1 and greatly simplifies the code.
Turns out we were already tracking the dimensions needed.
2020-06-28 20:45:17 +02:00
5b96d831d3 view: replace mode with float/fullscreen bools
The enum would be awkward here since if a view is fullscreened while
floating it should still be floating when defullscreened.
2020-06-28 20:30:12 +02:00
60f06a1a40 view: draw borders around actual dimensions
Previously if the view did not take the size requested, we would draw
the borders around the size we asked the view to take rather than its
actual size.
2020-06-28 01:46:53 +02:00
9dfcec72a8 view: simplify default float dimension handling 2020-06-27 23:48:04 +02:00
c04112b81a view: introduce state struct to simplify code
The state struct holds all of the state that is double-buffered and
applied through transactions. This more explicit handling simplifies
much of the code, and will allow for easier implementation of new
feature such as fullscreen.
2020-06-27 23:18:41 +02:00
89d0fb012d view: use a mode enum instead of floating bool
This is in preperation for fullscreen support which will add another
mode to this enum.

This commit also fixes a bug that allowed clicking floating views though
layout views in some cases.
2020-06-27 18:12:18 +02:00
12d34d4ded bikeshed: rename util.allocator to util.gpa
This is less typing and more clear. A definite win.
2020-06-19 14:32:30 +02:00
d74323bbbf code: improve logging functions
this implements a modified version of the logging interface proposed
here: https://github.com/ziglang/zig/pull/5348
2020-06-17 01:31:38 +02:00
c5de1641dc code: create util.allocator and use globally
river is not a library and passing a general purpose allocators around
everywhere does not make sense and leads to ugly code. This does not
prevent us from using local arenas if they are fitting.
2020-06-16 22:48:08 +02:00
fb8d855ec9 code: create voidCast() util function 2020-06-16 20:54:05 +02:00
e1a1459177 xdg-shell: improve child handling
- wait until map to send tiled state
- only set toplevels with no parent to tiled (toplevels with a parent
are generally popup-like things such as a file chooser or yes/no prompt)
- track dimesions and offset of the surface and take offset into account
for rendering.
2020-06-13 23:38:00 +02:00
052c8e1dcb transactions: handle preemption take 2
This implementation is far simpler than c0d7e71 as it takes advantage of
wlroots's tracking of pending state.

Additionally, we now send frame done events if a view that we are
configuring commits with the wrong dimensions. This is necessary in
order to trigger a redraw for some clients as well as being a more
correct implementation of the protocol.
2020-06-09 20:06:30 +02:00
24b1a566de transactions: revert c0d7e71 2020-06-09 17:04:38 +02:00
c0d7e71ec4 transactions: handle preemption properly
when a transaction interrupts an ongoing transaction, we must be careful
to handle the configures properly. This commit adds a new member to view
so that we can store the dimensions sent with the last configure in
order to determine if the preempting transaction should override the
ongoing configure or not.

Additionally, some views do not ack a configure if they already have the
requested dimensions. This can happen if a pending configure setting
alternative dimensions is overridden, so in this case we do not wait for
an ack before committing the transaction.
2020-06-08 00:10:30 +02:00
5aa7fe8af8 river-status: implement protocol 2020-06-04 16:56:58 +02:00