Fast launcher workflow
Quick access to your core apps, work surfaces, and utilities without visual noise or startup drag.
A dock that adapts to your workflow.
A fast, customizable dock for Linux, FreeBSD, and OpenBSD, written in Python with built-in applets. Supports X11 on all three systems and Wayland on Linux.
Docking combines launcher speed, desktop awareness, and a modular widget system in one polished surface.
Quick access to your core apps, work surfaces, and utilities without visual noise or startup drag.
Ship a dock that already knows how to show system status, weather, media, timers, notes, and more.
Adjust themes, sizing, behavior, and pinned item icons so the dock fits the desktop you already use.
Keep the dock where it belongs, visible when needed and out of the way when focus matters.
Built for Linux and BSD setups that span more than one desktop environment and more than one way of working.
Add your own widgets and behaviors without compromising the dock’s main runtime model.
Docking selects the best backend for the current session and falls back cleanly when a compositor does not expose every window-management feature.
MATE, Xfce, Cinnamon, KDE, GNOME Flashback
Running indicators, window actions, previews, workspace behavior, dodge/auto-hide, and desktop integration.
Xfce reference desktop
Dock placement, window tracking and actions, workspace behavior, auto-hide, and system applets. Includes Classic Bluetooth and camera controls.
Xfce reference desktop
Dock placement, window tracking and actions, workspace behavior, auto-hide, and system applets, including camera controls. Bluetooth is unavailable on OpenBSD.
GNOME / Mutter 45+
Dock placement, window tracking, activate/minimize/close actions, previews, workspace switching, Show Desktop, and Alt+Tab hiding.
KWin / Plasma 6
Layer-shell placement, AT-SPI window tracking with titles, and workspace switching through KWin D-Bus. Window actions depend on what KWin exposes.
Cinnamon 6.4 and newer
Dock placement, running-window tracking, focus and cycling, minimize and close through Cinnamon's built-in shell API, including activation across workspaces. Placement respects panels and the selected monitor, including sessions without layer-shell. Previews remain unavailable.
COSMIC desktop sessions
Native layer-shell placement with COSMIC toplevel, workspace, overlap, and preview protocol paths where available.
Niri compositor sessions
Layer-shell placement, window tracking with titles, previews, workspace switching, Show Desktop, idle time, and color picker - via native Niri IPC.
Wayfire compositor sessions
Layer-shell placement, window tracking with titles, activate/minimize/close actions, workspace switching, Show Desktop, visibility-based dodge, window picking, and color picker - via native Wayfire IPC.
Sway, labwc, river, Louvre-based, Jay, Miriway, Phosh / phoc
Dock placement, window tracking, actions, workspaces, previews, and idle time are enabled independently. Jay and Miriway require trusted-client configuration; phoc can provide native window thumbnails.
Treeland compositor sessions
Layer-shell placement, window tracking and previews, Show Desktop, and overlap-driven hiding. Left-edge overlap falls back while Treeland's current checker remains limited.
Nested and gaming sessions
Dock placement as an external overlay, including sessions without --expose-wayland. GameScope does not expose general window management to regular clients.
Safe launcher and applet mode
Docking remains usable without running indicators, previews, or workspace switching when no supported integration is available.
Filter the catalog by workflow and find the applets that make Docking more than a launcher: system controls, command launchers, media, notes, weather, privacy indicators, and folder-friendly utilities.
Showing 64 applets
No applets match that search.
Choose a Linux package below, or follow the FreeBSD and OpenBSD installation guides.
Add the repository once and receive updates through your package manager. Supports Ubuntu 22.04/24.04/26.04 and Debian 12/13, on both x64 and arm64.
Ubuntu derivatives, including Linux Mint 21.x/22.x, use their Ubuntu base through UBUNTU_CODENAME. Their desktops are not separately tested.
sudo apt update
sudo apt install curl ca-certificates gnupg
curl -fsSL https://dl.cloudsmith.io/public/docking/docking-apt/gpg.key \
-o /tmp/docking-cloudsmith.asc
gpg --show-keys --with-fingerprint /tmp/docking-cloudsmith.asc
Before continuing, check that the fingerprint is 811B48CD4A69170DD98F4F49185CED80A7947754.
Copy the complete block below. It detects your distribution base and stops before writing the source if the base is unsupported or cannot be identified.
(
set -eu
sudo install -d -m 0755 /etc/apt/keyrings
sudo install -m 0644 /tmp/docking-cloudsmith.asc /etc/apt/keyrings/docking-cloudsmith.asc
. /etc/os-release
APT_DISTRO="${ID:-}"
APT_SUITE="${VERSION_CODENAME:-}"
if [ -n "${UBUNTU_CODENAME:-}" ]; then
APT_DISTRO=ubuntu
APT_SUITE="$UBUNTU_CODENAME"
fi
if [ "$APT_DISTRO" = debian ] && [ -z "$APT_SUITE" ]; then
DEBIAN_VERSION=$(cat /etc/debian_version 2>/dev/null || true)
case "$DEBIAN_VERSION" in
12|12.*|bookworm|bookworm/sid) APT_SUITE=bookworm ;;
13|13.*|trixie|trixie/sid) APT_SUITE=trixie ;;
esac
fi
case "$APT_DISTRO:$APT_SUITE" in
ubuntu:jammy|ubuntu:noble|ubuntu:resolute|debian:bookworm|debian:trixie) ;;
*) echo "Unsupported APT base: $APT_DISTRO/$APT_SUITE" >&2; exit 1 ;;
esac
sudo tee /etc/apt/sources.list.d/docking.sources > /dev/null <<EOF
Types: deb
URIs: https://dl.cloudsmith.io/public/docking/docking-apt/deb/${APT_DISTRO}
Suites: ${APT_SUITE}
Components: main
Architectures: amd64 arm64
Signed-By: /etc/apt/keyrings/docking-cloudsmith.asc
EOF
sudo apt update
sudo apt install docking
)
For later updates, run sudo apt update and sudo apt upgrade. Existing .deb installations can upgrade directly through APT.
APT packages hosted by Cloudsmith.
Repository installation is available after the first verified RPM publication. Until then, use the RPM release downloads above.
Add the repository once and receive updates through your package manager. Supports Fedora 44/45 and openSUSE Tumbleweed/Leap 16.0, on both x64 and arm64.
if command -v zypper > /dev/null 2>&1; then
sudo zypper --non-interactive install curl gpg2
else
sudo dnf install -y curl gnupg2
fi
curl -fsSL https://dl.cloudsmith.io/public/docking/docking-rpm/gpg.key \
-o /tmp/docking-cloudsmith.asc
gpg --show-keys --with-fingerprint /tmp/docking-cloudsmith.asc
Before continuing, check that the fingerprint is 04C7240DAD480161C0DFC791859E104126138494.
Copy the complete block below. It selects DNF on Fedora or Zypper on openSUSE.
(
set -eu
sudo rpm --import /tmp/docking-cloudsmith.asc
if command -v zypper > /dev/null 2>&1; then
REPO_DIR=/etc/zypp/repos.d
else
REPO_DIR=/etc/yum.repos.d
fi
sudo install -d -m 0755 "$REPO_DIR"
sudo tee "$REPO_DIR/docking-rpm.repo" > /dev/null <<'EOF'
[docking-rpm]
name=Docking
baseurl=https://dl.cloudsmith.io/public/docking/docking-rpm/rpm/any-distro/any-version/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://dl.cloudsmith.io/public/docking/docking-rpm/gpg.key
sslverify=1
type=rpm-md
metadata_expire=300
[docking-rpm-noarch]
name=Docking noarch
baseurl=https://dl.cloudsmith.io/public/docking/docking-rpm/rpm/any-distro/any-version/noarch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://dl.cloudsmith.io/public/docking/docking-rpm/gpg.key
sslverify=1
type=rpm-md
metadata_expire=300
EOF
if command -v zypper > /dev/null 2>&1; then
sudo zypper --gpg-auto-import-keys refresh
sudo zypper install docking
else
sudo dnf install docking
fi
)
For later updates, run sudo dnf upgrade or sudo zypper update. Existing .rpm installations can upgrade directly through the repository.
RPM packages hosted by Cloudsmith.
Use an X11 desktop and a package matching your OS release and architecture. BSD packages are distributed through GitHub Releases, starting with the first release containing BSD support.
amd64 · .pkg
Installation & checksum guide Download FreeBSD packageamd64 · .tgz
Installation & checksum guide Download OpenBSD packageFollow the guide to install dependencies, verify the package checksum, and install or update with pkg or pkg_add. See GitHub Releases for current package availability.
Docking is open source and built for people who want control, extensibility, and a clean code path into custom workflows.
For BSD, install the native dependencies from the BSD installation guide before setting up the Python environment.
git clone https://github.com/edumucelli/docking.git
cd docking
python3 -m venv --system-site-packages .venv
source .venv/bin/activate
pip install -e ".[dev]"
PYGOBJECT_STUB_CONFIG=Gtk3,Gdk3 \
pip install --no-deps -r requirements-typing.txt
Docking gives you control without getting in your way.
Docking supports Linux with X11 or Wayland, and FreeBSD and OpenBSD with X11. Linux Wayland integration depends on the desktop: GNOME Shell bridge, KWin, COSMIC protocols, wlroots layer-shell and advertised protocols, or reduced mode when compositor integration is unavailable.
Yes. Docking has an extensible applet system. Each applet is a Python package with a state, render, and applet module. You can add custom widgets and behaviors without modifying the dock's core runtime.
Yes, on Linux. Wayland support is selected per desktop: GNOME Shell bridge, KWin, COSMIC protocols, wlroots layer-shell and advertised protocols, or reduced mode when needed. FreeBSD and OpenBSD support uses X11.
Applet availability depends on the operating system and installed services. Cam Shield supports FreeBSD and OpenBSD. Classic Bluetooth is supported on FreeBSD; OpenBSD has no Bluetooth stack.
Yes. Docking is licensed under GPL-3.0-or-later and fully open source. The code is hosted on GitHub and contributions are welcome.
Install a build, star the project, and shape a dock that fits the way you actually work.