summaryrefslogtreecommitdiff
path: root/protocol/desktop-shell.xml
blob: 65e44a730a739f2dfd2d87b25725935f16c568ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<protocol name="desktop">

  <interface name="desktop_shell" version="2">
    <description summary="create desktop widgets and helpers">
      Traditional user interfaces can rely on this interface to define the
      foundations of typical desktops. Currently it's possible to set up
      background, panels and locking surfaces.
    </description>

    <request name="set_background">
      <arg name="output" type="object" interface="wl_output"/>
      <arg name="surface" type="object" interface="wl_surface"/>
    </request>

    <request name="set_panel">
      <arg name="output" type="object" interface="wl_output"/>
      <arg name="surface" type="object" interface="wl_surface"/>
    </request>

    <request name="set_lock_surface">
      <arg name="surface" type="object" interface="wl_surface"/>
    </request>

    <request name="unlock"/>

    <request name="set_grab_surface">
      <description summary="set grab surface">
	The surface set by this request will receive a fake
	pointer.enter event during grabs at position 0, 0 and is
	expected to set an appropriate cursor image as described by
	the grab_cursor event sent just before the enter event.
      </description>
      <arg name="surface" type="object" interface="wl_surface"/>
    </request>

    <request name="desktop_ready" since="2">
      <description summary="desktop is ready to be shown">
	Tell the server, that enough desktop elements have been drawn
	to make the desktop look ready for use. During start-up, the
	server can wait for this request with a black screen before
	starting to fade in the desktop, for instance. If the client
	parts of a desktop take a long time to initialize, we avoid
	showing temporary garbage.
      </description>
    </request>

    <!-- We'll fold most of wl_shell into this interface and then
         they'll share the configure event.  -->
    <event name="configure">
      <arg name="edges" type="uint"/>
      <arg name="surface" type="object" interface="wl_surface"/>
      <arg name="width" type="int"/>
      <arg name="height" type="int"/>
    </event>

    <event name="prepare_lock_surface">
      <description summary="tell the client to create, set the lock surface">
	Tell the shell we want it to create and set the lock surface, which is
	a GUI asking the user to unlock the screen. The lock surface is
	announced with 'set_lock_surface'. Whether or not the shell actually
	implements locking, it MUST send 'unlock' request to let the normal
        desktop resume.
      </description>
    </event>

    <event name="grab_cursor">
      <description summary="tell client what cursor to show during a grab">
	This event will be sent immediately before a fake enter event on the
	grab surface.
      </description>
      <arg name="cursor" type="uint"/>
    </event>

    <enum name="cursor">
      <entry name="none" value="0"/>

      <entry name="resize_top" value="1"/>
      <entry name="resize_bottom" value="2"/>

      <entry name="arrow" value="3"/>

      <entry name="resize_left" value="4"/>
      <entry name="resize_top_left" value="5"/>
      <entry name="resize_bottom_left" value="6"/>

      <entry name="move" value="7"/>

      <entry name="resize_right" value="8"/>
      <entry name="resize_top_right" value="9"/>
      <entry name="resize_bottom_right" value="10"/>

      <entry name="busy" value="11"/>
    </enum>
  </interface>

  <interface name="screensaver" version="1">
    <description summary="interface for implementing screensavers">
      Only one client can bind this interface at a time.
    </description>

    <request name="set_surface">
      <description summary="set the surface type as a screensaver">
	A screensaver surface is normally hidden, and only visible after an
        idle timeout.
      </description>

      <arg name="surface" type="object" interface="wl_surface"/>
      <arg name="output" type="object" interface="wl_output"/>
    </request>

  </interface>
</protocol>