Skip to content

Add support for per-window-name settings#20329

Open
zadjii-msft wants to merge 11 commits into
user/migrie/per-window-prequelfrom
dev/migrie/per-window-final
Open

Add support for per-window-name settings#20329
zadjii-msft wants to merge 11 commits into
user/migrie/per-window-prequelfrom
dev/migrie/per-window-final

Conversation

@zadjii-msft

Copy link
Copy Markdown
Member

This is part two of implementing per window name settings. Refer to #20328 for more context.

This PR actually does the hard work of adding multiple different window settings objects to the settings model. These are stored in the JSON as an array of window settings objects, and the name property is the key that we use in storing them internally.

One of the biggest parts of this change is the fact that the Quake window is no longer special. We can't really do that change separately from also having per window name settings. The window name _quake itself was special cased in so many places it did not make sense to carry that forward for a commit and then remove it in a follow-up PR.

However, quake had a "docking" behavior that was not previously captured by the settings model. So, this PR adds support for that. Not only to the Quake window, but to any window that might want them.

  • "window.dockWindow": "none"|"top"|"left"|"right"|"bottom" - what side to dock the window to. none is the default when omitted, but can be used to override the behavior of _quake (butwhy.gif)

The window name _quake still defaults to top docking, FOMO. Its settings don't get persisted back to the JSON unless the user has _quake in there.

Here's some JSON to play with.

    "themes":
    [
        {
            "name": "bottom one",
            "tab":
            {
                "background": "terminalBackground",
                "iconStyle": "default",
                "showCloseButton": "always",
                "unfocusedBackground": null
            },
            "tabRow":
            {
                "background": "#8000FFFF",
                "unfocusedBackground": null
            },
            "window":
            {
                "applicationTheme": "system",
                "experimental.rainbowFrame": false,
                "frame": null,
                "unfocusedFrame": null,
                "useMica": false
            }
        },
        {
            "name": "left boy",
            "tabRow":
            {
                "background": "#0088FFFF",
                "unfocusedBackground": null
            },
            "window":
            {
                "applicationTheme": "system",
                "experimental.rainbowFrame": false,
                "frame": null,
                "unfocusedFrame": null,
                "useMica": false
            }
        },
        {
            "name": "red",
            "tabRow":
            {
                "background": "#800000FF",
                "unfocusedBackground": null
            },
            "window":
            {
                "applicationTheme": "system",
                "experimental.rainbowFrame": false,
                "frame": "#800000FF",
                "unfocusedFrame": null,
                "useMica": true
            }
        }
    ],

    "windows":
    [
        {
            "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "name": "light",
            "theme": "light"
        },
        {
            "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "dockWindow":
            {
                "height": 1,
                "side": "left",
                "width": 0.4
            },
            "launchMode": "focus",
            "minimizeToNotificationArea": true,
            "name": "_quake",
            "theme": "red"
        },
        {
            "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "name": "purple",
            "theme": "bottom one"
        }
    ]

Closes #9992

Okay. I've made a new branch now, starting from the refactoring work we just did.

Now that we've got that refactor as a base, let's take the rest of the changes from dev/migrie/fhl-spring-2026/quake-4, and apply them here. Let's actually implement the per-window-name settings, the docking settings, the _quake special casing, everything else.
@zadjii-msft zadjii-msft changed the title almost everything Add support for per-window-name settings Jun 16, 2026
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