doomemacs / doomemacs/modules

ui/workspaces: replace `persp-mode` with `tabspaces`

Open
#15 8 comments 0 reactions 0 assignees View on GitHub
:ui workspaces
Dominant language
Emacs Lisp
Stars
61
Forks
37
Avg merge
11h 19m
Merged PRs (30d)
7

Description

> [!IMPORTANT]
> This is a [roadmap](https://doomemacs.org/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](https://doomemacs.org/discuss) instead.

> [!NOTE]
> This is being worked on in the [feature/tabspaces](https://github.com/doomemacs/doomemacs/tree/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):

- https://github.com/mclear-tools/tabspaces
- https://github.com/jamescherti/easysession.el
- ~~https://github.com/j-hotlink/hotdesk~~
- ~~https://github.com/alphapapa/activities.el~~
- ~~https://github.com/wasamasa/eyebrowse~~
- ~~Native: tab-{bar,line}-mode (built in to 27+) + desktop.el~~

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

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.