Repository navigation
feat: optionally share workspaces across displays - #603
Draft
acsandmann wants to merge 20 commits into
Draft
acsandmann wants to merge 20 commits into
acsandmann wants to merge 20 commits into
Conversation
Contributor
|
Automated testing and notes, btw (on other note, I love the new stackline ❤️ ): Ran #603 (
Not carried over from #545:
Config:
Working well: Happy to open PRs against |
Contributor
|
Corrections to my list above:
Fixes for the rest are on
Happy to open them as PRs against |
* fix: park hidden windows where they overlap no other display Rift hides the windows of inactive workspaces by parking them past the bottom-left or bottom-right corner of their display, leaving a sliver on screen. With a display arranged above another, a window parked past the upper display's bottom edge sits on the lower display. Rift then adopts it there, and it turns up in the wrong display's workspace. - add right-edge and left-edge placements, top-aligned with the display and clamped to its height - pick the placement that overlaps other displays least - treat a sliver in either dimension as hidden 🤖 Generated with Claude Code * fix: act on the display move-node just carried the focused window to After move-node carried the focused window onto another display, the next command still acted on the display the window had left: macOS moves its active display along with the key window only later. Make the window's new display the command context, as focus_display would, so a second move-node or a focus command acts where the window now is. 🤖 Generated with Claude Code * fix: retry attaching to apps that refused accessibility An app actor gives up when registering for an app's accessibility notifications fails, and nothing tries again until the app relaunches or opens a new window, so its windows stay unmanaged. Registration had no grace period outside JetBrains IDEs and Emacs. - give every app a two second grace period for the first registration - retry attaching whenever the user activates an app that has no app actor 🤖 Generated with Claude Code * fix: find a window named by id on any display move_window_to_workspace with a window id only searched the workspaces of the display holding the command context. A window on another display was not found, so the command did nothing while rift-cli still reported success. Fall back to the window's assignment in any workspace; the rest of the command already works out the window's own display. 🤖 Generated with Claude Code * feat: open new windows on the pointer's display in shared mode A new window opens wherever macOS and the app put it. Launchers and hotkeys often activate an app before asking it for a window, so the new window lands next to the app's other windows, on whichever display those are on, and joins that display's visible workspace instead of the one the user works in. Keyboard focus has moved with the activation by then; the pointer has not, and with mouse_follows_focus it also follows keyboard moves. In shared mode, move a new standard window to the display under the pointer when macOS put it on another one, through the same transfer as move_window_to_display. A window whose app rule names a workspace stays where the rule puts it. Independent mode is unchanged. 🤖 Generated with Claude Code * fix: keep a rule-bound workspace on its display in move_workspace_to_display In shared mode, move_workspace_to_display moved a workspace whose rule binds it to a connected display, and the move held until the next display change. reconcile_workspace_placements then put it back on the rule's display: after sleep and wake, plugging a display or a desktop switch, the workspace jumped back with its windows. Refuse the move while the rule's display is connected, and log why. An unbound workspace still moves, and so does a bound one while its display is away. 🤖 Generated with Claude Code * feat: name each workspace's display and the focused one in workspace queries In shared mode an unscoped workspace query returns the whole catalog, with one is_active workspace per display and nothing saying which display each belongs to. Clients that pick the active workspace, such as status bars selecting .is_active, got one name per display and could not tell which one has focus. Add display_uuid, the display a workspace belongs to, and is_focused, true for the workspace active on the display holding command focus. Both default when absent, so older clients and servers still decode. 🤖 Generated with Claude Code * fix: warn about workspace rule displays rift ignores or cannot pin down A workspace rule's display only applies with display_mode = "shared"; in independent mode rift dropped it without a word. And a rule naming a display by name matched the first of several identical monitors. Log a warning for each display rule outside shared mode when the settings load, and when a rule's display name matches more than one connected display. Neither is a validation error: switching display_mode in the settings UI must not be refused because rules still name displays. 🤖 Generated with Claude Code * refactor: slim down multidisplay patches Keep every fix but trim the diff: side-edge parking reuses the corner geometry, the ignored display rule warning lives in one place, the pointer-display and move-node helpers are condensed, and the tests are merged into a smaller set that each fail without their fix. --------- Co-authored-by: acsandmann <[email protected]>
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.