# exwm-arch Arch Linux + [EXWM](https://github.com/ch11ng/exwm) install script. Using [daviwil's emacs-from-scratch](https://github.com/daviwil/emacs-from-scratch/). ## Arch install (manual, pre-script) Boot `archlinux-2026.03.01-x86_64.iso` (or current), update archinstall, then run it: ```bash sudo pacman -Sy archinstall archinstall ``` archinstall settings: - **mirror:** united states - **disk:** ext4 - **bootloader:** grub - **user:** create with sudo - **profile:** minimal - **network:** networkmanager - **audio:** pipewire Reboot when done, then log in as your sudo user. ## Usage ```bash sudo pacman -Syu sudo pacman -Sy git git clone https://gitea.fortis-scientia.com/phantomoffrags/exwm-arch-install cd exwm-arch-install chmod +x install.sh ./install.sh ``` When it finishes: ```bash startx ``` > **dbus note:** if apps like Firefox complain about dbus, try `dbus-run-session startx` instead. --- ## What the script does | step | action | |------|--------| | 1 | installs xorg, emacs, dmenu, zsh, urxvt, tmux, git, nano | | 2 | clones daviwil emacs-from-scratch to `~/.emacs.d` | | 3 | writes `~/.xinitrc` | | 4 | installs pipewire + wireplumber, enables user services | | 5 | installs firefox, fonts, xclip, scrot, xf86-video-qxl | | 6 | writes `~/.emacs` with EXWM config + doom-moonlight theme | | 7 | installs exwm + doom-themes packages via `emacs --batch` | --- ## Key bindings ### navigation | key | action | |-----|--------| | `s-0` – `s-9` | switch / create workspace | | `s-w` | interactive workspace switcher | | `s-r` | reset / refresh window (unstick a window) | | `s-arrows` | move between emacs splits | | `C-x o` | cycle between emacs buffers/windows | | `C-x b` | switch buffer by name | | `C-x k` | kill (close) current buffer | ### launching things | key | action | |-----|--------| | `s-Return` | open urxvt terminal | | `s-&` | launch app by shell command prompt | | `M-x` | run any emacs command by name | ### files | key | action | |-----|--------| | `C-x C-f` | open / find file | | `C-x C-s` | save file | | `C-x C-w` | save file as | | `C-x C-c` | quit emacs (closes everything) | ### window splits | key | action | |-----|--------| | `C-x 2` | split horizontally | | `C-x 3` | split vertically | | `C-x 1` | close all splits, keep current | | `C-x 0` | close current split | ### EXWM window modes EXWM windows have two modes: - **line mode** (default) — emacs keybinds work; good for reading - **char mode** — all input goes to the X app (e.g. typing in a browser). Press `i` to enter char mode, `s-r` to exit back to line mode. ### moving windows between workspaces ``` M-x exwm-workspace-move-window ``` ### copy/paste using CUA mode ``` C-space mark/select C-x C-c copy C-v paste ``` --- ## Launching apps From a urxvt terminal (`s-Return`): ```bash firefox & ``` The `&` sends it to the background so the terminal returns immediately. Close with `Ctrl+q` (Firefox) or `C-x k` (emacs buffer).