<protocol name="gtk">

  <interface name="gtk_shell" version="3">
    <description summary="gtk specific extensions">
      gtk_shell is a protocol extension providing additional features for
      clients implementing it. It is not backward compatible, and a client must
      always only bind to the specific version it implements. If a client binds
      to a version different from the version the server provides, an error will
      be raised.
    </description>

    <enum name="capability">
      <entry name="global_app_menu" value="1"/>
      <entry name="global_menu_bar" value="2"/>
      <entry name="desktop_icons" value="3"/>
    </enum>

    <event name="capabilities">
      <arg name="capabilities" type="uint"/>
    </event>

    <request name="get_gtk_surface">
      <arg name="gtk_surface" type="new_id" interface="gtk_surface"/>
      <arg name="surface" type="object" interface="wl_surface"/>
    </request>

    <request name="set_startup_id" since="3">
      <arg name="startup_id" type="string" allow-null="true"/>
    </request>
  </interface>

  <interface name="gtk_surface" version="3">
    <request name="set_dbus_properties">
      <arg name="application_id" type="string" allow-null="true"/>
      <arg name="app_menu_path" type="string" allow-null="true"/>
      <arg name="menubar_path" type="string" allow-null="true"/>
      <arg name="window_object_path" type="string" allow-null="true"/>
      <arg name="application_object_path" type="string" allow-null="true"/>
      <arg name="unique_bus_name" type="string" allow-null="true"/>
    </request>

    <request name="set_modal"/>
    <request name="unset_modal"/>
  </interface>

</protocol>
