# How-to guides
These how-to guides cover the key aspects of working with Mir.

- [Developing a Compositor](developing-a-wayland-compositor-using-mir): build your own, custom compositor with Mir
- [Developing protocol extensions for Mir](developing-wayland-extension-protocols-for-mir-servers): extend your compositor with support for a custom protocol extension
- [Getting involved in Mir](getting_involved_in_mir): first steps to contributing to Mir
- [Using checkbox-mir](how-to-use-checkbox-mir): validating your environment using [checkbox-mir](https://snapcraft.io/checkbox-mir)
- [Calibrating a touchscreen device](how-to-calibrate-a-touchscreen-device): creating and using a calibration matrix using [the libinput snap](https://snapcraft.io/libinput)
- [Enabling graphics-core22 on a device](how-to-enable-graphics-core22-on-a-device): creating a `graphics-core22` provider snap for a new board
- [How to specify start up applications](how-to-specify-startup-apps.md)
- [How to handle user input](how-to-handle-keyboard-input.md)
- [Specifying CSD/SSD Preference](specifying-csd-ssd-preference.md)

```{toctree}
:hidden:

developing-a-wayland-compositor-using-mir
developing-wayland-extension-protocols-for-mir-servers
getting_involved_in_mir
how-to-use-checkbox-mir
how-to-calibrate-a-touchscreen-device
how-to-enable-graphics-core22-on-a-device
how-to-test-mir-for-a-release
how-to-update-symbols-map
how-to-specify-startup-apps
how-to-handle-keyboard-input
specifying-csd-ssd-preference
```
