summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/CMakeLists.txt16
-rw-r--r--app/protocol/agl-shell-desktop.xml142
2 files changed, 10 insertions, 148 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 9cdbaa9..3456f6d 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -28,6 +28,10 @@ find_package(Qt5Gui ${QT_MIN_VERSION} CONFIG REQUIRED Private)
find_package(PkgConfig REQUIRED)
find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
+pkg_check_modules(AGL_COMPOSITOR_PROTOCOLS REQUIRED agl-compositor-0.0.19-protocols)
+pkg_get_variable(AGL_COMPOSITOR_PROTOCOLS_PKGDATADIR agl-compositor-0.0.19-protocols pkgdatadir)
+set(AGL_COMPOSITOR_PROTOCOLS_PATH ${AGL_COMPOSITOR_PROTOCOLS_PKGDATADIR})
+
qt5_add_resources(RESOURCES alexa-viewer.qrc)
PROJECT_TARGET_ADD(alexa-viewer)
@@ -35,26 +39,26 @@ PROJECT_TARGET_ADD(alexa-viewer)
add_custom_command(
OUTPUT agl-shell-desktop-client-protocol.h
COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
- < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ < ${AGL_COMPOSITOR_PROTOCOLS_PATH}/agl-shell-desktop.xml
> ${CMAKE_SOURCE_DIR}/app/agl-shell-desktop-client-protocol.h
- DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ DEPENDS ${AGL_COMPOSITOR_PROTOCOLS_PATH}/agl-shell-desktop.xml
)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/app/agl-shell-desktop-client-protocol.h
COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
- < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ < ${AGL_COMPOSITOR_PROTOCOLS_PATH}/agl-shell-desktop.xml
> ${CMAKE_SOURCE_DIR}/app/agl-shell-desktop-client-protocol.h
- DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ DEPENDS ${AGL_COMPOSITOR_PROTOCOLS_PATH}/agl-shell-desktop.xml
)
add_custom_command(
OUTPUT agl-shell-desktop-protocol.c
COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
- < ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ < ${AGL_COMPOSITOR_PROTOCOLS_PATH}/agl-shell-desktop.xml
> ${CMAKE_BINARY_DIR}/app/agl-shell-desktop-protocol.c
- DEPENDS ${CMAKE_SOURCE_DIR}/app/protocol/agl-shell-desktop.xml
+ DEPENDS ${AGL_COMPOSITOR_PROTOCOLS_PATH}/agl-shell-desktop.xml
)
add_executable(${TARGET_NAME}
diff --git a/app/protocol/agl-shell-desktop.xml b/app/protocol/agl-shell-desktop.xml
deleted file mode 100644
index e7b9493..0000000
--- a/app/protocol/agl-shell-desktop.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<protocol name="agl_shell_desktop">
- <copyright>
- Copyright © 2020 Collabora, Ltd.
-
- 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.
- </copyright>
- <interface name="agl_shell_desktop" version="1">
- <description summary="Private extension to allow applications activate other apps">
- This extension can be used by regular application to instruct to compositor
- to activate or switch to other running (regular) applications. The client
- is responsbile for filtering their own app_id when receiving application id.
-
- Note that other (regular) applications can bind to this interface and there is
- no mechanism to place to restrict or limit that.
- </description>
-
- <enum name="app_role">
- <entry name="popup" value="0"/>
- <entry name="fullscreen" value="1"/>
- <entry name="split_vertical" value="2"/>
- <entry name="split_horizontal" value="3"/>
- <entry name="remote" value="4"/>
- </enum>
-
- <enum name="app_state">
- <entry name="activated" value="0"/>
- <entry name="deactivated" value="1"/>
- </enum>
-
- <event name="application">
- <description summary="advertise application id">
- The compositor may choose to advertise one or more application ids which
- can be used to activate/switch to.
-
- When this global is bound, the compositor will send all application ids
- available for activation, but may send additional application id at any
- time (when they've been mapped in the compositor).
- </description>
- <arg name="app_id" type="string"/>
- </event>
-
- <request name="activate_app">
- <description summary="make client current window">
- Ask the compositor to make a toplevel to become the current/focused
- window for window management purposes.
-
- See xdg_toplevel.set_app_id from the xdg-shell protocol for a
- description of app_id.
- </description>
- <arg name="app_id" type="string"/>
- <arg name="app_data" type="string" allow-null="true"/>
- <arg name="output" type="object" interface="wl_output"/>
- </request>
-
- <request name="set_app_property">
- <description summary="set properties for a client identified by app_id">
- Ask the compositor to make a top-level window obey the 'app_role' enum
- and, depending on that role, to use some of the arguments as initial
- values to take into account.
-
- Note that x, y, bx, by, width and height would only make sense for the
- pop-up role, with the output argument being applicable to all the roles.
- The width and height values define the maximum area which the
- top-level window should be placed into. Note this doesn't correspond to
- top-level surface size, but to a bounding box which will be used to
- clip the surface to, in case the surface area extends that of this
- bounding box. Both of these values need to be larger than 0 (zero) to be
- taken into account by the compositor. Any negative values for the width
- and height will be discarded.
-
- The x and y values will serve as the (initial) position values.
- The bx and by values are the top-left x and y value of the bounding box.
- Any clipping happening to the bounding box will not affect the surface
- size or the position of the underlying surface backing the top-level
- window. The bx and by values, like the positional values, could be
- both set to zero, or even negative values. The compositor will pass
- those on without any further validation.
-
- The initial position values and the bounding rectangle will still be
- in effect on a subsequent activation request of the 'app_id', assuming
- it was previously de-activated at some point in time.
-
- See xdg_toplevel.set_app_id from the xdg-shell protocol for a
- description of app_id.
- </description>
- <arg name="app_id" type="string"/>
- <arg name="role" type="uint" enum="app_role"/>
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="bx" type="int"/>
- <arg name="by" type="int"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- <arg name="output" type="object" interface="wl_output"/>
- </request>
-
- <request name="deactivate_app">
- <description summary="de-activate/hide window identified by app_id">
- Ask the compositor to hide the toplevel window for window
- management purposes. Depending on the window role, this request
- will either display the previously active window (or the background
- in case there's no previously activate surface) or temporarly (or
- until a 'activate_app' is called upon) hide the surface. All
- the surfaces are identifiable by using the app_id, and no actions are
- taken in case the app_id is not/was not present.
-
- See xdg_toplevel.set_app_id from the xdg-shell protocol for a
- description of app_id.
- </description>
- <arg name="app_id" type="string"/>
- </request>
-
- <event name="state_app">
- <description summary="event sent when application has suffered state modification">
- Notifies application(s) when other application have suffered state modifications.
- </description>
- <arg name="app_id" type="string"/>
- <arg name="app_data" type="string" allow-null="true"/>
- <arg name="state" type="uint" enum="app_state"/>
- <arg name="role" type="uint" enum="app_role"/>
- </event>
-
- </interface>
-</protocol>