Skip to content

ui/workspaces: replace persp-mode with tabspaces #30

@hlissner

Description

@hlissner

Important

This is a roadmap issue and is used solely to announce and document progress (to make it easier for users to follow and maintainers to track). Please do not use it for discussion; use our discussion board instead.

Note

This is being worked on in the feature/tabspaces branch.

persp-mode is notoriously difficult to work with. Documentation is light, breaking changes have wide-reaching effects, and the project reinvents a few wheels (desktop.el, tab-bar, etc). Replacing it is complicated, because so many packages and modules are integrated into it. The :ui workspaces module tries to provide:

  • Isolated, per-workspace buffer lists
  • Session persistence
  • Saved, switchable, and nameable window configurations
  • A UI for workspaces (e.g. tabs)
  • Integration with project.el/projectile (e.g. project workspaces)

The packages I'm currently considering to replace persp-mode with are (ordered by most to least promising):

Tasks

  • Replace persp-mode config with tabspaces?
  • Command remappings for persp-switch-to-buffer (in :completion modules)
  • Fix package integrations
    • better-jumper
    • treemacs (already has integrations for persp-mode, perspective.el, and tab-bar)
  • Update keybinds
    • +evil-bindings.el
    • +emacs-bindings.el
    • modules/editor/evil/config.el (gt, gT, [w, ]w)
    • modules/input/layout/+azerty.el
  • Resolve references to old persp-mode API
    • :term toggle commands: +term/toggle, +eshell/toggle, +shell/toggle, +vterm/toggle
    • +irc--add-circe-buffer-to-persp-h
    • +ibuffer/visit-workspace-buffer
    • +doom-dashboard-menu-sections
    • +doom-dashboard-reload
    • +doom-dashboard-init-h
    • +doom-dashboard--persp-record-project-h
    • +doom-dashboard--persp-detect-project-h
    • doom-session-file
    • doom-save-session
    • doom-load-session
    • +org-exclude-agenda-buffers-from-workspace-h
    • +vertico--workspace-buffer-state
    • +eshell-switch-workspace-fn
    • +eshell-save-workspace-fn
    • +ibuffer-workspace
    • +ibuffer/open-for-current-workspace
    • +ibuffer/visit-workspace-buffer
    • +ivy--is-workspace-buffer-p
    • +ivy--is-workspace-other-buffer-p
    • =mu4e
    • +mu4e-kill-mu4e-h
    • (define-ibuffer-filter workspace-buffers ...)
    • =notmuch
    • +notmuch/quit
    • +vertico--workspace-buffer-state
    • +vertico--workspace-generate-sources
    • +vertico/switch-workspace-buffer
    • +vertico/embark-open-in-new-workspace
    • =rss
    • +rss-cleanup-h
    • +julia--namespace-repl-buffer-to-workspace-a
    • +evil:kill-all-buffers
  • Merge into master

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions