Skip to content

Add apply --seed to set an editable taskbar layout without locking it - #11

Open
rodchristiansen wants to merge 2 commits into
mainfrom
feature/apply-seed-workitem-4265
Open

rodchristiansen wants to merge 2 commits into
mainfrom
feature/apply-seed-workitem-4265

Conversation

@rodchristiansen

@rodchristiansen rodchristiansen commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

What changed

  • taskbarutil apply --seed does everything apply does (resolve the layout, set the policy, clear the start2.bin and Taskband caches, restart explorer) but writes LockedStartLayout = 0 instead of 1.
  • Works for the current user (PolicyManager.Apply) and for every profile with --allhomes (PolicyManager.ApplyAllHomes).
  • list shows a seeded layout as "seeded, editable" and counts the pins actually on the taskbar, since users may have changed them; a locked layout prints as before.
  • --dry-run reports whether the layout would be locked.
  • README documents the new Apply Options and the 0 value in the policy table.

Default behaviour is unchanged: without --seed, apply still locks the layout.

Why

apply always locked the layout, so a package could enforce a taskbar but never hand users a starting layout they are free to change. That is the difference between a login-every package (enforced) and a login-once package (seeded) that dockutil users get on the Mac by simply not re-running the script.

How it was tested

  • dotnet build TaskbarUtil.sln -c Release (cross-targeted from macOS): 0 warnings, 0 errors.
  • dotnet test: 53 passed, 0 failed.
  • Not yet run on a real Windows 11 machine.

Check before merging

  • On Windows 11, run taskbarutil apply --seed, rearrange or unpin something, then sign out and back in. Confirm the user's changes survive and the unlocked StartLayoutFile does not re-assert the seeded pins on the next sign-in.
  • Confirm --allhomes --seed writes LockedStartLayout = 0 under each loaded HKU hive.

apply always wrote LockedStartLayout = 1, so a package could enforce a layout but never seed one that users can change afterwards. --seed does everything apply does, for the current user and with --allhomes, but writes LockedStartLayout = 0. list still reports a seeded layout as active. The default stays locked.
…ed #4265

After apply --seed users can change their pins, so list now labels the policy layout as seeded and counts the pins actually on the taskbar instead of reporting the seeded pins as configured via policy. Locked and direct-copy layouts print as before.
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