Skip to content

Launch TUI commands in an external terminal asynchronously💪 , seamlessly integrating callbacks within Emacs⚡. Elevate your Emacs experience with eee.el 🥰

License

Notifications You must be signed in to change notification settings

eval-exec/eee.el

Repository files navigation

eee.el: Extended Emacs With External Tui application

eee.el launches excellent terminal user interface tools (such as yazi, fzf, lazy-git, etc.) with Emacs asynchronously. It is very fast and does not burden Emacs.

ee.el Support:

  1. yazi : launch yazi from Emacs asynchronously, then yazi tell emacs which file to open
  2. ripgrep : launch ripgrep + fzf from Emacs asynchronous, then ripgrep tell emacs jump to which file and position
  3. fzf : combined with ripgrep
  4. lazygit : launch lazygit from Emacs asynchronously
  5. ripgrep-all: search pdf files by ee-rga
  6. delta: show git delta by ee-delta
  7. htop: launch htop by ee-htop
  8. btop: launch btop by ee-btop

… more tui tools and options will be enhanced and provided.

2024-09-13_22-56-02.mp4

Note

ee-find need devicon-lookup (https://github.com/coreyja/devicon-lookup) to display file icons. We should install devicon-lookup executable by:

cargo install devicon-lookup --force

Highly Recomment use st terminal since it startup very fast.

I tried st, alacritty, kitty, konsole, st is very fast, you can test the startup timecost by:

% time st -e sh -c date
st -e sh -c date  0.03s user 0.02s system 90% cpu 0.052 total
~ on ☁️
$ time alacritty -e sh -c date
alacritty -e sh -c date  0.14s user 0.05s system 93% cpu 0.201 total
~ on ☁️
$ time kitty -e sh -c date
kitty -e sh -c date  0.20s user 0.07s system 93% cpu 0.288 total
~ on ☁️
$ time konsole -e sh -c date
konsole -e sh -c date  0.26s user 0.13s system 74% cpu 0.519 total

st startup only need 50ms, but alacritty need 200ms, konsole need 500ms. Please install st: https://st.suckless.org/ and patch it with https://st.suckless.org/patches/glyph_wide_support/

Installation

Elpaca

(use-package eee
  :ensure (:type git :host github :repo "eval-exec/eee.el"
                 :files (:defaults "*.el" "*.sh"))
  :bind-keymap
  ("s-e" . ee-keymap)
  )

Straight

(use-package eee
  :ensure '(:type git :host github :repo "eval-exec/eee.el"
                 :files (:defaults "*.el" "*.sh")))

Doom Emacs

(package! eee
  :recipe (:host github :repo "eval-exec/eee.el"
           :files (:defaults "*.el" "*.sh")))

Local

(use-package eee
  :load-path "<local path to eee.el project directory>")

Configuration

Example

(use-package eee
  :load-path "~/Projects/github.com/eval-exec/eee.el/"
  :bind-keymap
  ("s-e" . ee-keymap)
  :config
  
  ;; Should have wezterm or alacritty installed, more terminal application is supporting...
;; Issues and pull requests are welcome
  (setq ee-terminal-command "wezterm")

  ;; (global-definer "f" 'ee-find)
  ;; (global-definer "g" 'ee-lazygit)
  ;; (global-definer "y" 'ee-yazi-project)
  ;; (general-def "C-x C-f" 'ee-yazi)
  ;; (general-def "C-S-f" 'ee-rg)
  ;; (general-evil-define-key 'normal 'global "M-f" 'ee-line)
  )

Please submit an issue to let me know what you need and want. Thank you! 💙

About

Launch TUI commands in an external terminal asynchronously💪 , seamlessly integrating callbacks within Emacs⚡. Elevate your Emacs experience with eee.el 🥰

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published