Run PIMacs in a Docker container for interactive testing with X11 GUI support.
- Docker installed and running
- Linux host with X11 (for GUI mode)
xhostcommand available (usually inx11-xserver-utilspackage)
# Build the image
docker build -t pimacs:latest -f docker/Dockerfile .
# Run Emacs (GUI)
./docker/run.sh
# Run Emacs (terminal mode)
./docker/run.sh -nwThe Docker image contains:
- Ubuntu 24.04
- Emacs 30 (from ubuntuhandbook1 PPA)
- Doom Emacs (latest)
- PIMacs modules (25 modules, excluding
lang-*andnotmuch)
All the modules that I use currently
# Open a specific file living in your home directory
./docker/run.sh /home/pimacs/host-home/.emacs.d/init.el
# Run doom sync after modifying PIMacs
docker run -it --rm \
-v $(pwd):/home/pimacs/.doom.d/modules/pimacs \
pimacs:latest ~/.emacs.d/bin/doom sync
# Get a shell inside the container
docker run -it --rm \
-v $(pwd):/home/pimacs/.doom.d/modules/pimacs \
pimacs:latest /bin/bashOnce Emacs opens, verify PIMacs is working:
- Theme should be Zenburn (dark theme with muted colors)
- Run
M-x pim-scissor- should insert a scissor line - Check
*Messages*buffer for any errors - Run
M-x doom/infoto see loaded modules
If you get display errors:
# Ensure xhost allows local Docker
xhost +local:docker
# Check DISPLAY is set
echo $DISPLAYTo rebuild the image after modifying PIMacs:
docker build --no-cache -t pimacs:latest -f docker/Dockerfile .Or simply use run.sh which mounts PIMacs as a volume for live changes.