Skip to content
📖 3 min🎯Difficulty:

The Problem

You've picked up a technical book before, skipped ahead to the interesting part, got confused, and put it down. The issue wasn't you — it was the book's structure fighting against how people actually learn.

This book is designed to be read in order, cover to cover, at least for the first pass. Here's how to get the most out of it.

Read Linearly, But Experiment Freely

Each chapter builds on the last. Part I assumes you've read Part 0. Part III assumes you've read Parts I and II. The projects at the end of each major section explicitly reference concepts and components from earlier chapters.

That said: when you finish a chapter, don't just nod and move on. Open the matching example in examples/, run it, change something, break it, fix it. The exercises at the end of each chapter are designed to make you think, not just repeat.

Chapter Structure

Every teaching chapter follows the same template:

  1. The Problem — A short scenario in plain English that motivates the concept
  2. The Naive Approach — Why the obvious solution doesn't work well
  3. Mental Model — An analogy that reframes the problem
  4. The Idea — The concept introduced in words before code
  5. Let's Build It — First code example, explained line by line
  6. Let's Improve It — An iteration on the first example
  7. Common Mistake — The pitfall beginners hit with this concept
  8. Under the Hood — What's happening internally (verified against actual sources)
  9. Professional Tip — How experienced users handle this
  10. Diagram — Visual explanation
  11. Exercises — Three difficulty levels (⭐, ⭐⭐, ⭐⭐⭐)
  12. Recap — Summary and link to next chapter

You can skip sections, but you'll learn more if you read them in order.

Examples Directory

Every chapter that teaches a concept has a matching folder in examples/:

examples/
├── 001-hello-world/
├── 002-properties/
├── 003-anchors/
...

Each folder contains a self-contained, runnable QML file plus a README explaining how to run it. The numbering matches the teaching order, so examples/001-hello-world/ corresponds to Part I's "Hello World" chapter.

To run an example:

bash
cd examples/001-hello-world/
quickshell ./shell.qml

Or if the example is a standalone QML file (no Quickshell features):

bash
qml6 ./main.qml

You'll learn more by running, breaking, and fixing the examples than by reading a hundred pages.

Exercises

Each chapter has three exercises marked with stars:

  • ⭐ — The exercise directly reinforces the chapter's concept. You should be able to do it in a few minutes.
  • ⭐⭐ — The exercise combines the chapter's concept with something from a previous chapter. Expect to spend 10–15 minutes.
  • ⭐⭐⭐ — The exercise requires synthesis or research. These are open-ended and may take 30 minutes or more.

Do at least the ⭐ exercise before moving on. If you're stuck on a ⭐⭐⭐, it's fine to skip it and come back later.

Diagrams

Chapters include Mermaid diagrams that visualize the concept. These are rendered as interactive SVGs — you can pan, zoom, and click nodes to explore. If a diagram is unclear, the surrounding text is the primary explanation; the diagram is a supplement, not a replacement.

A Note on Versions

This book targets Quickshell 0.x (the current series) and Qt 6.7+. If you're reading this after those versions have moved on, some API details may have changed. The conceptual foundation will remain relevant — property bindings, signals, anchors, models — but check the release notes for any migration guidance.

Ready?

Turn the page to Part 0, where we'll cover the desktop fundamentals you need before writing a single line of QML.

What You've Learned
  • Read the book linearly — each chapter builds on the last
  • Run and experiment with the examples after every chapter
  • Do at least the ⭐ exercise before moving on
  • Mermaid diagrams are interactive supplements, not replacements for the text
  • The book targets Quickshell 0.x and Qt 6.7+

Built with VitePress. Licensed under MIT.