2.8 KiB
Shell
Shell environment integration.
Setup
Override the default behaviour of the Shell environment to integrate with Emacs.
Force colours
When using Emacs on the TTY, the colours sometimes will default to 16 or 8 colours, making it look horrible. It's possible to override this behaviour on every platform by manually set the terminal type to xterm-256color
.
export TERM=xterm-256color
Setting up the $PATH
Ensure ~/.local/bin
has been added to the $PATH
environment variable, this location is used frequently to deploy local binaries.
export PATH=$PATH:~/.local/bin
Starting Emacs by default on TTY1
When launching into a new session on TTY1, if the display server is not running, run startx
1. This will launch the window manager.
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then exec startx fi
Creating symbolic links
The system looks for the default shell profile under bash
2 at ~/.profile
. Creating a symbolic link from this location to our configuration will override the startup behaviour.
(dotfiles/symlink "~/.emacs.d/config/profile" "~/.profile")
Methods
Define methods for interaction between Emacs and the underlying shell environment.
Run an external process
Define a method to run an external process, launching any application on a new process without interferring with Emacs.
(defun dotfiles/run (cmd) "Run an external process." (interactive (list (read-shell-command "λ "))) (start-process-shell-command cmd nil cmd))
Apply command to call process
Define a method to apply commands to the current call process, this is to avoid issues with hooks but can impact the performance of Emacs.
(defun dotfiles/run-in-background (cmd) (let ((command-parts (split-string cmd "[ ]+"))) (apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts)))))
Shortcuts
Place keybindings for executing shell commands behind SPC x
:
-
Run shell commands with
x
-
Run async shell commands with
z
(dotfiles/leader "x" '(:ignore t :which-key "Run") "xx" '(dotfiles/run :which-key "Run") "xz" '(async-shell-command :which-key "Async"))