Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
7e85bda
Used claude to create something to test.
cdmdotnet Feb 24, 2026
c78b665
I updated the wrong file
cdmdotnet Feb 24, 2026
fe4a51e
Fixed a build issue with a compile time race condition issue
cdmdotnet Feb 24, 2026
85da863
Added option under the Behaviour tab of the Preferences "Only Active …
cdmdotnet Feb 24, 2026
517ffc0
Updated package details for new dock name
cdmdotnet Feb 24, 2026
f7e6cd2
Updated package version number and several other package details
cdmdotnet Feb 25, 2026
8c9bb14
Starting updating package names
cdmdotnet Feb 25, 2026
ce117f0
Added window previewing
cdmdotnet Feb 25, 2026
7d745e4
0.12.1:
cdmdotnet Feb 25, 2026
e03e999
Merge branch 'feature/multi-monitor-app-tracking'
cdmdotnet Feb 26, 2026
086f304
- Add monitor-manager mode (`plank --monitor-manager`) to automatical…
cdmdotnet Mar 8, 2026
ccdca5e
Merge branch 'feature/multi-monitor-auto-instances'
cdmdotnet Mar 8, 2026
d2cadeb
Merge pull request #1 from zquestz/master
cdmdotnet Mar 8, 2026
9cbb829
- Fix monitor manager child instances starting on the wrong monitor: …
cdmdotnet Mar 12, 2026
036133f
Merge branch 'feature/multi-monitor-auto-instances'
cdmdotnet Mar 12, 2026
6220030
- Fix monitor manager child instances starting on the wrong monitor: …
cdmdotnet Mar 12, 2026
f8bef31
Merge branch 'feature/multi-monitor-auto-instances'
cdmdotnet Mar 12, 2026
fa33ace
0.12.4
cdmdotnet Jun 12, 2026
4bd0170
Merge upstream
cdmdotnet Jun 12, 2026
bd59eb8
Bugfix - Fix dock strut reservation for monitors not aligned to the v…
cdmdotnet Jun 15, 2026
436b7ae
0.12.5
cdmdotnet Jun 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ test-suite.log
*.la
*.gcda
*.gcno
*.deb
*.sh
coverage.xml
coverage.info
coveragereport
Expand Down Expand Up @@ -87,3 +89,4 @@ data/gschemas.compiled
data/net.launchpad.plank.gschema.valid
data/net.launchpad.plank.gschema.xml
data/plank.desktop
/pkg/
74 changes: 74 additions & 0 deletions DEBIAN/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,77 @@
plank-reloaded-plus (0.12.5-1) unstable; urgency=medium

* When exactly one app instance is on the current dock and that instance is
the active/focused window, clicking its dock icon now minimises the window
instead of re-focusing it

-- cdmdotnet Limited <support@cdmdotnet.com> Tue, 16 Jun 2026 00:00:00 +0000

plank-reloaded-plus (0.12.4-3) unstable; urgency=medium

* Fix docks on the inner edge of a monitor incorrectly reserving work area
space from the screen edge, making adjacent monitors unusable for window
snapping, maximising, and resizing
* Dock settings and launchers now follow the physical monitor rather than
the port name, so configurations survive dock or hub changes between sessions

-- cdmdotnet Limited <support@cdmdotnet.com> Thu, 12 Jun 2026 00:00:00 +0000

plank-reloaded-plus (0.12.3-1) unstable; urgency=medium

* Fix monitor manager child instances starting on the wrong monitor: managed
dock prefs are now applied before PositionManager initialises so the dock
renders at the correct position from the first frame
* Fix DBus object path assertion failures for monitors with hyphens in their
names (e.g. DP-2-8): illegal characters are sanitised to underscores
* Fix position retry storm: raise retry ceiling to 10 with verbose logging,
then warn once and stop rather than spamming CRITICAL on every configure event
* Fix On Primary Display and Active Display controls not locked when running as
a monitor manager child; all three monitor controls are now insensitive
* Fix monitor manager not exiting when its only child dock is closed: remove
unreliable loop.is_running() guard from the auto-quit check

-- cdmdotnet Limited <support@cdmdotnet.com> Thu, 12 Mar 2026 00:00:00 +0000

plank-reloaded-plus (0.12.2-1) unstable; urgency=medium

* Add --monitor-manager mode: automatically opens a dock on each connected
monitor, opens new docks when monitors are plugged in, closes docks when
monitors are unplugged — no script or manual per-monitor configuration needed
* When a monitor is unplugged its dock closes gracefully preserving settings
* Monitor manager exits automatically when all dock instances have been closed

-- cdmdotnet Limited <support@cdmdotnet.com> Sat, 08 Mar 2026 00:00:00 +0000

plank-reloaded-plus (0.12.1-1) unstable; urgency=medium

* Add window preview popup on hover for running application icons
* Preview shows thumbnail cards (200x120) for each open window with title labels
* Left-click a preview card to focus that window; middle-click to close it
* Hovering a preview card outlines the corresponding live desktop window
with a blue border
* Preview popup inherits the user's active GTK tooltip theme colours
* Preview Windows toggle added to Behaviour preferences (on by default)
* Tooltips Enabled moved to last position in preferences
* Transparent dock-side strip ensures seamless mouse travel to preview cards
* Icon zoom effect stays active while the preview popup is open
* Only Active Monitor: clicking an app icon with a single window focuses it
directly; multiple windows shows the preview to choose

-- cdmdotnet Limited <support@cdmdotnet.com> Wed, 26 Feb 2026 00:00:00 +0000

plank-reloaded-plus (0.11.167-1) unstable; urgency=medium

* Fork from plank-reloaded as plank-reloaded-plus
* Add per-monitor window indicator filtering: each dock instance tracks which
monitor it is running on and counts only windows present on that monitor
when displaying app indicators
* Hide unpinned apps from a dock instance when none of their windows are on
the same monitor as that dock
* Support both multi-instance (one dock per monitor) and single-instance
"follow active monitor" configurations

-- cdmdotnet Limited <support@cdmdotnet.com> Tue, 24 Feb 2026 00:00:00 +0000

plank-reloaded (0.11.167-1) unstable; urgency=medium

* Decouple GapSize dock reveal from X11 barriers using edge pointer polling
Expand Down
29 changes: 18 additions & 11 deletions DEBIAN/control
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
Package: plank-reloaded
Version: 0.11.167-1
Package: plank-reloaded-plus
Version: 0.12.5-1
Priority: optional
Section: x11
Maintainer: Josh Ellithorpe <quest@mac.com>
Maintainer: cdmdotnet Limited <support@cdmdotnet.com>
Architecture: amd64
Depends: bamfdaemon, libgee-0.8-2, libgnome-menu-3-0, libwnck-3-0, libc6
Conflicts: plank, libplank-common, libplank1
Homepage: https://github.com/zquestz/plank-reloaded
Description: Elegant and simple dock.
Plank Reloaded is a fork of the original Plank project, providing a simple dock
for X11 desktop environments. While development began with a focus on Cinnamon,
we now actively support multiple desktop environments including MATE and Xfce.
Like its predecessor, Plank Reloaded aims to be the simplest dock on the
planet, providing just what a dock needs and absolutely nothing more.
Conflicts: plank, plank-reloaded, libplank-common, libplank1
Homepage: https://github.com/cdmdotnet/plank-reloaded
Description: Elegant and simple dock with per-monitor window tracking.
Plank Reloaded Plus is a fork of Plank Reloaded, which itself is a fork of
the original Plank project. It provides a simple dock for X11 desktop
environments, actively supporting Cinnamon, MATE, Xfce, and KDE.
.
Building on Plank Reloaded's foundation, Plank Reloaded Plus introduces enhanced multi-monitor awareness. Each dock
instance tracks which monitor it is running on and filters window indicators
accordingly. The --monitor-manager mode automatically opens one dock per
connected monitor, and responds to monitors being plugged or unplugged at
runtime without any manual configuration.
.
Like its predecessors, Plank Reloaded Plus aims to be a mildy simple dock on
the planet, providing just what a dock needs (in my opinion) and almost nothing more.
4 changes: 2 additions & 2 deletions DEBIAN/copyright
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: plank-reloaded
Source: https://github.com/zquestz/plank-reloaded
Upstream-Name: plank-reloaded-plus
Source: https://github.com/cdmdotnet/plank-reloaded-plus

Files: *
Copyright: 2024-2025 Josh Ellithorpe <quest@mac.com>
Expand Down
2 changes: 1 addition & 1 deletion DEBIAN/shlibs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
libplank 1 plank-reloaded (>= 0.11.167)
libplank 1 plank-reloaded-plus (>= 0.12.4)
37 changes: 36 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,42 @@
# Plank Reloaded: Still stupidly simple
# Plank Reloaded Plus: Still mildly simple

**Note:** There is no stability of ABI/API until further notice!

## 0.12.4 "Plus" (2026-06-12)

- Fix docks positioned on the inner edge of a monitor incorrectly reserving work area space from the screen edge, making adjacent monitors unusable for window snapping, maximising, and resizing
- Dock settings and launchers now follow the physical monitor rather than the port name, so configurations survive dock or hub changes between sessions

## 0.12.3 "Plus" (2026-03-12)

- Fix monitor manager child instances starting on the wrong monitor: managed dock prefs (Monitor, ActiveDisplay) are now applied before PositionManager initialises, so the dock renders at the correct position from the first frame
- Fix DBus object path assertion failures for monitors with hyphens in their names (e.g. DP-2-8): illegal characters are sanitised to underscores before use in the path
- Fix position retry storm: raise retry ceiling from 3 to 10 with verbose logging, then warn once and stop fighting the WM rather than spamming CRITICAL on every configure event
- Fix On Primary Display and Active Display preference controls not being locked when running as a monitor manager child instance; all three monitor-related controls are now insensitive when managed
- Fix monitor manager not exiting when its only child dock is closed: remove unreliable loop.is_running() guard from the auto-quit check

## 0.12.2 "Plus" (2026-03-08)

- Add `--monitor-manager` mode: automatically opens a dock on each connected monitor, opens a new dock when a monitor is plugged in, and closes the dock when a monitor is unplugged — no script or manual per-monitor configuration needed
- When a monitor is unplugged, its dock is asked to close gracefully rather than being forcibly killed, preserving any saved settings
- Monitor manager exits automatically when all dock instances have been closed

## 0.12.1 "Plus" (2026-02-26)

- Add window preview popup on hover for running application icons
- Preview shows thumbnail cards (200×120) for each open window with title labels
- Left-click a preview card to focus that window; middle-click to close it
- Hovering a preview card outlines the corresponding live desktop window with a blue border
- Preview popup inherits the user's active GTK tooltip theme colours (background, border, and text)
- Preview Windows toggle added to Behaviour preferences (on by default); Tooltips Enabled moved to last position
- Transparent dock-side strip on the preview window ensures seamless mouse travel from dock icon to preview cards at any speed, including with icon zoom active
- Icon zoom effect stays active while the preview popup is open; dock does not hide
- Zoomed icon always appears visually in front of the preview popup regardless of zoom level or zoom percentage setting
- Desktop window highlight overlay renders behind the preview popup, not in front of it
- Only Active Monitor: when enabled, clicking an app icon with a single window on this monitor focuses it directly without smart-focus across all monitors
- Only Active Monitor: clicking an app icon with multiple windows on this monitor shows the preview to let you choose
- Multi-monitor window indicator dots filtered per-monitor when Only Active Monitor is enabled

## 0.11.167 "Reloaded" (2026-04-13)

- Decouple GapSize dock reveal from X11 barriers using edge pointer polling
Expand Down
110 changes: 38 additions & 72 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,76 +1,32 @@
# Plank Reloaded
# Plank Reloaded Plus

[![GitHub Release](https://img.shields.io/github/v/release/zquestz/plank-reloaded)](https://github.com/zquestz/plank-reloaded/releases) [![Crowdin](https://badges.crowdin.net/plank-reloaded/localized.svg)](https://crowdin.com/project/plank-reloaded)
[![GitHub Release](https://img.shields.io/github/v/release/cdmdotnet/plank-reloaded)](https://github.com/cdmdotnet/plank-reloaded-plus/releases) [![Crowdin](https://badges.crowdin.net/plank-reloaded/localized.svg)](https://crowdin.com/project/plank-reloaded)

## What Is Plank Reloaded?
## What Is Plank Reloaded Plus?

Plank Reloaded is a fork of the original [Plank](https://launchpad.net/plank) project, providing a simple dock for X11 desktop environments. We actively support Cinnamon, MATE, Xfce, and KDE. Wayland is not supported at this time.
Plank Reloaded Plus is a fork of Plank Reloaded, which itself is a fork of
the original Plank project. It provides a simple dock for X11 desktop
environments, actively supporting Cinnamon, MATE, Xfce, and KDE.

Building on Plank Reloaded's foundation, Plank Reloaded Plus introduces
enhanced multi-monitor awareness. Each dock instance tracks which monitor it
is running on and filters window indicators accordingly: pinned app indicators
only count windows present on the same monitor as the dock, and unpinned apps
are hidden from a dock instance when none of their windows are on that
monitor. This applies both when running one dock per monitor and when using
the single-instance "follow active monitor" mode.

Like its predecessors, Plank Reloaded Plus aims to be a mildy simple dock on
the planet, providing just what a dock needs (in my opinion) and almost nothing more.

Like its predecessor, Plank Reloaded aims to be the simplest dock on the planet, providing just what a dock needs and absolutely nothing more. It also remains a library which can be extended to create other dock programs with more advanced features.

![Plank Reloaded on Linux Mint](screenshots/plank-reloaded-mint.webp)

### Key Improvements in Plank Reloaded
### Key Improvements in Plank Reloaded Plus

- Enhanced compatibility with X11 desktop environments (Cinnamon, MATE, Xfce, and KDE)
- Translated into 71 languages
- Migrated to modern meson build system for easier compilation and installation
- Anchor docklets and files to the end of the dock
- Fixed Restrict to Workspace so applications only show up on their active workspace
- Max zoom increased to 400%
- Floating dock support with configurable gap from the screen edge
- Multi-monitor support with active display tracking
- Comprehensive docklet improvements:
- Applications: Better reliability and fixed duplicate items issue
- Battery: Modern UPower integration
- Clock: Enhanced digital display with new pop-up calendar
- Clippy: Image support, improved text handling and menu organization
- Notifications: Displays system notifications on the dock
- Separator: A simple separator so you can set up a macOS-like dock experience
- Workspaces: A graphical workspace switcher
- Refreshed icons across all docklets
- Support for third party docklets
- Added Matte-Light, Minimal, and Minimal-Light themes
- Added theme options to set the indicator, active item, and badge styles

## Themes

Plank Reloaded ships with six built-in themes. You can switch themes in **Preferences → Appearance → Theme**.

### Default

![Default Theme](screenshots/default.webp)

### Matte

![Matte Theme](screenshots/matte.webp)

### Matte Light

![Matte Light Theme](screenshots/matte-light.webp)

### Minimal

![Minimal Theme](screenshots/minimal.webp)

### Minimal Light

![Minimal Light Theme](screenshots/minimal-light.webp)

### Transparent

![Transparent Theme](screenshots/transparent.webp)

### GTK Themes

Plank Reloaded also supports GTK themes. To use one, install it and set it as your default theme, then select **Gtk+** as the Plank Reloaded theme in preferences.

Here is a list of themes known to support Plank Reloaded:

- [Celestial](https://github.com/zquestz/celestial-gtk-theme)
- [Matcha](https://github.com/zquestz/Matcha-gtk-theme)
- [Semabe](https://github.com/sewbej/Plank-Themes)
- [WhiteSur](https://github.com/vinceliuice/WhiteSur-gtk-theme)
- Those from Plank Reloaded
- Each dock instance now tracks which monitor it is running on and counts only windows present on that monitor when displaying app indicators
- Optional monitor-manager mode (`plank --monitor-manager`) that automatically runs one dock per connected monitor, using GDK monitor names instead of xrandr and keeping each dock pinned to its assigned display

## Installation

Expand All @@ -88,7 +44,7 @@ yay -S plank-reloaded-git

#### Option 1: Using the PPA (Recommended)

Plank Reloaded is available for Ubuntu through an official PPA. This is the easiest way to install and keep Plank Reloaded updated.
Plank Reloaded Plus is available for Ubuntu through an official PPA. This is the easiest way to install and keep Plank Reloaded updated.

```bash
# Add the repository
Expand All @@ -102,7 +58,7 @@ sudo apt install plank-reloaded

#### Option 2: Manual Installation

You can download the `plank-reloaded.deb` package from the [Releases](https://github.com/zquestz/plank-reloaded/releases) page or build from source using the instructions below.
You can download the `plank-reloaded-plus.deb` package from the [Releases](https://github.com/cdmdotnet/plank-reloaded-plus/releases) page or build from source using the instructions below.

```bash
# Completely uninstall plank
Expand All @@ -112,7 +68,7 @@ sudo apt remove plank libplank-common libplank1
sudo apt install git meson gettext valac libgnome-menu-3.0 libgnome-menu-3-dev libxml2-utils gtk+-3.0 gee-0.8 libbamf3-dev libwnck-3.0 libwnck-3-dev bamfdaemon

# Clone the repository
git clone https://github.com/zquestz/plank-reloaded.git
git clone https://github.com/cdmdotnet/plank-reloaded-plus.git

# Enter the directory
cd plank-reloaded
Expand Down Expand Up @@ -144,7 +100,7 @@ sudo apt install plank-reloaded

#### Option 2: Manual Installation

You can download the `plank-reloaded-debian.deb` package from the [Releases](https://github.com/zquestz/plank-reloaded/releases) page or build from source using the instructions below.
You can download the `plank-reloaded-plus-debian.deb` package from the [Releases](https://github.com/cdmdotnet/plank-reloaded-plus/releases) page or build from source using the instructions below.

```bash
# Completely uninstall plank
Expand All @@ -154,7 +110,7 @@ sudo apt remove plank libplank-common libplank1
sudo apt install git meson gettext valac libgnome-menu-3.0 libgnome-menu-3-dev libxml2-utils gtk+-3.0 gee-0.8 libbamf3-dev libwnck-3.0 libwnck-3-dev bamfdaemon

# Clone the repository
git clone https://github.com/zquestz/plank-reloaded.git
git clone https://github.com/cdmdotnet/plank-reloaded-plus.git

# Enter the directory
cd plank-reloaded
Expand Down Expand Up @@ -390,7 +346,9 @@ Add Plank Reloaded to your desktop environment's startup applications. The comma
<details markdown="1">
<summary><strong>Does Plank Reloaded work with multiple monitors?</strong></summary>

Yes, Plank Reloaded works with multiple monitors. To have a dock on each monitor, you need to launch multiple instances with different names:
Yes, Plank Reloaded works with multiple monitors.

For manual setups, you can still launch multiple instances with different names:

```bash
# Launch first dock
Expand All @@ -402,9 +360,17 @@ plank -n dock2

Each instance can be configured independently.

For automatic one-dock-per-monitor management, you can instead run the built-in monitor manager:

```bash
plank --monitor-manager
```

This mode uses GDK monitor plug-names (not xrandr output names) to automatically start one dock per connected monitor and stop docks when monitors are disconnected. Each child dock is pinned to the monitor it was started for, and its monitor/“On Active Display” settings are locked while under manager control.

#### Moving Docks Between Monitors

You can move docks to your active monitor (where your cursor is) by enabling "On Active Display" in the preferences or by sending a USR1 signal to the plank process:
Outside of monitor-manager mode, you can move docks to your active monitor (where your cursor is) by enabling "On Active Display" in the preferences or by sending a USR1 signal to the plank process:

```bash
killall -USR1 plank
Expand Down
Loading