134 lines
2.9 KiB
Markdown
134 lines
2.9 KiB
Markdown
# 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).
|