Marten Ringwelski
b2b1a1f5e1
render: remove unnecessary call to wlr_output_effective_resolution
2020-12-12 16:35:33 +01:00
Isaac Freund
d099b167d2
config: free filter list items
2020-12-10 19:42:53 +01:00
Marten Ringwelski
49bf0e679f
focus-follow-cursor: Change output focus when needed
2020-12-07 13:51:06 +01:00
Marten Ringwelski
0fecdf60cb
Ignore custom mode requests
2020-12-07 11:47:55 +01:00
Marten Ringwelski
c3b8986054
Implement wlr_output_management_unstable_v1
2020-12-07 11:47:55 +01:00
Marten Ringwelski
4b7246685f
code: Fix render call width and height
2020-12-07 11:47:55 +01:00
Marten Ringwelski
157dccbbbb
code: Add Root.all_outputs
2020-12-07 11:47:55 +01:00
Marten Ringwelski
10373da634
code: Add Root.removeOutput
2020-12-07 11:47:55 +01:00
Marten Ringwelski
fc549d6249
code: Refactor Root.addOutput
2020-12-07 11:47:55 +01:00
Marten Ringwelski
0dd8197f03
code: Introduce OutputManager
2020-12-07 11:47:55 +01:00
Isaac Freund
dae6c06e0c
screencopy: add workaround for wlroots bug
...
Currently screencopy's copy_with_damage request is broken for
compositors not submitting damage. As a workaround simply damage
the whole output each frame.
2020-12-05 01:10:06 +01:00
Isaac Freund
807d4a4212
keyboard: handle destruction
2020-11-29 21:05:27 +01:00
Isaac Freund
f1e5f1aacb
style: fix zig fmt regression
...
CI works now so this shouldn't happen again
2020-11-21 11:53:37 +01:00
Marten Ringwelski
7d0014cd38
code: Set wlroots loglevel based on -l flag
2020-11-19 21:18:43 +01:00
Bonicgamer
cbd4a2807b
control: implement set-repeat
2020-11-18 15:28:33 +01:00
Leon Henrik Plickat
1626203c44
Add default config location
2020-11-18 15:15:22 +01:00
Isaac Freund
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
Isaac Freund
77d3eb1bf0
layer-shell: render all popups over top layer
...
This means the popups belonging to e.g. a surface in the background
layer will be rendered over views.
2020-11-10 12:12:56 +01:00
Isaac Freund
a90ddd305b
code: use zig 0.7.0 and wlroots 0.12.0
2020-11-10 11:46:03 +01:00
Isaac Freund
2b24e55375
server: drop gtk-primary-selection support
2020-11-03 16:10:50 +01:00
Marten Ringwelski
d23b8a7f27
code: Move wlr_output_layout_add from Output.init to Root.addOutput
2020-11-02 14:08:00 +01:00
Marten Ringwelski
30b1675fe8
render: Print a log message when wlr_output_commit fails
2020-10-31 19:11:22 +01:00
Marten Ringwelski
d821f6b0dc
Implement wlr-output-power-management-unstable-v1 protocol
2020-10-31 19:11:22 +01:00
Marten Ringwelski
773c5ff687
Implement virtual_keyboard_unstable_v1 protocol
2020-10-31 17:02:08 +01:00
Marten Ringwelski
76217970f5
Implement wlr_virtual_pointer_unstable_v1 protocol
2020-10-31 09:47:57 +01:00
Marten Ringwelski
1bd6f6bed1
code: Remove most of the hack around @cImport and flexible arrays
2020-10-30 15:23:52 +01:00
Marten Ringwelski
9a2e11620c
Implement unmap-pointer
2020-10-27 00:32:20 +01:00
Marten Ringwelski
882a271d81
Implement unmap
2020-10-27 00:32:20 +01:00
Leon Henrik Plickat
5407325400
Add tests for ViewStack.swap()
2020-10-26 22:58:09 +01:00
Leon Henrik Plickat
ac1762567c
Send zriver_seat_status_v1.focused_view when title of focused view changes
2020-10-25 17:28:13 +01:00
Marten Ringwelski
3f1b0dfaa9
control: implement swap
2020-10-25 12:41:19 +01:00
Marten Ringwelski
16c8752de2
code: Remove allocator argument from Mapping.init
2020-10-25 12:22:25 +01:00
Isaac Freund
e4a3698d86
view: update comments
...
These should have been moved in the previous commit
2020-10-22 19:24:01 +02:00
Bonicgamer
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
Isaac Freund
e179690a9c
code: update os.waitpid usage for breaking change
2020-10-22 18:20:09 +02:00
Isaac Freund
3e4743e9a2
Revert "Remove checking translated keysyms"
...
This reverts commit 744e6b3052
.
This broke VT switching and likely other keysyms which don't have
a "raw" equivalent.
2020-10-21 15:24:11 +02:00
Leon Henrik Plickat
03a2da9690
Introduce mode "locked"
...
This mode is automatically entered when the screen is locked.
2020-10-19 16:00:17 +02:00
Leon Henrik Plickat
744e6b3052
Remove checking translated keysyms
...
Raw keysyms are enough to handle all possible keybinds
2020-10-18 16:36:11 +02:00
Leon Henrik Plickat
4b4f7c464c
Allow "None" as modifier string for bindings without modifiers
...
This is more userfriendly than the empty string approach.
2020-10-18 16:36:11 +02:00
Leon Henrik Plickat
ec5d5e8826
Move Cursor.Mode impl functions to Cursor
2020-10-17 23:42:37 +02:00
Leon Henrik Plickat
d5d1e87a95
Implement XDG-Toplevel move and resize request handlers
2020-10-17 23:42:37 +02:00
Leon Henrik Plickat
1e0ee3b146
Remove unused event parameter from Cursor.Mode.enter()
2020-10-17 23:42:37 +02:00
Leon Henrik Plickat
b6861bc80b
Update view.float_box when setting a floating view to fullscreen
2020-10-17 21:23:13 +02:00
Leon Henrik Plickat
036f9a1cb9
Always set fullscreen views to fully opaque
2020-10-08 18:41:47 +02:00
Leon Henrik Plickat
d4ca5d7a88
introduce Output.getEffectiveResolution()
2020-10-07 21:03:59 +02:00
Leon Henrik Plickat
b2f13f5bcc
Implement "move", "snap" and "resize" commands
2020-10-07 21:03:59 +02:00
Leon Henrik Plickat
6f9ecd4eda
Create wlr_viewporter
2020-10-06 20:19:07 +02:00
Leon Henrik Plickat
1e58e8b7f8
Create wlr_export_dmabuf_manager_v1
2020-10-06 20:19:07 +02:00
Leon Henrik Plickat
18f5fcb1ef
Implement primary selection
2020-10-06 17:46:05 +02:00
Leon Henrik Plickat
bb23464322
Send view tags when applying pending state in XdgToplevel.zig
2020-10-05 23:03:57 +02:00
Leon Henrik Plickat
b67ea748a3
Implement configurable view opacity with fade effect
2020-10-05 23:03:57 +02:00
Isaac Freund
27b666dbba
code: update to zig master in prep for 0.7.0
...
This commit makes the minimal necessary changes to get things working,
there are further changes which can be made to take advantage of new
features.
2020-10-02 20:34:24 +02:00
Isaac Freund
0bd8274bd4
server: support wlr-gamma-control
2020-09-30 12:59:00 +02:00
Isaac Freund
2b77be8c87
seat: start transaction on focus-output
...
This fixes a delay due to the missing startTransaction() call causing
unapplied pending state.
2020-09-30 11:16:27 +02:00
Isaac Freund
d783347476
layer-shell: default to focused output
...
Layer shell clients may leave the output on which to display a layer
surface up to the compositor. Instead of always putting such surfaces
on the first output use the focused output of the default seat.
2020-09-29 17:27:33 +02:00
Isaac Freund
3e955935eb
docs: use foot in the example config.sh
2020-09-28 22:57:22 +02:00
Isaac Freund
b3279b87cc
layer-shell: make invalid 0 dimension a hard error
2020-09-28 22:52:53 +02:00
Isaac Freund
e019b9de47
view: always set fullscreen x/y to 0,0
...
This position is output relative not layout relative.
2020-09-28 16:28:47 +02:00
Marten Ringwelski
52cd871151
Implement map -release
2020-09-15 15:58:54 +02:00
Marten Ringwelski
7e02fb679c
Implement focus-follows-cursor
2020-09-15 15:15:55 +02:00
Isaac Freund
f597e7da63
seat: implement drag and drop
2020-09-14 20:11:25 +02:00
Isaac Freund
976a3ce73d
cursor: handle borderless views in move/resize
2020-09-08 18:54:57 +02:00
Isaac Freund
989e7aaeda
config: implement map-pointer command
...
This command takes a mode, modifiers, button/event name, and pointer
action as arguments. It stores these in the config data structure.
The currently available pointer actions are move-view and resize-view,
which replace the previously hard-coded functionality.
Closing the hovered view with middle click has temorarily been removed
until it is decided if we wish to make this another special pointer
action or perhaps allow running any arbitrary command (which would of
course include close).
2020-08-24 18:57:43 +02:00
Isaac Freund
fd8c5e6410
style: attach_mode() -> attachMode()
2020-08-24 11:50:38 +02:00
Isaac Freund
e92b6307d9
river-status: don't report destroying views
2020-08-22 17:17:57 +02:00
Isaac Freund
dd425a3e66
root: clean up initialization
2020-08-21 21:06:59 +02:00
Isaac Freund
0b2c992f4d
river-status: clean up initialization
2020-08-21 21:06:59 +02:00
Isaac Freund
997b151df2
output: clean up initialization
2020-08-21 21:06:59 +02:00
Isaac Freund
4a334829f3
config: handle alloc failure in Mapping init
2020-08-21 21:06:59 +02:00
Isaac Freund
c7c1934b70
Keyboard: clean up initialization
2020-08-21 21:06:59 +02:00
Isaac Freund
163fa47822
xdg-decoration: clean up initialization
2020-08-21 21:06:59 +02:00
Isaac Freund
5098553fb4
river-status: clean up initialization
2020-08-21 21:06:58 +02:00
Isaac Freund
a201ced77d
config: clean up initialization
2020-08-21 21:06:58 +02:00
Isaac Freund
71a751f1ad
seat: clean up initialization
2020-08-21 21:06:58 +02:00
Isaac Freund
37ea1bac36
layer-surface: clean up initialization
2020-08-21 16:53:04 +02:00
Isaac Freund
eb21e03b42
xdg-popup: clean up initialization
2020-08-21 16:51:09 +02:00
Isaac Freund
5cea3f68e3
xwayland: clean up initialization
2020-08-21 16:48:17 +02:00
Isaac Freund
1fbaaa55b3
xdg-toplevel: clean up initialization
2020-08-21 16:45:27 +02:00
Isaac Freund
283f3f8061
view: clean up initialization
2020-08-21 16:43:12 +02:00
Isaac Freund
7274761069
cursor: leave mode if target view is destroyed
2020-08-21 16:31:39 +02:00
Isaac Freund
db416eb119
view stack: rework iteration for flexibility
...
There is now a single iter() function which accepts a filter and context
allowing users of the api to filter the views in any arbitrary way. This
change allowed for a good amount of code cleanup, and this commit also
ensures that the correct properties are checked in each case, including
the new View.destroying field added in the previous commit. This fixes
at least one crash involving switching focus to a destroying view.
2020-08-21 16:31:39 +02:00
Isaac Freund
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
Leon Henrik Plickat
59d6432332
Implement "attach-mode"
2020-08-18 11:00:51 +02:00
Isaac Freund
340bfbd7f1
xwayland: fix signed to unsigned int casting error
2020-08-13 13:47:14 +02:00
Isaac Freund
7de2edb623
seat: implement kde idle protocol
2020-08-13 12:22:32 +02:00
Isaac Freund
aabd85b028
layer-shell: improve configure handling
...
- don't send a new configure on commit if nothing has changed
- simplify code
2020-08-13 11:17:15 +02:00
Isaac Freund
7a6ac8eb6e
seat: set focus before starting transactions
...
Focus was made double-buffered in 96a91fd
. However, much of the code
still behaved as if focus was separate from the transaction system.
This commit completes the work started in 96a91fd
and ensures that
focus is applied consistently in a single transaction.
2020-08-13 11:17:15 +02:00
Isaac Freund
bd99428766
view: handle setting fullscreen in configure()
2020-08-13 11:17:15 +02:00
Isaac Freund
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
Leon Henrik Plickat
946e4f21ba
Enforce minimum window size also for views with constraints
2020-08-10 22:15:09 +02:00
Leon Henrik Plickat
45a730cbd3
Fix crashing bug for window size smaller than 2 * (border width + gap size)
2020-08-10 19:26:13 +02:00
Isaac Freund
e66c8b0019
code: clean up cursor resize mode
...
- offset_{x,y} is consistent with delta_{x,y}
- no need to name the type, it's only referenced in one place
2020-08-07 21:36:28 +02:00
Isaac Freund
0c4e3295b1
cursor: implement implicit grabs
...
When a button is held down and the cursor leaves a surface, events now
continue to be sent to the client. This allows e.g. dragging a scroll
bar from outside the surface.
2020-08-07 13:54:58 +02:00
Isaac Freund
91052f7477
cursor: refactor mode handling
2020-08-07 12:08:58 +02:00
Isaac Freund
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
Isaac Freund
7d77160fe3
view: arrange on unmap if fullscreened from layout
...
We don't rearrange the layout on fullscreening a view that is part of
the layout since the fullscreened view hides the layout. This means that
if a non-floating fullscreen view is closed the layout needs to be
rearranged.
2020-08-01 20:03:32 +02:00
Isaac Freund
ef4efbcadf
view: fix xdg_toplevel fullscreen request handling
2020-08-01 19:56:34 +02:00
Isaac Freund
845fcad9e6
layout: use fork/execve instead of ChildProcess
...
This keeps things simpler, and we will need this control anyways in
order to enforce a timeout.
2020-08-01 18:37:06 +02:00
Isaac Freund
05557086e6
output: simplify layout code
2020-08-01 17:34:45 +02:00
Isaac Freund
56df9176b3
server: handle SIGINT/SIGTERM with wl_event_loop
...
This is cleaner than having a separate signal handler and should be more
consistent/reliable.
2020-08-01 17:27:49 +02:00
Isaac Freund
54b09c4ae9
server: use fork/execve for startup command
...
std.ChildProcess leaks an fd currently and is more complex than what we
need anyways.
2020-08-01 13:40:41 +02:00
Isaac Freund
d2ebd5e4e2
view: remember floating dimesions
...
When a floating view is returned to the layout or made fullscreen, it
now saves the dimesions it had while floating and returns to that same
position/size if made to float again.
2020-07-31 20:22:37 +02:00
Isaac Freund
d6823fe3a0
cursor: handle xwayland views for move/resize
2020-07-31 17:06:26 +02:00
Isaac Freund
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
Isaac Freund
ecef8c2dc4
cursor: forbid move/resize of fullscreen views
2020-07-31 17:06:26 +02:00
Isaac Freund
d87356c93a
view: forbid mode change if cursor target
...
Making a floating view tiled during a resize breaks things badly.
2020-07-31 17:06:26 +02:00
Isaac Freund
9f3ee76e51
cursor: implement resize
2020-07-31 17:06:26 +02:00
Isaac Freund
ac3066d8fc
code: refactor and simplify cursor move mode
2020-07-28 16:17:16 +02:00
Isaac Freund
627ab7ec8a
cursor: ensure theme loaded on output creation
2020-07-17 20:40:33 +02:00
Isaac Freund
43bcce9afe
code: fix a pair of leaks
2020-07-17 16:01:35 +02:00
Isaac Freund
0091445b9f
cursor: properly set XCURSOR_SIZE if default
2020-07-17 12:58:54 +02:00
Leon Henrik Plickat
228c2c372f
Fix bug causing XDG toplevels with a parent to not respect the CSD filter
2020-07-16 21:24:08 +02:00
Leon Henrik Plickat
a93c263502
Implement csd-filter-add and float-filter-add commands
2020-07-16 21:24:08 +02:00
Leon Henrik Plickat
76da7e2b0d
Make float_filter a slice list
2020-07-16 21:24:08 +02:00
Isaac Freund
0ebb5ccc17
code: update to wlroots 0.11.0
2020-07-16 21:20:43 +02:00
Leon Henrik Plickat
be29b0ef95
Implement csd_filter list
2020-07-16 17:08:19 +02:00
Isaac Freund
101f47d78f
code: use a tagged union to store focus
...
This simplifies the code and is more robust than two separate pointers.
2020-07-15 14:15:17 +02:00
Isaac Freund
8afe7c2c87
code: simplify direction parsing
2020-07-15 13:03:28 +02:00
Isaac Freund
1389b4a850
code: deduplicate command include code
2020-07-15 12:54:36 +02:00
Isaac Freund
2b2b78dd4d
command: split set-option into "toplevel" commands
...
`riverctl set-option view_padding 10` becomes `riverctl view-padding 10`
Having set-option doesn't really gain us anything and is more verbose as
well as being slightly inaccurate as the changes instantly apply.
2020-07-15 12:42:20 +02:00
Isaac Freund
6bdb152808
cursor: make xcursor theme configurable
...
- add a new command to set the theme
- export the theme of the default seat through environment variables
2020-07-14 17:34:29 +02:00
Isaac Freund
f3d4e5ac53
command/spawn: use _exit(2) instead of exit(3)
...
Something in exit(3) is causing the intermediate fork to segfault.
2020-07-12 12:16:05 +02:00
Isaac Freund
8120829e5c
xwayland: set seat
...
This makes e.g. the clipboard work.
2020-07-09 22:31:01 +02:00
Isaac Freund
cbf645d468
command/spawn: clean up and disown children
...
- Call setsid
- Clean up the signal mask.
- Use a double fork so that processes get inherited by init.
2020-07-08 14:00:51 +02:00
Leon Henrik Plickat
d77ac5ac7a
cursor: close view on middleclick when pointer_modifier is active
2020-07-08 12:25:52 +02:00
Leon Henrik Plickat
d292e61cfd
cursor: implement moving views
2020-07-07 19:06:52 +02:00
Isaac Freund
dfe61fe77d
xwayland: don't crash on null title
2020-07-06 16:10:59 +02:00
Isaac Freund
014963612c
river-status: fix bug sending old output tag state
2020-07-06 11:09:23 +02:00
Isaac Freund
24c0355ba8
layer-shell: respect single anchor exclusive zones
2020-07-05 23:34:59 +02:00
Isaac Freund
341fe1e977
code: handle out of memory as well as possible
2020-07-05 22:49:17 +02:00
Isaac Freund
3752a7879b
server: send SIGTERM to startup process on exit
2020-07-05 15:44:21 +02:00
Isaac Freund
9dd18c6373
server: exit cleanly on SIGINT and SIGTERM
2020-07-05 14:49:34 +02:00
Isaac Freund
86386e84bc
output: introduce state struct
...
This simplifies the handling of the current/pending tags and will be
used in the future for atomic layout updates involving layer surface
exclusive zones.
2020-07-02 21:56:26 +02:00
Isaac Freund
34d42d9e8c
xdg-shell: honor fullscreen requests
2020-06-29 11:52:53 +02:00
Isaac Freund
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
Isaac Freund
7b6e05005d
render: draw fullscreen views properly
...
- use a solid black background
- only draw the overlay layer
2020-06-29 01:46:24 +02:00
Isaac Freund
eb1e66b0fe
seat: prioritize fullscreen views for focus
2020-06-29 01:04:37 +02:00
Isaac Freund
acd08840ab
command: disable focus-view in fullscreen
2020-06-29 01:04:37 +02:00
Isaac Freund
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
Isaac Freund
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
Isaac Freund
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
Isaac Freund
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
Isaac Freund
7f2e2610e3
code: fix tests
2020-06-28 00:35:38 +02:00
Isaac Freund
b6ef4c5a1a
cursor: fix viewAt() ordering
...
Focused views must be checked first as they are always rendered on top.
2020-06-28 00:29:44 +02:00
Isaac Freund
9dfcec72a8
view: simplify default float dimension handling
2020-06-27 23:48:04 +02:00
Isaac Freund
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
Isaac Freund
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
Isaac Freund
3904275373
command: log output of commands run by mappings
2020-06-26 18:43:20 +02:00
Isaac Freund
40597f184d
command: allow output on success, refactor
2020-06-26 17:57:03 +02:00
Isaac Freund
558918d286
config: fix leak of hashmap keys
2020-06-26 12:58:11 +02:00