-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sticky monitor workspaces #660
Comments
Having |
This refactors a chunk of `WorkspaceManager` into `Butler` and its associated child classes. This was done for two reasons: 1. Support sticky workspaces in #660 2. Reduce bloat and increase the maintainability/readability of `WorkspaceManager` The existing `WorkspaceManager` tests have been kept where possible, to ensure that the refactoring has not broken anything.
Imo this is a necessary feature, and the only reason (besides lack of documentation on certain things) someone would want to use any other tiling manager over Whim. Having to press a hotkey to swap to the correct monitor before pulling up a workspace means you have to track state (where your focus is, what monitor you're on) vs. instantly doing what you want. Changing the focus command to 'reassign' the monitor its associated with also sounds great and convenient. |
This is my initial idea for sticky workspaces. Suggestions and feedback are welcome. This will likely be part of the core and not a plugin as I initially thought. Overview
Example 1workspaces:
- name: Browser
- name: Slack
- name: Code
- name: YouTube
monitors:
- workspaces:
- Browser
- Slack
- workspaces:
- Code
- Slack
Example 2workspaces:
- name: Browser
- name: Slack
- name: Code
monitors:
- workspaces:
- Browser
- Slack
- workspaces:
- Code
- workspaces: []
Example 3workspaces:
- name: Browser
- name: Slack
- name: Code
- name: YouTube
monitors:
- workspaces:
- Browser
- Slack
- workspaces:
- Code
- Slack
- workspaces: [] Alternate designThis approach is how the C# API will be designed. However, my initial thought was that separating out the monitors and workspaces would better fit the current separation of concerns in the YAML config. workspaces:
browser:
name: "Browser"
monitors: [1] # Explicit monitor assignments
slack:
name: "Slack"
monitors: [1, 2] # Available on multiple monitors
code:
name: "Code"
monitors: [2]
youtube:
name: "YouTube"
monitors: [] # Empty array means available everywhere |
Could the two yaml approaches be reconciled by making workspaces:
- name: Browser # available everywhere if monitors is not specified
- name: Slack
- name Code # only available on monitor 1
monitors: [1]
- name: YouTube # available on monitor 1 and 2
monitors: [1, 2] |
I like that approach - I'll give it a shot and see how it goes |
The sticky monitor workspaces plugin (name TBD) should:
focus_next_workspace_on_current_monitor
+*_previous_*
, to activate the next/previous workspace in that monitor's listfocus_workspace
commands would continue to do the same as they do now, but would move workspaces across monitorsFollow-on tickets
WorkspaceWidget
for the bar that only lists the currently active workspaces on each monitor.TODOs
Core
MapSector
Workspace
Commands
focus_next_workspace_on_current_monitor
+*_previous_*
, to activate the next/previous workspace in that monitor's listmove_window_to_[next|previous]_workspace_on_monitor
YAML
monitors
and pass to workspace creationBar
The text was updated successfully, but these errors were encountered: