[![crates.io](https://img.shields.io/crates/v/smithay-client-toolkit.svg)](https://crates.io/crates/smithay-client-toolkit)
[![docs.rs](https://docs.rs/smithay-client-toolkit/badge.svg)](https://docs.rs/smithay-client-toolkit)
[![Build Status](https://github.com/Smithay/client-toolkit/workflows/Continuous%20Integration/badge.svg)](https://github.com/Smithay/client-toolkit/actions?query=workflow%3A%22Continuous+Integration%22)

# Smithay's Client Toolkit

This crate is a toolkit for writing wayland clients in rust, on top of [wayland-client](https://crates.io/crates/wayland-client).

Currently a work in progress, it currently provides the following utilities:

- Automatic binding of general wayland globals (`wl_compositor`, `wl_shm`, etc..)
- Abstraction to create windows (aka toplevel surfaces), abstracting the interaction
  with the shell (`xdg_shell` or `wl_shell`) and the drawing of decorations
- Wrapper for `wl_keyboard` for automatic keymap interpretation using `libxkbcommon.so`.
- Utilites for creating dpi aware surfaces.

## Documentation

The documentation for the master branch is [available online](https://smithay.github.io/client-toolkit/).

The documentation for the releases can be found on [docs.rs](https://docs.rs/smithay-client-toolkit).

## Requirements

Requires at least rust 1.65 to be used and version 1.15 of the wayland system libraries if
using the system backend.
