Skip to content
Show/hide eshell at the bottom of active window with directory of its buffer
Branch: master
Clone or download
4DA Merge pull request #5 from sirikid/master
Remove unnecessary cd commands
Latest commit cd8ced1 May 8, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
eshell-toggle.el Remove unnecessary clears May 3, 2019

Simple functionality to show/hide eshell/ansi-term (or almost any other buffer, see eshell-toggle-init-function description below) at the bottom of active window with directory of its buffer.


(add-to-list 'load-path "/path/to/eshell-toggle.el")
(require 'eshell-toggle)
(global-set-key (kdb "s-`") 'eshell-toggle)

or using use-package and quelpa:

(use-package eshell-toggle
  (eshell-toggle-size-fraction 3)
  (eshell-toggle-use-projectile-root t)
  (eshell-toggle-run-command nil)
  (eshell-toggle-init-function #'eshell-toggle-init-ansi-term)
  (eshell-toggle :repo "4DA/eshell-toggle" :fetcher github :version original)
  ("s-`" . eshell-toggle))


  • eshell-toggle-size-fraction (NB: eshell-toggle-height-fraction is obsolete since 0.10.0) Proportion of parent window size (see eshell-toggle-window-side below) and eshell window;

  • eshell-toggle-window-side - Where to open eshell window, a value can be 'below' (default), 'above, 'right or 'left;

  • eshell-toggle-default-directory Default directory to open eshell at if buffer has no associated file;

  • eshell-toggle-name-separator String to separate directory paths when giving a name to buffer.

  • eshell-toggle-use-projectile-root If not nil eshell-toggle will try to use projectile to open eshell at project root.

  • eshell-toggle-run-command - command to run in a new shell.

  • eshell-toggle-init-function is a function to initialize toggled buffer, default one is eshell-toggle-init-eshell, but can be any function which takes a directory as an argument and creates a buffer, ootb there are eshell-toggle-init-eshell, eshell-toggle-init-ansi-term and eshell-toggle-init-tmux (you have to have tmux binary in your PATH), dired and magit-status work too.

  • eshell-toggle-init-term-char-mode If not nil eshell-toggle starts ansi-term based buffers in term-char-mode

If you want to change these on a per-directory basis, you can use .dir-locals.el magic:

((nil . ((eshell-toggle-init-function . eshell-toggle-init-ansi-term))))
You can’t perform that action at this time.