---
name: "wayland_proxy_t"
section: "3"
platform: "linux"
package: "waylandpp-dev"
version: "1.0.0-6+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/wayland_proxy_t"
---

# wayland\_proxy\_t(3)

Represents a protocol object on the client side.

## NAME

wayland::proxy\_t - Represents a protocol object on the client side.

## SYNOPSIS

`#include <wayland-client.hpp>`

Inherited by **wayland::buffer\_t**, **wayland::callback\_t**, **wayland::compositor\_t**, **wayland::data\_device\_manager\_t**, **wayland::data\_device\_t**, **wayland::data\_offer\_t**, **wayland::data\_source\_t**, **wayland::display\_t**, **wayland::keyboard\_t**, **wayland::output\_t**, **wayland::pointer\_t**, **wayland::presentation\_feedback\_t**, **wayland::presentation\_t**, **wayland::region\_t**, **wayland::registry\_t**, **wayland::seat\_t**, **wayland::shell\_surface\_t**, **wayland::shell\_t**, **wayland::shm\_pool\_t**, **wayland::shm\_t**, **wayland::subcompositor\_t**, **wayland::subsurface\_t**, **wayland::surface\_t**, **wayland::touch\_t**, **wayland::viewport\_t**, **wayland::viewporter\_t**, **wayland::xdg\_activation\_token\_v1\_t**, **wayland::xdg\_activation\_v1\_t**, **wayland::xdg\_popup\_t**, **wayland::xdg\_positioner\_t**, **wayland::xdg\_surface\_t**, **wayland::xdg\_toplevel\_t**, **wayland::xdg\_wm\_base\_t**, **wayland::zwp\_confined\_pointer\_v1\_t**, wayland::zwp\_fullscreen\_shell\_mode\_feedback\_v1\_t, **wayland::zwp\_fullscreen\_shell\_v1\_t**, **wayland::zwp\_idle\_inhibit\_manager\_v1\_t**, **wayland::zwp\_idle\_inhibitor\_v1\_t**, **wayland::zwp\_input\_method\_context\_v1\_t**, **wayland::zwp\_input\_method\_v1\_t**, wayland::zwp\_input\_panel\_surface\_v1\_t, **wayland::zwp\_input\_panel\_v1\_t**, **wayland::zwp\_input\_timestamps\_manager\_v1\_t**, **wayland::zwp\_input\_timestamps\_v1\_t**, **wayland::zwp\_keyboard\_shortcuts\_inhibit\_manager\_v1\_t**, **wayland::zwp\_keyboard\_shortcuts\_inhibitor\_v1\_t**, **wayland::zwp\_linux\_buffer\_params\_v1\_t**, **wayland::zwp\_linux\_buffer\_release\_v1\_t**, **wayland::zwp\_linux\_dmabuf\_feedback\_v1\_t**, **wayland::zwp\_linux\_dmabuf\_v1\_t**, **wayland::zwp\_linux\_explicit\_synchronization\_v1\_t**, **wayland::zwp\_linux\_surface\_synchronization\_v1\_t**, **wayland::zwp\_locked\_pointer\_v1\_t**, **wayland::zwp\_pointer\_constraints\_v1\_t**, **wayland::zwp\_pointer\_gesture\_hold\_v1\_t**, **wayland::zwp\_pointer\_gesture\_pinch\_v1\_t**, **wayland::zwp\_pointer\_gesture\_swipe\_v1\_t**, **wayland::zwp\_pointer\_gestures\_v1\_t**, **wayland::zwp\_primary\_selection\_device\_manager\_v1\_t**, wayland::zwp\_primary\_selection\_device\_v1\_t, **wayland::zwp\_primary\_selection\_offer\_v1\_t**, **wayland::zwp\_primary\_selection\_source\_v1\_t**, **wayland::zwp\_relative\_pointer\_manager\_v1\_t**, **wayland::zwp\_relative\_pointer\_v1\_t**, **wayland::zwp\_tablet\_manager\_v1\_t**, **wayland::zwp\_tablet\_manager\_v2\_t**, **wayland::zwp\_tablet\_pad\_group\_v2\_t**, **wayland::zwp\_tablet\_pad\_ring\_v2\_t**, **wayland::zwp\_tablet\_pad\_strip\_v2\_t**, **wayland::zwp\_tablet\_pad\_v2\_t**, **wayland::zwp\_tablet\_seat\_v1\_t**, **wayland::zwp\_tablet\_seat\_v2\_t**, **wayland::zwp\_tablet\_tool\_v1\_t**, **wayland::zwp\_tablet\_tool\_v2\_t**, **wayland::zwp\_tablet\_v1\_t**, **wayland::zwp\_tablet\_v2\_t**, **wayland::zwp\_text\_input\_manager\_v1\_t**, **wayland::zwp\_text\_input\_manager\_v3\_t**, **wayland::zwp\_text\_input\_v1\_t**, **wayland::zwp\_text\_input\_v3\_t**, **wayland::zwp\_xwayland\_keyboard\_grab\_manager\_v1\_t**, **wayland::zwp\_xwayland\_keyboard\_grab\_v1\_t**, **wayland::zxdg\_decoration\_manager\_v1\_t**, **wayland::zxdg\_exported\_v1\_t**, **wayland::zxdg\_exported\_v2\_t**, **wayland::zxdg\_exporter\_v1\_t**, **wayland::zxdg\_exporter\_v2\_t**, **wayland::zxdg\_imported\_v1\_t**, **wayland::zxdg\_imported\_v2\_t**, **wayland::zxdg\_importer\_v1\_t**, **wayland::zxdg\_importer\_v2\_t**, **wayland::zxdg\_output\_manager\_v1\_t**, **wayland::zxdg\_output\_v1\_t**, **wayland::zxdg\_popup\_v6\_t**, **wayland::zxdg\_positioner\_v6\_t**, **wayland::zxdg\_shell\_v6\_t**, **wayland::zxdg\_surface\_v6\_t**, **wayland::zxdg\_toplevel\_decoration\_v1\_t**, and **wayland::zxdg\_toplevel\_v6\_t**.

### Public Types

enum class **wrapper\_type** { **standard**, **display**, **foreign**, **proxy\_wrapper** }\

### Public Member Functions

**proxy\_t** (wl\_proxy \*p, **wrapper\_type** t=**wrapper\_type::standard**, **event\_queue\_t** const &queue=**event\_queue\_t**())\
 Cronstruct a **proxy\_t** from a wl\_proxy pointer.  **proxy\_t** (const **proxy\_t** &p)\
 Copy Constructior.  **proxy\_t** & **operator=** (const **proxy\_t** &p)\
 Assignment operator.  **proxy\_t** (**proxy\_t** &&p) noexcept\
 Move Constructior.  **proxy\_t** & **operator=** (**proxy\_t** &&p) noexcept\
 Move Asignment operator.  **~proxy\_t** ()\
 Destructor.  uint32\_t **get\_id** () const\
 Get the id of a proxy object.  std::string **get\_class** () const\
 Get the interface name (class) of a proxy object.  uint32\_t **get\_version** () const\
 Get the protocol object version of a proxy object.  **wrapper\_type** **get\_wrapper\_type** () const\
 Get the type of a proxy object.  void **set\_queue** (**event\_queue\_t** queue)\
 Assign a proxy to an event queue.  wl\_proxy \* **c\_ptr** () const\
 Get a pointer to the underlying C struct.  bool **proxy\_has\_object** () const\
 Check whether this wrapper actually wraps an object.  **operator bool** () const\
 Check whether this wrapper actually wraps an object.  bool **operator==** (const **proxy\_t** &right) const\
 Check whether two wrappers refer to the same object.  bool **operator!=** (const **proxy\_t** &right) const\
 Check whether two wrappers refer to different objects.  void **proxy\_release** ()\
 Release the wrapped object (if any), making this an empty wrapper.

## Detailed Description

Represents a protocol object on the client side.

A **proxy\_t** acts as a client side proxy to an object existing in the compositor. The proxy is responsible for converting requests made by the clients with proxy\_t::marshal() or proxy\_t::marshal\_constructor() into Wayland's wire format. Events coming from the compositor are also handled by the proxy, which will in turn call the handler set with the on\_XXX() functions of each interface class.

With the exception of the function **proxy\_t::set\_queue()**, functions accessing a **proxy\_t** are not normally used by client code. Clients should normally use the higher level interface classed generated by the scanner to interact with compositor objects.

Definition at line **109** of file **wayland-client.hpp**.

## Member Enumeration Documentation

### enum class wayland::proxy\_t::wrapper\_type` [strong]`

Underlying wl\_proxy type and properties of a **proxy\_t** that affect construction, destruction, and event handling

**Enumerator**

- *standard*

  *C pointer is a standard type compatible with wl\_proxy\*. Events are dispatched and it is destructed when the* **proxy\_t** *is destructed. User data is set.*

- *display*

  *C pointer is a wl\_display\*. No events are dispatched, wl\_display\_disconnect is called when the* **proxy\_t** *is destructed. User data is set.*

- *foreign*

  *C pointer is a standard type compatible with wl\_proxy\*, but another library owns it and it should not be touched in a way that could affect the operation of the other library. No events are dispatched, wl\_proxy\_destroy is not called when the* **proxy\_t** *is destructed, user data is not touched. Consequently, there is no reference counting for the* **proxy\_t***. Lifetime of such wrappers should preferably be short to minimize the chance that the owning library decides to destroy the wl\_proxy.*

- *proxy\_wrapper*

  *C pointer is a wl\_proxy\* that was constructed with wl\_proxy\_create\_wrapper. No events are dispatched, wl\_proxy\_wrapper\_destroy is called when the* **proxy\_t** *is destroyed. Reference counting is active. A reference to the* **proxy\_t** *creating this proxy wrapper is held to extend its lifetime until after the proxy wrapper is destroyed.*

*Definition at line* **116** *of file* **wayland-client.hpp***.*

## Constructor & Destructor Documentation

### wayland::proxy\_t::proxy\_t (wl\_proxy \* p, wrapper\_type t = wrapper\_type::standard, event\_queue\_t const & queue = event\_queue\_t`()`)

*Cronstruct a* **proxy\_t** *from a wl\_proxy pointer.*

**Parameters**

*p Pointer to a wl\_proxy* \
 *t type and requested behavior of the pointer* \
 *queue initial event queue reference to retain (set\_queue is not called)*

### wayland::proxy\_t::proxy\_t (const proxy\_t & p)

*Copy Constructior.*

**Parameters**

*p A* **proxy\_t** *object*

*Creates a copy of the* **proxy\_t** *object that points to the sme proxy.*

### wayland::proxy\_t::proxy\_t (proxy\_t && p)` [noexcept]`

*Move Constructior.*

**Parameters**

*p A* **proxy\_t** *object*

*Transfers the contents of the* **proxy\_t** *object on the right to the* **proxy\_t** *object being constructed.*

### wayland::proxy\_t::~proxy\_t ()

*Destructor. If this is the last copy of a paticular proxy, the proxy itself will be detroyed and an destroy request will be marshaled. If the proxy belongs to a wl\_display object, the connection will be closed. Special rules apply to proxy wrappers and foreign proxies. See* **wrapper\_type** *for more infos.*

## Member Function Documentation

### wl\_proxy \* wayland::proxy\_t::c\_ptr () const

*Get a pointer to the underlying C struct.*

**Returns**

*The underlying wl\_proxy wrapped by this* **proxy\_t** *if it exists, otherwise an exception is thrown*

### std::string wayland::proxy\_t::get\_class () const

*Get the interface name (class) of a proxy object.*

**Returns**

*The interface name of the object associated with the proxy*

### uint32\_t wayland::proxy\_t::get\_id () const

*Get the id of a proxy object.*

**Returns**

*The id the object associated with the proxy*

### uint32\_t wayland::proxy\_t::get\_version () const

*Get the protocol object version of a proxy object. Gets the protocol object version of a proxy object, or 0 if the proxy was created with unversioned API.*

*A returned value of 0 means that no version information is available, so the caller must make safe assumptions about the object's real version.*

**display\_t** *will always return version 0.*

**Returns**

*The protocol object version of the proxy or 0*

### wrapper\_type wayland::proxy\_t::get\_wrapper\_type () const` [inline]`

*Get the type of a proxy object.*

*Definition at line* **302** *of file* **wayland-client.hpp***.*

### wayland::proxy\_t::operator bool () const

*Check whether this wrapper actually wraps an object.*

**Returns**

*true if there is an underlying object, false if this wrapper is empty*

### bool wayland::proxy\_t::operator!= (const proxy\_t & right) const

*Check whether two wrappers refer to different objects.*

### proxy\_t & wayland::proxy\_t::operator= (const proxy\_t & p)

*Assignment operator.*

**Parameters**

*p A* **proxy\_t** *object*

*After an assignment, both* **proxy\_t** *objects will point to the same proxy.*

### proxy\_t & wayland::proxy\_t::operator= (proxy\_t && p)` [noexcept]`

*Move Asignment operator.*

**Parameters**

*p A* **proxy\_t** *object*

*Swaps the contents of both* **proxy\_t** *objects.*

### bool wayland::proxy\_t::operator== (const proxy\_t & right) const

*Check whether two wrappers refer to the same object.*

### bool wayland::proxy\_t::proxy\_has\_object () const

*Check whether this wrapper actually wraps an object.*

**Returns**

*true if there is an underlying object, false if this wrapper is empty*

### void wayland::proxy\_t::proxy\_release ()

*Release the wrapped object (if any), making this an empty wrapper. Note that* **display\_t** *instances cannot be released this way. Attempts to do so are ignored.*

**Examples** **foreign\_display.cpp***.*

### void wayland::proxy\_t::set\_queue (event\_queue\_t queue)

*Assign a proxy to an event queue.*

**Parameters**

*queue The event queue that will handle this proxy*

*Assign proxy to event queue. Events coming from proxy will be queued in queue instead of the display's main queue.*

*See also:* **display\_t::dispatch\_queue()***.*

**Examples** **proxy\_wrapper.cpp***.*

## Author

*Generated automatically by Doxygen for Wayland++ from the source code.*
