Create your workspaces in Emacs
Emacs Lisp Python Shell
Failed to load latest commit information.
doc fix indent Aug 31, 2014
src Use ido only when ido-mode enabled. Nov 2, 2014
tests commented bug 48 test Sep 11, 2014
.gitignore sphinx-quickstart Aug 30, 2014
.travis.yml new line Sep 11, 2014
Makefile make docs command Aug 31, 2014 Docs badge Aug 31, 2014

License Documentation Build Status Gittip

Workgroups for Emacs

Workgroups is a session manager for Emacs.

  • It saves all your opened buffers, their location and sizes on disk to restore later
  • You can create several workspaces

You can also restore such buffers as: org-agenda, shell, magit-status, help.

Fork it, add more special buffers support. Or even better - fix bugs.


Just install "workgroups2" from Melpa and activate it with

(require 'workgroups2)
;; Change some settings
(workgroups-mode 1)        ; put this one at the bottom of .emacs


Most commands are bound to both <prefix> <key> and <prefix> C-<key>.

By default prefix is: "C-c z" (To change it - see settings below)

<prefix> <key>
<prefix> c    - create workgroup
<prefix> A    - rename workgroup
<prefix> k    - kill workgroup
<prefix> v    - switch to workgroup
<prefix> C-s  - save session
<prefix> C-f  - load session


If you want to change some settings - here is an example:

(require 'workgroups2)
;; Your settings here

;;(setq wg-session-load-on-start t)    ; default: (not (daemonp))

;; Change prefix key (before activating WG)
(setq wg-prefix-key (kbd "C-c z"))

;; Change workgroups session file
(setq wg-session-file "~/.emacs.d/.emacs_workgroups")

;; Set your own keyboard shortcuts to reload/save/switch WGs:
;; "s" == "Super" or "Win"-key, "S" == Shift, "C" == Control
(global-set-key (kbd "<pause>")     'wg-reload-session)
(global-set-key (kbd "C-S-<pause>") 'wg-save-session)
(global-set-key (kbd "s-z")         'wg-switch-to-workgroup)
(global-set-key (kbd "s-/")         'wg-switch-to-previous-workgroup)

(workgroups-mode 1)   ; put this one at the bottom of .emacs

More options

You can use M-x customize-group workgroups to see all variables and faces to change.

;; What to do on Emacs exit / workgroups-mode exit?
(setq wg-emacs-exit-save-behavior           'save)      ; Options: 'save 'ask nil
(setq wg-workgroups-mode-exit-save-behavior 'save)      ; Options: 'save 'ask nil

;; Mode Line changes
;; Display workgroups in Mode Line?
(setq wg-mode-line-display-on t)          ; Default: (not (featurep 'powerline))
(setq wg-flag-modified t)                 ; Display modified flags as well
(setq wg-mode-line-decor-left-brace "["
      wg-mode-line-decor-right-brace "]"  ; how to surround it
      wg-mode-line-decor-divider ":")


Hooks' names can tell when they are executed

workgroups-mode-hook                    ; when `workgroups-mode' is turned on
workgroups-mode-exit-hook               ; `workgroups-mode' is turned off


For you:

  1. <prefix> ? or (wg-help) - help buffer listing all the commands and their bindings.
  2. M-x customize-group RET workgroups RET - all customization options

For me:

  1. Reporting a bug - give me full (backtrace) of what happened and how you did it.
  2. Requesting a major-mode support - write how you install, configure and run yours.
  3. Make pull-requests
  4. Ask questions (if you don't know how to hack it). Personally I found the code very complex at first


GPL. This extension is based on experimental branch of the original repo.