Skip to content

Add Blob taskbar - #617

Open
Deen-0x wants to merge 55 commits into
ramensoftware:mainfrom
Deen-0x:add-blob-taskbar
Open

Add Blob taskbar#617
Deen-0x wants to merge 55 commits into
ramensoftware:mainfrom
Deen-0x:add-blob-taskbar

Conversation

@Deen-0x

@Deen-0x Deen-0x commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Blob Taskbar utilizes Taskbar Blob Shape mod to replace the rounded-rectangle indicator behind Windows taskbar buttons with a parametric "blob" — a tab-like shape whose top edge is flat and wide, with concave flares at the top corners so each button reads as a tab merging into the taskbar stroke above it. The look is inspired from the tab strips in File Explorer and Google Chrome, where the active tab visually connects to the content below it rather than floating as a separate pill.

demo2

@Deen-0x
Deen-0x marked this pull request as draft July 28, 2026 06:09
Deen-0x added 8 commits July 28, 2026 09:32
Open README file
Added detailed README for Blob theme including installation instructions and Windhawk mod settings.
Updated theme selection and manual installation instructions for clarity.
@Deen-0x Deen-0x changed the title Add blob taskbar Add Blob taskbar Jul 28, 2026
Deen-0x added 4 commits July 29, 2026 20:08
Updated styles and targets for various UI elements in the Blob theme, including alignment, margins, and rendering transformations.
Removed section on recommended Windhawk mods from README.
Removed redundant description about the Blob Taskbar design.
add styleConstant to control taskbar content offset
m417z pushed a commit to ramensoftware/windhawk-mods that referenced this pull request Aug 3, 2026
## Taskbar Blob Shape

Add Taskbar Blob Shape mod which replaces the rounded-rectangle indicator behind Windows 11 taskbar buttons with a parametric "blob" — a tab-like shape whose top edge is flat and wide, with concave flares at the top corners so each button reads as a tab merging into the desktop above it.

## Attribution
- Originally based on [Taskbar Elastic WinUI Pill](#4685) & the yet released **Taskbar Elastic Border** by @Lockframe 

## Use case
- See Taskbar Styling [PR #617](ramensoftware/windows-11-taskbar-styling-guide#617).

<img width="310" height="36" alt="blob" src="https://github.com/user-attachments/assets/4c6b8e14-3976-40db-b454-08e795b18aaf" />
<img width="1920" height="36" alt="lhSj7xL9B2" src="https://github.com/user-attachments/assets/53f8023e-1342-4d1c-bdb4-3708b0f1e618" />

## Features

- **Parametric shape** — top corner radius (the concave flares; also sets how far the shape extends up and outward), bottom corner radius, custom width/height (`auto` matches the button's background element), and margin offsets.
- **Color** — custom hex fill with multi-color gradient support and separate `light | dark` values, per-theme opacity multipliers, and automatic fallback to the system accent color when no custom color is set.
- Works across multiple monitors and taskbars.

## Implementation notes

- Hooks `TaskListButton::UpdateVisualStates` (Taskbar.View.dll) to observe running indicator state changes; activation is a pure per-button opacity toggle.
- Each button gets its own `Path` element, hosted in the taskbar's `RootGrid` (above the task list's clipping region so the flare tips render fully) and glued to its button with a one-time composition `ExpressionAnimation` on the button's visual offset chain — the shape tracks reordering, reflow, and taskbar animations on the render thread with no per-frame UI-thread work.
- Full button lifecycle tracking: an `Unloaded` handler per button hides its shape and invalidates the binding when the button leaves the tree (window moved to another monitor, app closed, container recycled), and reused containers re-resolve their hosting grid, re-parent the shape if needed, and rebind — shapes never outlive or detach from their buttons.
- The native `BackgroundElement` is suppressed via its hand-off visual's `IsVisible` flag rather than a local `Opacity` value, so visual-state transition storyboards (which outrank local values in XAML property precedence) can't bring it back on top of the shape.
- Late layout is handled with a `SizeChanged` subscription per button — no timers, no polling.
- Unloading detaches all event handlers, stops the composition animations, removes the injected elements, and restores the native indicators.

## Tested on

- Windows 11 25H2 (OS Build 26200.8894), single and dual monitor
- Reordering pinned items, launching pinned apps, minimize/restore, dragging windows between monitors in both directions (including button removal and container reuse), overflow-free and mixed light/dark themes, enable/disable cycles


## Mod authorship

This mod was created by: Claude
Deen-0x added 17 commits August 5, 2026 03:07
match hover color to blob's
…comments

Rectangle#RunningIndicator assigned Fill and Stroke twice, with the second pair referencing $buttonFill and $buttonBorderColor - neither is declared in styleConstants, and the duplicate Fill overrode $multiWinIndicatorColor. Both leftovers removed. Also dropped Opacity@NoRunningIndicator, which names a state from RunningIndicatorStates and so never matched under the @CommonStates group declared on that target (and was redundant against Visibility = 1).

- Drop Transitions := <TransitionCollection/>; BackgroundTransition := $noTransition is what actually suppresses the hover flash when "Animation effects" is on.
- Reset the overflow flyout button padding, which was inheriting the asymmetric $taskbarTopOffset / $taskbarBottomOffset meant for the taskbar edges.
- Extract $progressPausedColor (was an inline brush repeated three times) and $flyoutButtonMinWidth.
- Use := for the weather widget Padding, matching every comparable line.
- Shorten the overflow flyout selectors to the OverflowFlyoutListRepeater form already used by the sibling rules; drop @CommonStates from two targets that declare no state-scoped styles.
- Rewrite the inline comments to explain the spacing math, the z-order stack and the elements repurposed from their native roles. Comments avoid ": " so they stay plain YAML scalars.

No visual change intended.
Added expandable section for Widget Board Settings with image.
Added styling section with illustration for styleConstants.
@Deen-0x
Deen-0x marked this pull request as ready for review August 6, 2026 21:15
@Deen-0x
Deen-0x marked this pull request as draft August 7, 2026 15:13
@Deen-0x
Deen-0x marked this pull request as ready for review August 8, 2026 10:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant