# Chapter 1. Introduction

This document contains general information about kwm, a feature reference, and technical information useful for the developers of the kwm control module and the system sound module.

For further information how to customize kwm at the low level (only interesting for the kwinconfig developers) please have a look at the generated kwmrc and the source code.

For all programmers: check out `kwm.h` in libkdecore for information how to use kwm for your purposes. For modules, the class `KWMModuleApplication` is a good example on how to write modules.

# 1.1. Features

kwm is the window manager of choice for KDE. Among other things, it offers:

- Complete integration into KDE.

- Complete keyboard control.

- Modern look and feel with unique window titles and icons which do not need to be defined in cryptic resource files.

- A convenient mini command-line window with history for quick access to a shell prompt.

- Ability to be reconfigured at runtime without restarting. This includes look and feel issues as well as keyboard shortcuts.

- Second generation window manager. KWM uses a modern GUI toolkit for its widgets (buttons, menus, listboxes, etc.) instead of bloating the code with a proprietary or plain Xlib implementation.

- Excellent focus handling even if you work on different virtual desktops (no longer desktop-switching-and-losing-focus like it is standard with other window managers).

- `kstart` utiliy to launch legay applications with special KDE window properties such as iconified, maximized, a certain virtual desktop, a special decoration or sticky. Simply run `kstart -help` for further informations.

- Includes session management and a working session management proxy for legacy applications. This proxy is able to restore your applications to their previous state, including window properties (maximized, sticky, iconified, etc.) and on the correct virtual desktop.

- Modern module concept that uses the X Server where it is possible. KWM modules are also very independent: they can be started before or after kwm. KWM can be restarted while the modules are still running and will reconnect them automatically.

- Some powerful modules, such as the KDE desktop panel (which also includes a taskbar) and an extremely fancy desktop pager .

- Offers some extensions to the X Server in `kwm.h`: Now applications can even maximize themselves (or sticky, or decorate/undecorate or whatever) and define mini icons. This works also for mapped (visible) windows.