Centaur Emacs - A Fancy and Fast Emacs Configuration
See the code
This is an Emacs distribution that aims to enhance the default Emacs experience. It alters a lot of the default settings, bundles a plethora of additional packages and adds its own core library to the mix. The final product offers an easy to use Emacs configuration for Emacs newcomers and lots of additional power for Emacs power users.
It is able to run on Windows, GNU Linux and macOS. It is compatible ONLY with GNU Emacs 28.1 and above. In general you're advised to always run with the latest stable release - currently 31.1.
Compatible with GNU Emacs 28.1 and above. We recommend using the latest stable release (currently Emacs 30.1).
For installation instructions, please refer to Installing Emacs.
We recommend using Centaur Dotfiles for a complete system configuration.
To install Centaur Emacs, backup your existing configuration and clone the repository:
# Backup your existing configuration
mv ~/.emacs.d ~/.emacs.d.bak
# Clone the repository
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d
Alternatively, you can download the ZIP package directly and extract it to ~/.emacs.d.
ℹ️ Notes: XDG Configuration Directory (Linux)
If you're using Linux and prefer an XDG-compatible location, use:
# Ensure ~/.emacs.d, ~/.emacs and ~/.emacs.el don't exist
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git $XDG_CONFIG_HOME/emacs
Or extract the ZIP package to the $XDG_CONFIG_HOME/emacs directory.
After installation, start Emacs and wait for packages to install during the first startup. This may take some time depending on your network speed.
⚠️ Notes:
emacs -Q -l ~/.emacs.d/init-mini.el🚀 Enjoy! 😄
Keep your Centaur Emacs installation up-to-date with these commands:
;; Update everything: configurations and packages
M-x centaur-update
;; Update only Emacs configurations
M-x centaur-update-config
;; Update ~/.dotfiles (if you have them installed)
M-x centaur-update-dotfiles
;; Update only packages
M-x centaur-update-packages
;; Update everything: configurations, packages, and dotfiles
M-x centaur-update-all
Run Centaur Emacs in a containerized environment:
# Navigate to the Dockerfile directory
cd ~/.emacs.d
# Build the Docker image
docker build -t centaur/emacs -f Dockerfile.xx .
# Run the container interactively
docker run -it centaur/emacs bash
The easiest way to customize Centaur Emacs is through the built-in customization interface:
M-x customize-groupcentaur groupFor advanced users, you can directly edit configuration settings in your custom.el file:
;; Disable startup logo
(setq centaur-logo nil)
;; Set user information
(setq centaur-full-name "Your Name") ; Your full name
(setq centaur-mail-address "your@email.com") ; Your email address
;; Proxy settings
(setq centaur-proxy "127.0.0.1:1087") ; HTTP/HTTPS proxy
(setq centaur-socks-proxy "127.0.0.1:1086") ; SOCKS proxy
;; System settings
(setq centaur-use-exec-path-from-shell t) ; Use shell environment (set to nil for emacs-plus)
;; Visual settings
(setq centaur-icon t) ; Display icons (t to enable, nil to disable)
(setq centaur-package-archives 'melpa) ; Package repository (melpa, bfsu, iscas, netease, sjtu, tencent, tuna, ustc)
(setq centaur-theme 'auto) ; Theme: auto, random, system, default, pro, dark, light, warm, cold, day, night
;; UI settings
(setq centaur-completion-style 'minibuffer) ; Completion display style: minibuffer or childframe
(setq centaur-frame-maximized-on-startup t) ; Maximize frame on startup
(setq centaur-dashboard nil) ; Show dashboard on startup (t to show, nil to hide)
;; Development settings
(setq centaur-lsp nil) ; Enable LSP or not
;; Feature toggles
(setq centaur-tree-sitter nil) ; Enable tree-sitter (requires Emacs 29+)
(setq centaur-chinese-calendar nil) ; Enable Chinese calendar support
(setq centaur-player t) ; Enable media player controls
(setq centaur-prettify-symbols-alist nil) ; Symbol prettification (nil to use font ligatures)
ℹ️ Notes:
melpa. You can change this in custom.el or via M-x set-package-archives~/.emacs.d/custom-post.org or ~/.emacs.d/custom-post.elCentaur Emacs comes with several Hydra interfaces for efficient workflows. Here are the available hydras and their keybindings:
| Hydra Name | Scope | Keybinding(s) | Description |
|---|---|---|---|
dape-hydra | Global | M-<f5> | Debug adapter protocol actions |
doom-modeline-hydra | Modeline Mode | C-<f6> | Modeline customization options |
elfeed-hydra | Elfeed Search Mode | ? | RSS feed reader commands |
git-messenger-hydra | Global | C-x v p | Git commit message inspection |
hideshow-hydra | Programming Modes | C-~ | Code folding/unfolding actions |
hydra-dired-quick-sort | Dired Mode | S | File sorting options |
org-hydra | Org Mode | < | Org template insertion |
rect-hydra | Org Mode | S-<return> | Rectangle selection operations |
rect-hydra | Text/Programming | C-<return> | Rectangle selection operations |
smerge-mode-hydra | Smerge Mode | C-c m | Merge conflict resolution |
toggles-hydra | Global | <f6> | Global option toggles |
window-hydra | Global | C-c w / C-x o w | Window management |
xwidget-hydra | XWidget Webkit Mode | ? | Embedded browser controls |
ztreediff-hydra | Ztree Diff Mode | C-<f5> | Directory comparison operations |





To properly display icons in Centaur Emacs:
M-x centaur-install-fonts to install all necessary fonts automaticallyM-x nerd-icons-install-fonts to install the required icon fontsnerd-icons supports both GUI and TUI modesℹ️ Tip: To disable color icons, add (setq nerd-icons-color-icons nil) to your configuration.
For more details, visit nerd-icons.el.
Most package installation issues stem from network connectivity problems. Try these solutions:
M-x package-refresh-contents, then retry installation(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")For more information, see issue #98.
To search Chinese text via pinyin in Emacs, use: C-s !
⚠️ Note: If you want to search for the literal ! character, use: C-s \!
The Centaur Dashboard enhances your Emacs startup experience:
centaur-dashboard is enabled, it opens automatically at startupF2 to reopen the dashboard anytime after startup? or h in the dashboard for helpHO (restore)SUrmpgqYes, LSP is supported and enabled by default in Centaur Emacs:
eglot(setq centaur-lsp nil)⚠️ Important: You'll need to install appropriate language servers for your programming languages. Refer to eglot: connecting to a server for setup details.
To enable PlantUML in Org mode:
custom.el:
(setq org-plantuml-jar-path "/path/to/plantuml-x.x.x.jar")
This is a common issue where GUI Emacs doesn't inherit the same environment as your shell:
💡 Solution: Set environment variables in system startup files like .profile, .bash_profile, or .zshenv.
Centaur Emacs will then recognize and import these environment variables properly.
See issue #33 for more details.
You can use describe-personal-keybindings and which-key to view all keybindings.
📝 Reference: See issue #169 for usage instructions.
If you find Centaur Emacs helpful, consider supporting its development:
☕ Buy Me a Coffee:
622 followers · starred Jan 2026
376 followers · starred Jul 2026
222 followers · starred Jul 2020
80 followers · starred Feb 2020
Centaur Emacs - A Fancy and Fast Emacs Configuration
See the code
This is an Emacs distribution that aims to enhance the default Emacs experience. It alters a lot of the default settings, bundles a plethora of additional packages and adds its own core library to the mix. The final product offers an easy to use Emacs configuration for Emacs newcomers and lots of additional power for Emacs power users.
It is able to run on Windows, GNU Linux and macOS. It is compatible ONLY with GNU Emacs 28.1 and above. In general you're advised to always run with the latest stable release - currently 31.1.
Compatible with GNU Emacs 28.1 and above. We recommend using the latest stable release (currently Emacs 30.1).
For installation instructions, please refer to Installing Emacs.
We recommend using Centaur Dotfiles for a complete system configuration.
To install Centaur Emacs, backup your existing configuration and clone the repository:
# Backup your existing configuration
mv ~/.emacs.d ~/.emacs.d.bak
# Clone the repository
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d
Alternatively, you can download the ZIP package directly and extract it to ~/.emacs.d.
ℹ️ Notes: XDG Configuration Directory (Linux)
If you're using Linux and prefer an XDG-compatible location, use:
# Ensure ~/.emacs.d, ~/.emacs and ~/.emacs.el don't exist
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git $XDG_CONFIG_HOME/emacs
Or extract the ZIP package to the $XDG_CONFIG_HOME/emacs directory.
After installation, start Emacs and wait for packages to install during the first startup. This may take some time depending on your network speed.
⚠️ Notes:
emacs -Q -l ~/.emacs.d/init-mini.el🚀 Enjoy! 😄
Keep your Centaur Emacs installation up-to-date with these commands:
;; Update everything: configurations and packages
M-x centaur-update
;; Update only Emacs configurations
M-x centaur-update-config
;; Update ~/.dotfiles (if you have them installed)
M-x centaur-update-dotfiles
;; Update only packages
M-x centaur-update-packages
;; Update everything: configurations, packages, and dotfiles
M-x centaur-update-all
Run Centaur Emacs in a containerized environment:
# Navigate to the Dockerfile directory
cd ~/.emacs.d
# Build the Docker image
docker build -t centaur/emacs -f Dockerfile.xx .
# Run the container interactively
docker run -it centaur/emacs bash
The easiest way to customize Centaur Emacs is through the built-in customization interface:
M-x customize-groupcentaur groupFor advanced users, you can directly edit configuration settings in your custom.el file:
;; Disable startup logo
(setq centaur-logo nil)
;; Set user information
(setq centaur-full-name "Your Name") ; Your full name
(setq centaur-mail-address "your@email.com") ; Your email address
;; Proxy settings
(setq centaur-proxy "127.0.0.1:1087") ; HTTP/HTTPS proxy
(setq centaur-socks-proxy "127.0.0.1:1086") ; SOCKS proxy
;; System settings
(setq centaur-use-exec-path-from-shell t) ; Use shell environment (set to nil for emacs-plus)
;; Visual settings
(setq centaur-icon t) ; Display icons (t to enable, nil to disable)
(setq centaur-package-archives 'melpa) ; Package repository (melpa, bfsu, iscas, netease, sjtu, tencent, tuna, ustc)
(setq centaur-theme 'auto) ; Theme: auto, random, system, default, pro, dark, light, warm, cold, day, night
;; UI settings
(setq centaur-completion-style 'minibuffer) ; Completion display style: minibuffer or childframe
(setq centaur-frame-maximized-on-startup t) ; Maximize frame on startup
(setq centaur-dashboard nil) ; Show dashboard on startup (t to show, nil to hide)
;; Development settings
(setq centaur-lsp nil) ; Enable LSP or not
;; Feature toggles
(setq centaur-tree-sitter nil) ; Enable tree-sitter (requires Emacs 29+)
(setq centaur-chinese-calendar nil) ; Enable Chinese calendar support
(setq centaur-player t) ; Enable media player controls
(setq centaur-prettify-symbols-alist nil) ; Symbol prettification (nil to use font ligatures)
ℹ️ Notes:
melpa. You can change this in custom.el or via M-x set-package-archives~/.emacs.d/custom-post.org or ~/.emacs.d/custom-post.elCentaur Emacs comes with several Hydra interfaces for efficient workflows. Here are the available hydras and their keybindings:
| Hydra Name | Scope | Keybinding(s) | Description |
|---|---|---|---|
dape-hydra | Global | M-<f5> | Debug adapter protocol actions |
doom-modeline-hydra | Modeline Mode | C-<f6> | Modeline customization options |
elfeed-hydra | Elfeed Search Mode | ? | RSS feed reader commands |
git-messenger-hydra | Global | C-x v p | Git commit message inspection |
hideshow-hydra | Programming Modes | C-~ | Code folding/unfolding actions |
hydra-dired-quick-sort | Dired Mode | S | File sorting options |
org-hydra | Org Mode | < | Org template insertion |
rect-hydra | Org Mode | S-<return> | Rectangle selection operations |
rect-hydra | Text/Programming | C-<return> | Rectangle selection operations |
smerge-mode-hydra | Smerge Mode | C-c m | Merge conflict resolution |
toggles-hydra | Global | <f6> | Global option toggles |
window-hydra | Global | C-c w / C-x o w | Window management |
xwidget-hydra | XWidget Webkit Mode | ? | Embedded browser controls |
ztreediff-hydra | Ztree Diff Mode | C-<f5> | Directory comparison operations |





To properly display icons in Centaur Emacs:
M-x centaur-install-fonts to install all necessary fonts automaticallyM-x nerd-icons-install-fonts to install the required icon fontsnerd-icons supports both GUI and TUI modesℹ️ Tip: To disable color icons, add (setq nerd-icons-color-icons nil) to your configuration.
For more details, visit nerd-icons.el.
Most package installation issues stem from network connectivity problems. Try these solutions:
M-x package-refresh-contents, then retry installation(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")For more information, see issue #98.
To search Chinese text via pinyin in Emacs, use: C-s !
⚠️ Note: If you want to search for the literal ! character, use: C-s \!
The Centaur Dashboard enhances your Emacs startup experience:
centaur-dashboard is enabled, it opens automatically at startupF2 to reopen the dashboard anytime after startup? or h in the dashboard for helpHO (restore)SUrmpgqYes, LSP is supported and enabled by default in Centaur Emacs:
eglot(setq centaur-lsp nil)⚠️ Important: You'll need to install appropriate language servers for your programming languages. Refer to eglot: connecting to a server for setup details.
To enable PlantUML in Org mode:
custom.el:
(setq org-plantuml-jar-path "/path/to/plantuml-x.x.x.jar")
This is a common issue where GUI Emacs doesn't inherit the same environment as your shell:
💡 Solution: Set environment variables in system startup files like .profile, .bash_profile, or .zshenv.
Centaur Emacs will then recognize and import these environment variables properly.
See issue #33 for more details.
You can use describe-personal-keybindings and which-key to view all keybindings.
📝 Reference: See issue #169 for usage instructions.
If you find Centaur Emacs helpful, consider supporting its development:
☕ Buy Me a Coffee:
622 followers · starred Jan 2026
376 followers · starred Jul 2026
222 followers · starred Jul 2020
80 followers · starred Feb 2020