Warning, /libraries/plasma-wayland-protocols/src/protocols/plasma-shell.xml is written in an unsupported language. File is not indexed.
0001 <?xml version="1.0" encoding="UTF-8"?> 0002 <protocol name="plasma_shell"> 0003 <copyright><![CDATA[ 0004 SPDX-FileCopyrightText: 2013-2014 Pier Luigi Fiorini 0005 0006 SPDX-License-Identifier: LGPL-2.1-or-later 0007 ]]></copyright> 0008 0009 <interface name="org_kde_plasma_shell" version="8"> 0010 <description summary="create shell windows and helpers"> 0011 This interface is used by KF5 powered Wayland shells to communicate with 0012 the compositor and can only be bound one time. 0013 </description> 0014 0015 <!-- Surfaces --> 0016 0017 <request name="get_surface"> 0018 <description summary="create a shell surface from a surface"> 0019 Create a shell surface for an existing surface. 0020 0021 Only one shell surface can be associated with a given 0022 surface. 0023 </description> 0024 <arg name="id" type="new_id" interface="org_kde_plasma_surface"/> 0025 <arg name="surface" type="object" interface="wl_surface"/> 0026 </request> 0027 </interface> 0028 0029 <interface name="org_kde_plasma_surface" version="8"> 0030 <description summary="metadata interface"> 0031 An interface that may be implemented by a wl_surface, for 0032 implementations that provide the shell user interface. 0033 0034 It provides requests to set surface roles, assign an output 0035 or set the position in output coordinates. 0036 0037 On the server side the object is automatically destroyed when 0038 the related wl_surface is destroyed. On client side, 0039 org_kde_plasma_surface.destroy() must be called before 0040 destroying the wl_surface object. 0041 </description> 0042 0043 <!-- Destructor --> 0044 0045 <request name="destroy" type="destructor"> 0046 <description summary="remove org_kde_plasma_surface interface"> 0047 The org_kde_plasma_surface interface is removed from the 0048 wl_surface object that was turned into a shell surface with the 0049 org_kde_plasma_shell.get_surface request. 0050 The shell surface role is lost and wl_surface is unmapped. 0051 </description> 0052 </request> 0053 0054 <!-- Output and position --> 0055 0056 <request name="set_output"> 0057 <description summary="assign an output to this shell surface"> 0058 Assign an output to this shell surface. 0059 The compositor will use this information to set the position 0060 when org_kde_plasma_surface.set_position request is 0061 called. 0062 </description> 0063 <arg name="output" type="object" interface="wl_output"/> 0064 </request> 0065 0066 <request name="set_position"> 0067 <description summary="change the shell surface position"> 0068 Move the surface to new coordinates. 0069 0070 Coordinates are global, for example 50,50 for a 1920,0+1920x1080 output 0071 is 1970,50 in global coordinates space. 0072 0073 Use org_kde_plasma_surface.set_output to assign an output 0074 to this surface. 0075 </description> 0076 <arg name="x" type="int" summary="x coordinate in global space"/> 0077 <arg name="y" type="int" summary="y coordinate in global space"/> 0078 </request> 0079 0080 <!-- Role --> 0081 0082 <enum name="role"> 0083 <entry name="normal" value="0"/> 0084 <entry name="desktop" value="1"/> 0085 <entry name="panel" value="2"/> 0086 <entry name="onscreendisplay" value="3"/> 0087 <entry name="notification" value="4"/> 0088 <entry name="tooltip" value="5"/> 0089 <entry name="criticalnotification" value="6" since="6"/> 0090 <entry name="appletpopup" value="7" since="8"/> 0091 </enum> 0092 0093 <request name="set_role"> 0094 <description summary="assign a role to this surface"> 0095 Assign a role to a shell surface. 0096 0097 The compositor handles surfaces depending on their role. 0098 See the explanation below. 0099 0100 This request fails if the surface already has a role, this means 0101 the surface role may be assigned only once. 0102 0103 == Surfaces with splash role == 0104 0105 Splash surfaces are placed above every other surface during the 0106 shell startup phase. 0107 0108 The surfaces are placed according to the output coordinates. 0109 No size is imposed to those surfaces, the shell has to resize 0110 them according to output size. 0111 0112 These surfaces are meant to hide the desktop during the startup 0113 phase so that the user will always see a ready to work desktop. 0114 0115 A shell might not create splash surfaces if the compositor reveals 0116 the desktop in an alternative fashion, for example with a fade 0117 in effect. 0118 0119 That depends on how much time the desktop usually need to prepare 0120 the workspace or specific design decisions. 0121 This specification doesn't impose any particular design. 0122 0123 When the startup phase is finished, the shell will send the 0124 org_kde_plasma.desktop_ready request to the compositor. 0125 0126 == Surfaces with desktop role == 0127 0128 Desktop surfaces are placed below all other surfaces and are used 0129 to show the actual desktop view with icons, search results or 0130 controls the user will interact with. What to show depends on the 0131 shell implementation. 0132 0133 The surfaces are placed according to the output coordinates. 0134 No size is imposed to those surfaces, the shell has to resize 0135 them according to output size. 0136 0137 Only one surface per output can have the desktop role. 0138 0139 == Surfaces with dashboard role == 0140 0141 Dashboard surfaces are placed above desktop surfaces and are used to 0142 show additional widgets and controls. 0143 0144 The surfaces are placed according to the output coordinates. 0145 No size is imposed to those surfaces, the shell has to resize 0146 them according to output size. 0147 0148 Only one surface per output can have the dashboard role. 0149 0150 == Surfaces with config role == 0151 0152 A configuration surface is shown when the user wants to configure 0153 panel or desktop views. 0154 0155 Only one surface per output can have the config role. 0156 0157 TODO: This should grab the input like popup menus, right? 0158 0159 == Surfaces with overlay role == 0160 0161 Overlays are special surfaces that shows for a limited amount 0162 of time. Such surfaces are useful to display things like volume, 0163 brightness and status changes. 0164 0165 Compositors may decide to show those surfaces in a layer above 0166 all surfaces, even full screen ones if so is desired. 0167 0168 == Surfaces with notification role == 0169 0170 Notification surfaces display informative content for a limited 0171 amount of time. The compositor may decide to show them in a corner 0172 depending on the configuration. 0173 0174 These surfaces are shown in a layer above all other surfaces except 0175 for full screen ones. 0176 0177 == Surfaces with lock role == 0178 0179 The lock surface is shown by the compositor when the session is 0180 locked, users interact with it to unlock the session. 0181 0182 Compositors should move lock surfaces to 0,0 in output 0183 coordinates space and hide all other surfaces for security sake. 0184 For the same reason it is recommended that clients make the 0185 lock surface as big as the screen. 0186 0187 Only one surface per output can have the lock role. 0188 </description> 0189 <arg name="role" type="uint"/> 0190 </request> 0191 0192 <!-- Flags --> 0193 0194 <enum name="panel_behavior"> 0195 <description summary="Behavior for panel surface"> 0196 </description> 0197 <entry name="always_visible" value="1"> 0198 <description summary="normal panel visibility"> 0199 The panel is on top of other surfaces, windows cannot cover (full screen 0200 windows excluded). 0201 </description> 0202 </entry> 0203 <entry name="auto_hide" value="2"> 0204 <description summary="hide automatically"> 0205 The panel is hidden automatically and restored when the mouse is over. 0206 </description> 0207 </entry> 0208 <entry name="windows_can_cover" value="3"> 0209 <description summary="windows can cover"> 0210 Windows can cover the panel. 0211 </description> 0212 </entry> 0213 <entry name="windows_go_below" value="4"> 0214 <description summary="windows go below"> 0215 Maximized windows take the whole screen space but the panel is above 0216 the windows. 0217 </description> 0218 </entry> 0219 </enum> 0220 0221 <request name="set_panel_behavior"> 0222 <description summary="set or unset the panel "> 0223 Set flags bitmask as described by the flag enum. 0224 Pass 0 to unset any flag, the surface will adjust its behavior to 0225 the default. 0226 0227 Deprecated in Plasma 6. Setting this flag will have no effect. Applications should use layer shell where appropriate. 0228 </description> 0229 <arg name="flag" type="uint" summary="panel_behavior enum value"/> 0230 </request> 0231 0232 <!-- Skip taskbar--> 0233 <request name="set_skip_taskbar" since="2"> 0234 <description summary="make the window skip the taskbar"> 0235 Setting this bit to the window, will make it say it prefers to not be listed in the taskbar. Taskbar implementations may or may not follow this hint. 0236 </description> 0237 <arg name="skip" type="uint" summary="Boolean value that sets whether to skip the taskbar"/> 0238 </request> 0239 0240 <enum name="error" since="4"> 0241 <entry name="panel_not_auto_hide" value="0" 0242 summary="Request panel_auto_hide performed on a surface which does not correspond to an auto-hide panel."/> 0243 </enum> 0244 0245 <request name="panel_auto_hide_hide" since="4"> 0246 <description summary="Hide the auto-hiding panel"> 0247 A panel surface with panel_behavior auto_hide can perform this request to hide the panel 0248 on a screen edge without unmapping it. The compositor informs the client about the panel 0249 being hidden with the event auto_hidden_panel_hidden. 0250 0251 The compositor will restore the visibility state of the 0252 surface when the pointer touches the screen edge the panel borders. Once the compositor restores 0253 the visibility the event auto_hidden_panel_shown will be sent. This event will also be sent 0254 if the compositor is unable to hide the panel. 0255 0256 The client can also request to show the panel again with the request panel_auto_hide_show. 0257 </description> 0258 </request> 0259 0260 <request name="panel_auto_hide_show" since="4"> 0261 <description summary="Show the auto-hiding panel"> 0262 A panel surface with panel_behavior auto_hide can perform this request to show the panel 0263 again which got hidden with panel_auto_hide_hide. 0264 </description> 0265 </request> 0266 0267 <request name="set_panel_takes_focus" since="4"> 0268 <description summary="Whether a panel takes focus"> 0269 By default various org_kde_plasma_surface roles do not take focus and cannot be 0270 activated. With this request the compositor can be instructed to pass focus also to this 0271 org_kde_plasma_surface. 0272 </description> 0273 <arg name="takes_focus" type="uint" summary="Boolean value that sets whether the panel takes focus"/> 0274 </request> 0275 0276 <event name="auto_hidden_panel_hidden" since="4"> 0277 <description summary="Auto-hiding panel is hidden"> 0278 An auto-hiding panel got hidden by the compositor. 0279 </description> 0280 </event> 0281 0282 <event name="auto_hidden_panel_shown" since="4"> 0283 <description summary="Auto-hiding panel is shown"> 0284 An auto-hiding panel got shown by the compositor. 0285 </description> 0286 </event> 0287 0288 <!-- Skip switcher --> 0289 <request name="set_skip_switcher" since="5"> 0290 <description summary="make the window not appear in a switcher"> 0291 Setting this bit will indicate that the window prefers not to be listed in a switcher. 0292 </description> 0293 <arg name="skip" type="uint" summary="Boolean value that sets whether to skip the window switcher."/> 0294 </request> 0295 0296 <request name="open_under_cursor" since="7"> 0297 <description summary="open under cursor"> 0298 Request the initial position of this surface to be under the current 0299 cursor position. Has to be called before attaching any buffer to this surface. 0300 </description> 0301 </request> 0302 </interface> 0303 </protocol>