diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d5c58b7..4c054b1c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -337,7 +337,9 @@ protocolnew("unstable/text-input" "text-input-unstable-v3" false) protocolnew("unstable/pointer-constraints" "pointer-constraints-unstable-v1" false) protocolnew("staging/xdg-activation" "xdg-activation-v1" false) -protocolnew("staging/ext-idle-notify" "ext-idle-notify-v1" false) +# JJR: This change is TEMPORARY, only here to allow build w/o my fork of wayland-protocols +# protocolnew("staging/ext-idle-notify" "ext-idle-notify-v1" false) +protocolnew("protocols" "ext-idle-notify-v1" true) # Again, TEMPORARY! protocolnew("staging/ext-session-lock" "ext-session-lock-v1" false) protocolnew("stable/tablet" "tablet-v2" false) protocolnew("stable/presentation-time" "presentation-time" false) diff --git a/protocols/ext-idle-notify-v1.xml b/protocols/ext-idle-notify-v1.xml new file mode 100644 index 00000000..db7d9c16 --- /dev/null +++ b/protocols/ext-idle-notify-v1.xml @@ -0,0 +1,131 @@ + + + + Copyright © 2015 Martin Gräßlin + Copyright © 2022 Simon Ser + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + + + + This interface allows clients to monitor user idle status. + + After binding to this global, clients can create ext_idle_notification_v1 + objects to get notified when the user is idle for a given amount of time. + + + + + Destroy the manager object. All objects created via this interface + remain valid. + + + + + + Create a new idle notification object. + + The notification object has a minimum timeout duration and is tied to a + seat. The client will be notified if the seat is inactive for at least + the provided timeout. See ext_idle_notification_v1 for more details. + + A zero timeout is valid and means the client wants to be notified as + soon as possible when the seat is inactive. + + + + + + + + + + + Create a new idle notification object to track input from the + user, such as keyboard and mouse movement. Because this object is + meant to track user input alone, it ignores idle inhibitors. + + The notification object has a minimum timeout duration and is tied to a + seat. The client will be notified if the seat is inactive for at least + the provided timeout. See ext_idle_notification_v1 for more details. + + A zero timeout is valid and means the client wants to be notified as + soon as possible when the seat is inactive. + + + + + + + + + + + This interface is used by the compositor to send idle notification events + to clients. + + Initially the notification object is not idle. The notification object + becomes idle when no user activity has happened for at least the timeout + duration, starting from the creation of the notification object. User + activity may include input events or a presence sensor, but is + compositor-specific. + + How this notification responds to idle inhibitors depends on how + it was constructed. If constructed from the + get_idle_notification request, then if an idle inhibitor is + active (e.g. another client has created a zwp_idle_inhibitor_v1 + on a visible surface), the compositor must not make the + notification object idle. However, if constructed from the + get_input_idle_notification request, then idle inhibitors are + ignored, and only input from the user, e.g. from a keyboard or + mouse, counts as activity. + + When the notification object becomes idle, an idled event is sent. When + user activity starts again, the notification object stops being idle, + a resumed event is sent and the timeout is restarted. + + + + + Destroy the notification object. + + + + + + This event is sent when the notification object becomes idle. + + It's a compositor protocol error to send this event twice without a + resumed event in-between. + + + + + + This event is sent when the notification object stops being idle. + + It's a compositor protocol error to send this event twice without an + idled event in-between. It's a compositor protocol error to send this + event prior to any idled event. + + + + diff --git a/protocols/meson.build b/protocols/meson.build index a39602b7..b26f140a 100644 --- a/protocols/meson.build +++ b/protocols/meson.build @@ -53,7 +53,9 @@ protocols = [ wayland_protocol_dir / 'unstable/text-input/text-input-unstable-v1.xml', wayland_protocol_dir / 'unstable/pointer-constraints/pointer-constraints-unstable-v1.xml', wayland_protocol_dir / 'staging/xdg-activation/xdg-activation-v1.xml', - wayland_protocol_dir / 'staging/ext-idle-notify/ext-idle-notify-v1.xml', + # JJR: This change is TEMPORARY, only here to allow build w/o my fork of wayland-protocols + # wayland_protocol_dir / 'staging/ext-idle-notify/ext-idle-notify-v1.xml', + 'ext-idle-notify-v1.xml', # Again, TEMPORARY! wayland_protocol_dir / 'staging/ext-session-lock/ext-session-lock-v1.xml', wayland_protocol_dir / 'stable/tablet/tablet-v2.xml', wayland_protocol_dir / 'stable/presentation-time/presentation-time.xml',