KDE Human Interface Guidelines

Welcome to the KDE Human Interface Guidelines! Following them will help you build a beautiful and powerful app that feels at home when run in KDE Plasma, and works well outside of it. Users will learn how to use your app quickly, accomplish their goals with ease, and encounter fewer issues requiring support.

This document covers KDE's design philosophy and culture, common workflows and patterns, standard user interface conventions, and recommendations for platform integration.

Why is good design so important?

Design determines how well something fulfills its functional purpose and how enjoyable it is to interact with. If either is lacking, the result will be frustrating. People won't want to use a poorly-designed app, and if forced to, they'll be resentful and spread negativity about it. Avoid this through good design!

Design involves targeted decisions and trade-offs that bring a project closer to its intended goals and usage paradigms. The best apps know which users and use cases they're targeting, and which ones they leave for others. It's better to succeed by focusing on what you can do well than to spread yourself thin and fail. Under-promise and over-deliver, never the reverse.

Topics not covered

This document is a set of design guidelines, not instructions for implementing every specific component. While some technical guidance will be provided, much more detail can be found in the components' own usage and API documentation as well as the source code of existing KDE apps. It's more of a what and a why, not a how.

This document is not intended to be an ironclad law code. By learning and following the rules, you'll understand how to safely innovate within the guidelines, and when it can be appropriate to break them if it produces a superior result.

Contributing

This is a living document, intended to be updated over time to reflect current KDE design trends and best practices. Contributions are welcome!

Content is written in Markdown, and the source files are hosted in a Git repository. To quickly edit a page, the GitLab editor can be opened on any page with the “Edit this page” button in the drawer on the right. Tasks and changes are organized via https://invent.kde.org. To learn how to submit changes, see the README file.

Read the guidelines

Click on any of these tiles to jump to a page: