#### Overview

# SpiceClientGtk Overview

SpiceClientGtk provides GTK widgets for embedding a SPICE display in a GTK application.

## Display Widget

The `SpiceDisplay` widget renders the guest framebuffer and handles keyboard and mouse input. It supports both software rendering and OpenGL acceleration.

    SpiceDisplay *display = spice_display_new(session, 0);
    gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(display));

### Keyboard and Mouse Grabbing

The display widget can grab keyboard and mouse input to provide a seamless guest interaction experience. Grabbing behavior is controlled by the `SpiceDisplay:grab-keyboard` and `SpiceDisplay:grab-mouse` properties. A custom key sequence can be configured to release grabs using `spice_display_set_grab_keys()`.

### Scaling and Zoom

The widget supports display scaling (controlled by `SpiceDisplay:scaling`) and zoom level adjustment (`SpiceDisplay:zoom-level`).

## GTK Session

`SpiceGtkSession` provides GTK integration for clipboard sharing and automatic USB redirection, bridging the GTK clipboard with the SPICE agent clipboard.

## USB Device Widget

`SpiceUsbDeviceWidget` is a ready-made widget that lists available USB devices with connect/disconnect toggle buttons.