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>