OmaDock for Labwc / Anchor Shell
本节为
modules/anchor-shell/plugins/omadock 的项目说明。先看下方摘要,再按需展开具体专题。展开完整 README 原文
OmaDock for Labwc / Anchor Shell
Labwc application dock for Anchor Shell. Window state comes from Quickshell's
Wayland ToplevelManager (wlr-foreign-toplevel-management). Live hover
thumbnails use Quickshell ScreencopyView with labwc-plus
hyprland-toplevel-export. There is no Hyprland IPC and no
Quickshell.Hyprland import.
Features
- Per-output dock: One surface on each connected display. Running windows are attributed to the output they currently occupy (and the active workspace via Labwc's foreign-toplevel output membership).
- Compact static icons: 22px icons, 2px gap, 40px exclusive zone. No magnification animation and no outer stroke on the pill.
- Pinned applications:
- Persistent list in
~/.config/anchor-shell/dock.json. - Right-click to pin or unpin.
- Separator between pinned apps and unpinned running apps.
- Persistent list in
- Drag to rearrange: Any visible icon can be dragged, pinned or running. Dropping a running app into the dock body pins it at that slot. Trailing unpinned apps stay unpinned when you only reorder existing pins.
- Running indicators: Left-edge pill; taller when the app is focused. Multi-window count badge on the icon.
- Window list popup: Title cards with Active / Minimized states, plus close. Live thumbnails stay aligned with the hovered icon, scale proportionally to fit every open window on screen, and never require scrolling.
- Context menu: New Window, Pin to Dock / Remove from Dock, Close All Windows.
- Appearance settings: Right-click an icon and open Dock Settings to adjust
icon size, icon slot size, spacing, dock width, vertical padding, pill and
hover radii, and linked Dock / top bar opacity. Settings are saved beside the pin list
in
~/.config/anchor-shell/dock.json, with the linked opacity also written toshell.json; Reset to Defaults returns the appearance values to their defaults without changing pinned applications.
Performance
The per-output app list is rebuilt only when identity or fields change.
Repeater delegates are keyed by count so focus changes rebind properties
instead of recreating icon Image items. Desktop-entry name/icon lookups
are cached on the shared Dock.qml host. Toplevel storms (workspace
switches) are coalesced to one refresh per frame.