Quickshell: Build Your Own Desktop on Linux

🔳 Instead of relying on ready-made solutions (Waybar, Polybar, ...), you create your own.


Quickshell: Build Your Own Desktop on Linux


Quickshell is a modern toolkit built with C++ for creating desktop interface components — bars, widgets, lock screens, launchers, and even complete environments — using QtQuick + QML.

  • It is not a “bar program”.
  • It is also not a complete, ready-made desktop.

It is a foundation for building a custom desktop, running alongside a compositor like Hyprland, Sway, or i3.

In practice, it replaces several pieces:

  • status bar
  • notifications
  • widgets
  • lockscreen
  • display manager
  • system controls

Example

Quickshell uses:

  • QtQuick (UI)
  • QML (configuration/programming)
  • Hot reload (save → instant update) ([Quickshell][2])

Simple example (bar):

PanelWindow {
  anchors {
    top: true
    left: true
    right: true
  }

  implicitHeight: 30

  Text {
    anchors.centerIn: parent
    text: "hello world"
  }
}

Native integrations:

One of its strengths is that it comes already integrated with the system:

  • Wayland + X11 (windowing)
  • Hyprland, i3, Sway (workspaces)
  • PipeWire (audio)
  • BlueZ (Bluetooth)
  • UPower (battery)
  • MPRIS (media players)
  • standard system tray

This eliminates a lot of boilerplate.


Installation

  • Arch Linux / EndeavourOS / Manjaro
yay -S quickshell
### Or
paru -S quickshell

Or build from scratch on any system:

Dependencies:

sudo apt install cmake ninja-build qt6-base-dev qt6-declarative-dev \
qt6-wayland wayland-protocols libpipewire-0.3-dev \
libdbus-1-dev libxkbcommon-dev

Clone:

git clone https://github.com/quickshell-mirror/quickshell.git
cd quickshell

Build:

cmake -B build -G Ninja
cmake --build build

Install:

sudo cmake --install build

Run:

quickshell

Configuration:

~/.config/quickshell/main.qml

Minimal example:

import QtQuick
import Quickshell

PanelWindow {
    anchors.top: true
    anchors.left: true
    anchors.right: true
    implicitHeight: 30

    Text {
        anchors.centerIn: parent
        text: "Quickshell is working"
    }
}
  • Works best on Wayland (Hyprland, Sway, etc.)
  • May be limited on X11
  • Still in development → bugs are normal
  • No config = blank screen

For more information, visit the repository.


Learn Qt

https://terminalroot.com.br/qt

Complete C++ Course

https://terminalroot.com.br/promo


cpp qt gnulinux


Share


YouTube channel

Subscribe


Marcos Oliveira

Marcos Oliveira

Software developer
https://github.com/terroo

Related articles