Emacs
Emacs is my long time favorite code editor (IDE) and for writing documentation (including this book).
Install Emacs
Because Sway runs on Wayland, you’ll want to install the Wayland (pgtk) version of Emacs. In Fedora 40 onwards, the Wayland (pgtk) version is already the default. For Fedora 39, you can use this COPR (a COPR is to Fedora what PPA is to Ubuntu and what AUR is to Arch Linux), which includes a custom build for Wayland (pgtk).
To enable this, you need to be running your dev toolbox:
toolbox enter dev
Install Emacs:
sudo dnf install emacs
Create Emacs script
In order to be able to quickly launch Emacs inside the toolbox from the host, you will need a little script installed on the host.
You can create this script and put it in /usr/local/bin/emacs
. Run
this on the host (not in the toolbox), to create it as the root user:
cat << EOF | sudo tee /usr/local/bin/emacs
#!/bin/bash
## Run Emacs in the dev toolbox and pass it any args:
distrobox enter --name dev -- bash -l -c emacs
EOF
sudo chmod a+x /usr/local/bin/emacs
Now you can run Emacs from the host, and it will run inside the Toolbox.
Install dependencies
Most Emacs packages are written in Emacs Lisp, and therefore have no external dependencies. The one exception is for Vterm terminal support, which requires compiling a C library (libvterm). This compilation can be done automatically by Emacs, but it requires you have some tools preinstalled:
- CMake
- libtool
Install the dependencies inside the toolbox:
sudo dnf install cmake libtool
Remove any existing Emacs config
Assuming you want to use my Emacs config, you need to delete any existing config you already have. Also note that Emacs creates a default config the first time it runs, so if you started Emacs already, you may have a config and not even know it.
Here’s how to remove the existing Emacs config:
rm ~/.emacs ~/.emacs.d -rf
Install my Emacs config
My Emacs config is on github. Install it with the following script:
REMOTE=https://github.com/EnigmaCurry/emacs.git
REPO=${HOME}/git/vendor/enigmacurry/emacs
BRANCH=straight
(set -e
test -d ~/.emacs.d && (echo "~/.emacs.d already exists. Aborting install." && exit 1)
test -d ${REPO} || git clone -b ${BRANCH} ${REMOTE} ${REPO}
mkdir ~/.emacs.d && ls -1 ${REPO}/*.el | xargs -iXX ln -s XX ~/.emacs.d
mkdir ~/.emacs.d/straight && ln -s ${REPO}/straight-versions ~/.emacs.d/straight/versions
ln -s ${REPO}/snippets ~/.emacs.d/snippets
)
Start Emacs to finish the installation
The first time Emacs starts, it will install all of the dependencies
listed in the main config file ~/.emacs.d/init.el
.
Run:
emacs
Wait for everything to install. You may see a blank screen for up to 10 minutes, but you should see some minimal information of the progress in the bottom minibuffer.
If it gets stuck at any point, quit and restart it, and it should continue where it left off. If you get any error message, you may want to start Emacs again with debug mode turned on:
emacs --debug-init
This will usually give you a more verbose error message which can be helpful in debugging the startup.
Read the README for my config
More notes are available in the README.