doomemacs/modules/ui/workspaces
2025-09-23 18:47:09 -04:00
..
autoload feat(workspaces): implement tab-local parameters 2025-09-23 18:47:09 -04:00
test Update all unit tests 2019-09-03 00:59:46 -04:00
.doommodule feat: add .doommodule files 2024-09-14 20:47:39 -04:00
config.el feat(workspaces): implement tab-local parameters 2025-09-23 18:47:09 -04:00
packages.el bump: :ui workspaces 2025-09-23 00:45:47 -04:00
README.org feat(workspaces): introduce +tabs flag 2025-09-17 11:23:04 -04:00

:ui workspaces

Description   unfold

This module adds support for workspaces, powered by doom-package:tabspaces on top of tab-bar-mode (built into Emacs 27+), as well as a API for manipulating them.

Module flags

+auto
Automatically resume the last saved workspace on startup.
+tabs
Use tab-bar to display active workspaces as tabs at the top of the frame. Without this, active workspaces are displayed in the echo-area instead.

TODO Hacks

󱌣 This module's hacks haven't been documented yet. Document them?

TODO Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

This module has no external requirements.

TODO Usage

󱌣 This module's usage documentation is incomplete. Complete it?

Isolated buffer-list

When tabspaces-mode is active, doom-buffer-list becomes workspace-restricted. You can overcome this by using buffer-list instead.

Automatic workspaces

A workspace is automatically created (and switched to) when you:

  • Create a new frame (with make-frame; bound to M-N by default).
  • Switch to a project using projectile-switch-project.

Session persistence

By default, your session is autosaved when you quit Emacs (or disable persp-mode). You can load a previous session with M-x +workspace/load-session or :sl[oad] (ex command).

You can supply either a name to load a specific session to replace your current one.

Workspace persistence

If you'd like to save a specific workspace, use M-x +workspace/save, which can be loaded into the current session (as another workspace) with M-x +workspace/load.

Commands & Keybindings

Here is a list of available commands, their default keybindings (defined in config/default/+bindings.el), and corresponding ex commands (if any defined in config/default/+evil-commands.el).

command key / ex command description
+workspace/new SPC TAB n Create a new, blank workspace
+workspace/display SPC TAB TAB Display open workspaces in the mode-line
+workspace/load SPC TAB l Load a saved workspace into the current session
+workspace/restore-last-session SPC TAB R Restore last session
+workspace/rename SPC TAB r Rename the current workspace
+workspace/save SPC TAB s Save the current workspace to a file
+workspace/switch-to SPC TAB . Switch to an open workspace
+workspace/other SPC TAB ` Switch to last workspace
+workspace/switch-left SPC TAB [ / [ w / gT Switch to previous workspace
+workspace/switch-right SPC TAB ] / ] w / gt Switch to next workspace
+workspace/kill SPC TAB d Delete the current workspace
+workspace/kill-session SPC TAB x / :sclear Clears the current session (kills all windows and buffers)

TODO Configuration

󱌣 This module has no configuration documentation yet. Write some?

Troubleshooting

There are no known problems with this module. Report one?

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

󱌣 This module's appendix is incomplete. Write more?

API

  • +workspace-list -> list<Struct>
  • +workspace-list-names -> list<string>
  • +workspace-buffer-list &optional PERSP -> bool
  • +workspace-p OBJ -> bool
  • +workspace-exists-p NAME -> bool
  • +workspace-get NAME &optional NOERROR -> Struct
  • +workspace-current &optional FRAME WINDOW -> Struct
  • +workspace-current-name -> string
  • +workspace-load NAME
  • +workspace-load-session NAME
  • +workspace-save NAME
  • +workspace-save-session NAME
  • +workspace-new NAME
  • +workspace-rename NAME NEW-NAME
  • +workspace-kill NAME &optional INHIBIT-KILL-P
  • +workspace-switch NAME &optional AUTO-CREATE-P
  • +workspace-protected-p NAME -> bool