MagmaWM / MagmaWM

A versatile and customizable Window Manager and Wayland Compositor

Home Page:https://magmawm.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

add set of workspaces: "contexts"

yuuyins opened this issue · comments

what

  • A set of workspaces, or "context", has all default workspaces an user sets (e.g. workspaces 1 to 12). Each set of workspaces starts without any window; so that the user can add windows to workspaces for that set/context. Example contexts for "dev.magmwm", "learn.rust", "learn.japanese". In context "dev.magmwm", its workspace 1 has a browser with https://github.com/MagmaWM/MagmaWM, workspace 2 has a text editor with many files opened such as src/main.rs; In context "learn.rust", its workspace 1 has browser with "https://doc.rust-lang.org/book/" opened, and workspace 2 has editor with guessing-game/src/main.rs opened, ...)
  • Create new, delete, switch to set of workspaces.
  • If possible, state persistence.
  • If possible, share specific windows between all or selected sets/contexts, or manually adding windows from all existing ones to specific workspace in a specific context.
  • Akin to https://github.com/procrat/xmonad-contexts. https://github.com/overideal/perject implements a similar idea, but for GNU Emacs, and has state persistence: save, load, delete, etc.

why

Enables, in a same device, working in different projects, ideas... Each set/context only has windows related to that project. Enables better focusing on the task; no messing in a same set with different projects/contexts (like it is for basically almost all WMs, except for xmonad with this contexts package). The user already knows what each workspace is useful for (workspace 1 for web browser, workspace 2 for a main information manipulation with a text editor / IDE, workspace 3 for secondary information manipulation, workspace 4 for resources such as pdfs, epubs, etc, workspace 5 for a file manager, etc), so no need for dynamic creation of workspaces; but could be useful to consider options on contexts with static (what I describe, default workspaces 1 to 12) and dynamic (no default workspaces when new context, the user dynamically creates workspaces for the context) workspaces.

example

https://youtu.be/PNvO06Xofms

https://github.com/overideal/perject#switching-buffers-projects-and-collections