More preparations for overlays - #913
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Prepares the compositor for future “overlay” work by introducing a workspace “type” concept (currently only Normal) and plumbing it through workspace creation/selection, session-management persistence, and tree-query/CLI introspection.
Changes:
- Introduce
WorkspaceTypeonWorkspaceNodeand rename/create APIs around “normal” workspaces (ensure_normal_workspace,create_normal_workspace, etc.). - Persist/restore workspace type in session-management toplevel state (wire format bumped to V2).
- Expose workspace type via
jay_tree_query(wire event + CLI JSON/text output) and add a TOML config/spec placeholder for workspaces.
Reviewed changes
Copilot reviewed 39 out of 39 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| wire/jay_tree_query.txt | Adds workspace_type event (since v31) to the tree-query wire spec. |
| toml-spec/spec/spec.yaml | Adds Config.workspaces map and introduces Workspace type stub. |
| toml-spec/spec/spec.generated.md | Regenerates markdown docs to include workspaces and Workspace type. |
| toml-spec/spec/spec.generated.json | Regenerates JSON schema to include workspaces and Workspace type. |
| toml-config/src/lib.rs | Updates action execution to resolve workspace IDs from WorkspaceSlot instead of names. |
| toml-config/src/config/parsers/workspace.rs | New parser scaffolding for [workspaces] table + workspace slot tracking. |
| toml-config/src/config/parsers/config.rs | Wires workspaces into top-level config parsing. |
| toml-config/src/config/parsers/action.rs | Switches workspace-referencing actions to use WorkspaceSlot instead of get_workspace(name). |
| toml-config/src/config/parsers.rs | Exposes new workspace parser module. |
| toml-config/src/config/context.rs | Adds Context.workspaces storage for parsed workspace slots. |
| toml-config/src/config.rs | Assigns real jay_config::Workspace IDs to parsed workspace slots during finalization. |
| src/tree/workspace.rs | Introduces WorkspaceType and stores it on WorkspaceNode; updates ctor signature. |
| src/tree/toplevel.rs | Tracks workspace type on toplevels and uses it when deriving node layer. |
| src/tree/output.rs | Renames workspace creation helpers to “normal” variants and routes behavior via WorkspaceType. |
| src/tree/float.rs | Tracks workspace type for floats and selects appropriate stacking list based on type. |
| src/tree/display.rs | Updates workspace drag-destination API to pass a &WorkspaceNode source. |
| src/tree/container.rs | Updates new-workspace creation path to use ensure_normal_workspace. |
| src/tools/tool_client.rs | Bumps bound jay_compositor version cap to 31. |
| src/state.rs | Threads workspace type through map-restore and State::show_workspace; uses normal-workspace helpers. |
| src/sm/sm_wire/sm_wire_toplevel.rs | Adds SM wire V2 component to serialize/deserialize workspace_ty. |
| src/sm/sm_jobs/sm_toplevel_acquire.rs | Restores workspace_ty into in-memory session state on acquire. |
| src/sm.rs | Tracks workspace type in session state updates and persists it to SQLite job payload. |
| src/it/tests/t0059_sm_background_ws.rs | Updates test to use create_normal_workspace. |
| src/it/tests/t0058_sm_parent.rs | Updates test to use create_normal_workspace. |
| src/it/tests/t0057_sm_floating.rs | Updates test to use create_normal_workspace. |
| src/it/tests/t0056_sm_fullscreen.rs | Updates test to use create_normal_workspace. |
| src/it/tests/t0055_sm_basic.rs | Updates test to use create_normal_workspace. |
| src/ifs/zwlr_foreign_toplevel_handle_v1.rs | Updates fullscreen path to use ensure_normal_workspace. |
| src/ifs/workspace_manager/ext_workspace_manager_v1.rs | Updates workspace creation to call create_normal_workspace. |
| src/ifs/wl_surface/xdg_surface/xdg_toplevel.rs | Updates fullscreen/map-child paths to use ensure_normal_workspace. |
| src/ifs/wl_surface/xdg_surface.rs | Tracks workspace type for XDG surfaces and adjusts popup stacking accordingly. |
| src/ifs/wl_seat/pointer_owner.rs | Updates several new-workspace paths + drag destination call signature. |
| src/ifs/wl_seat.rs | Updates workspace focus logic and “neighbor output” workspace creation to normal-workspace helpers. |
| src/ifs/jay_tree_query.rs | Adds workspace_type event emission (since v31) to tree query responses. |
| src/ifs/jay_compositor.rs | Bumps jay_compositor global protocol version to 31. |
| src/control_center/cc_workspaces.rs | Displays workspace type alongside workspace name in the control center UI. |
| src/config/handler.rs | Threads workspace type through config IPC workspace identity + show/set operations. |
| src/cli/tree.rs | Captures/prints workspace_type from tree query (text + JSON). |
| src/cli/json.rs | Adds workspace_type field to JSON tree node output. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.