Commit graph

96 commits

Author SHA1 Message Date
Quantum
e188fe6d9d screencopy: add support for separate cursor capturing 2021-08-20 18:00:04 -04:00
Daniel Kondor
d1598e8224 layer-shell: add keyboard_interactivity.on_demand
Currently only background and bottom layers can have surfaces with
normal focus semantics. Allow top and overlay layers to have these
semantics too (instead of exclusive).

Closes: https://github.com/swaywm/wlr-protocols/issues/32
2021-01-12 20:13:38 +01:00
Daniel Kondor
1216a503d3
layer-shell: introduce keyboard_interactivity enum
Make it clearer what the two possible modes are, and expose enum values
instead of requiring clients to use 0 or 1.

Also clarify that compositors aren't required to give focus if keyboard
interactivity is exclusive.
2021-01-06 17:29:15 +01:00
Daniel Kondor
260ac62f9f
layer-shell: add invalid_keyboard_interactivity error 2021-01-06 14:16:44 +01:00
Daniel Kondor
1591a63b18
layer-shell: fix typo 2021-01-06 14:15:05 +01:00
Sebastian Krzyszkowiak
992841c2aa foreign-toplevel-management: Report the surface's parent
Some window switchers, like mobile ones, may want to skip or group
dialogs and other child windows on their window lists. Right now
the only way to group toplevels is to use app_id, which will end
up grouping too much in case of multiple toplevels with separate
documents. Reporting on the toplevel's parent makes it easy to
distinguish separate window stacks and act accordingly.
2020-10-18 17:12:55 +02:00
Roman Gilg
50f3a8d3c8 output-management-v1: add head identifying events
The following information through separate events are added:
- make
- model
- serial_number

This should allow clients to identify a display over different sessions and
load configuration data back.

A note is added that the description should be preferred when representing a
display in UI to users but as a short form for example the model could be used
in this case of course too.
2020-09-04 21:19:55 +02:00
Vlad Zahorodnii
95b627f251 layer-shell: Require an initial commit
Currently, the compositor doesn't have enough information to decide if a
given unmapped layer surface can be rearranged or rather configured.

In order to address the ambiguity, this change adjusts the protocol spec
saying that every client must perform an initial commit without a buffer
attached after creating and setting up a layer surface.

If the compositor knows that the initial state for a specified surface
has not been committed yet, it can skip such a surface when re-arranging
layer shell clients.
2020-08-26 17:34:32 +02:00
Simon Ser
16a28885bc Add README
Closes: https://github.com/swaywm/wlr-protocols/issues/88
2020-06-30 14:14:02 -06:00
Isaac Freund
23490a0479 layer-shell: add destroy request 2020-06-30 13:33:18 +02:00
Andri Yngvason
8b96da0afb screencopy: Extend protocol to allow linux-dmabuf 2020-06-08 20:50:02 +02:00
Martin Michlmayr
9b9479f9a3 Fix typo
Fixes #79
2020-06-04 09:58:21 +02:00
Simon Ser
06062c6816 screencopy: add missing wl_shm.format enum attribute 2020-05-26 20:00:21 +02:00
Martin Michlmayr
4a7a0494bd Fix typos 2020-05-17 14:29:08 +02:00
Guido Günther
55cdefe663 Add output power management protocol
This specifies how to control power management modes of outputs.

Closes: #56
2020-02-20 16:24:07 +01:00
Andri Yngvason
c11408942e virtual-pointer: Add request for mapping to specific output 2020-02-10 21:01:07 +01:00
Andri Yngvason
f80a44fa9b virtual-pointer: Align with wlroots 2020-02-10 21:01:07 +01:00
Nikita Tsukanov
67abc798b0 Properly reference zwlr_layer_shell_v1.layer
Referencing enums from other interfaces without interface name seems to be invalid.
2020-01-15 23:06:25 +01:00
Josef Gajdusek
571766f797 Add wlr-virtual-pointer-unstable-v1 2019-12-31 10:29:36 +01:00
Jason
29d4a59df8 Amend typo in protocol 2019-11-23 10:34:01 -05:00
Andri Yngvason
35b82d47eb screencopy: Add request and event for coarse damage reporting 2019-10-22 10:41:09 -04:00
Timidger
98efe0bc24 layer_shell: set layer of existing surface 2019-10-16 16:40:19 +03:00
William Wold
59497d9379 number of [coordinates] -> distance from the edge 2019-07-05 11:33:49 -04:00
William Wold
895f310f64 Clearify under what conditions the exclusive zone has an effect 2019-07-05 11:33:49 -04:00
Ilia Bozhinov
54579f72b8 foreign-toplevel-management: add support for fullscreening toplevels
This can be used for fullscreening an app from a taskbar, and
potentially also for panels to autohide themselves in case a
fullscreen toplevel appears.
2019-04-26 20:45:25 +03:00
emersion
d278d20905 Address @dcz-purism's comments 2019-03-16 09:53:09 -06:00
emersion
125b006f28 Remove arbitrary modes 2019-03-16 09:53:09 -06:00
emersion
6c576d109d Introduce custom modes 2019-03-16 09:53:09 -06:00
emersion
c2d41a8654 Address @ddevault comments 2019-03-16 09:53:09 -06:00
emersion
7981765515 All heads must be either enabled or disabled 2019-03-16 09:53:09 -06:00
emersion
4361785c72 Add wlr-output-management-unstable-v1
This commit adds a new output management protocol. It can be used to get the
current output configuration and apply a new one. It's based on the GNOME D-Bus
API [1] and the KDE protocol [2] [3].

Goals:

* High-level API, not a copy of KMS
* Protect against races wrt. hotplugging
* Extensible via backwards-compatible changes
* Atomic (both when reading current config and when applying a new one)

Features:

* Read all outputs including disabled ones
  * Identification (name, description), available modes, physical size
  * Current mode, enabled/disabled
  * Position, scale, transform
* Write
  * Modeset, enable/disable
  * Position, scale, transform

Non-features (ie. features in GNOME or KDE excluded from this protocol):

* No DPMS (left out for another protocol because it can operate on wl_output)
* No gamma ramps (left out for another protocol, we already have one)
* Cannot set the primary logical monitor and the presentation monitor (should be
  a separate protocol, could use wl_output)

Available outputs and their current configuration are advertised when the client
binds to the manager as "heads" (a head is an enabled or disabled output).

Clients can create a configuration object, add some outputs to configure and
apply the new state.

The GNOME protocol has a concept of "logical monitor": it's a region of the
screen you can assign physical monitors to. You can modeset and enable/disable
physical monitors while you can position, scale and transform logical monitors.
This nicely splits physical properties and logical properties. I've tried to
design a protocol with a similar concept [4], but it turned out being pretty
complicated since you need to have at least two extra objects (one to read the
current logical monitors, one to configure them). I've decided against this
approach for now.

TODO:

* Custom modes
* Output cloning with different resolutions or underscan
* Should transform & scale be per slot or per output device?
* Check all of this makes sense for non-KMS outputs?
* Make sure a compositor can offload everything to a helper client (ie. it
  doesn't apply an initial default modeset on hotplug)
* Should some features be optional?
* Better wording
* Should zero modes mean the output doesn't support modes? What to do if an EDID
  is malformed and returns zero modes?

Possible future features:

* Modes aspect ratio and interlaced modes
* Underscanning? (needs investigation)
* is-builtin property for heads? (should this be in the compositor?)
* Expose suggested panel orientation and tiling data?
* Variable refresh rate? (needs investigation)

References:

[1]: https://gitlab.gnome.org/GNOME/mutter/blob/master/src/org.gnome.Mutter.DisplayConfig.xml#L292
[2]: https://github.com/KDE/kwayland/blob/master/src/client/protocols/outputdevice.xml
[3]: https://github.com/KDE/kwayland/blob/master/src/client/protocols/output-management.xml
[4]: https://paste.sr.ht/%7Eemersion/8727ea50437fff3927c81c40c0ecc9c9885817ef
2019-03-16 09:53:09 -06:00
Drew DeVault
4dde2728f1
Merge pull request #34 from YaLTeR/data-control-primary
Support primary selection in data-control
2019-02-15 15:24:26 +01:00
Ivan Molodetskikh
151664b67a
Make using a data source twice a protocol error 2019-02-15 12:38:59 +03:00
Ivan Molodetskikh
06b41b7ff4
Clarify that data sources can only be used once 2019-02-15 12:38:58 +03:00
Ivan Molodetskikh
caf9c74946
Clarify when the first selection events are sent 2019-02-15 12:38:58 +03:00
Ivan Molodetskikh
3953961870
Add data_control_device.{set_,}primary_selection 2019-01-29 19:16:06 +03:00
Ivan Molodetskikh
3f831de2bb
Fix data_control_device.data_offer description
Data offers are invalidated by selection events, not by new data_offer
events themselves.
2019-01-29 19:16:06 +03:00
Ivan Molodetskikh
a003e45ba1
Fix data_control_device.selection summary 2019-01-29 19:06:38 +03:00
Ivan Molodetskikh
3c1e415eec
Fix data_control_device.set_selection description 2019-01-29 19:06:00 +03:00
Drew DeVault
4ff1cda832
Merge pull request #25 from emersion/data-control
Add wlr-data-control-unstable-v1
2019-01-07 15:25:23 -05:00
emersion
cdd0eddd54
Add wlr-data-control-unstable-v1 2018-12-30 02:47:11 +01:00
emersion
6b442ab091
Merge pull request #26 from ammen99/master
add wlr-foreign-toplevel-management protocol to enumerate and control desktop surfaces
2018-12-09 09:08:22 +01:00
Ilia Bozhinov
60e33b7e36 add wlr-foreign-toplevel-management-v1 protocol
This protocol enables the creation of taskbars, docks, etc. by providing
them a means of listing and controlling opened applications.
2018-12-08 14:19:10 +01:00
emersion
014360a2b0
Merge pull request #28 from swaywm/install
Add Makefile and pkg-config entry
2018-10-12 16:17:26 +02:00
Drew DeVault
723f9c03a2 Add Makefile and pkg-config entry 2018-10-12 10:14:24 -04:00
Drew DeVault
77ee60a6e9
Merge pull request #24 from emersion/gamma-control
Add gamma control
2018-08-06 14:03:49 -04:00
Drew DeVault
c99e4dd86c
Merge pull request #17 from emersion/screencopy
Add screencopy protocol
2018-07-28 09:16:37 -04:00
emersion
34366dbbcc Disambiguate unicity of gamma controls 2018-07-22 13:53:16 +01:00
emersion
1c76f50579 Improve gamma_size description 2018-07-22 13:45:36 +01:00
emersion
d2a96796ec Add gamma control 2018-07-19 00:23:56 +01:00