exwm-arch-install/README.md

141 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# exwm-arch
Arch Linux + [EXWM](https://github.com/ch11ng/exwm) install script for a Proxmox VM, using [tsoding's dotfiles](https://github.com/rexim/dotfiles).
## VM settings
| setting | value |
|------------|--------------------------|
| sockets | 2 |
| cores | 5 |
| memory | 12 GB |
| disk | 100 GB (ext4) |
| bios | SeaBIOS |
| machine | i440FX |
| display | qxl (`xf86-video-qxl`) |
## 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:
- **disk:** ext4
- **mirror:** united states
- **bootloader:** grub
- **network:** networkmanager
- **user:** create with sudo
- **profile:** minimal
- **audio:** pipewire
Reboot when done, then log in as your sudo user.
## Usage
```bash
git clone https://github.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 and deploys tsoding dotfiles (`MANIFEST.linux`) |
| 3 | writes `~/.xinitrc``exec emacs` |
| 4 | installs pipewire + wireplumber, enables user services |
| 5 | installs firefox, fonts, xclip, scrot, xf86-video-qxl |
| 6 | writes `~/.emacs` with EXWM config |
| 7 | installs the EXWM package via `emacs --batch` |
---
## Key bindings
### navigation
| key | action |
|-----|--------|
| `M-0` `M-9` | switch / create workspace |
| `M-w` | interactive workspace switcher |
| `M-r` | reset / refresh window (unstick a window) |
| `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 |
|-----|--------|
| `M-Return` | open urxvt terminal |
| `M-x` | run any emacs command by name |
To add a Firefox shortcut, uncomment the `M-f` bind in `~/.emacs`.
### 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, `M-r` to exit back to line mode.
### moving windows between workspaces
```
M-x exwm-workspace-move-window
```
### copy/paste in urxvt
```
Ctrl+Shift+C copy
Ctrl+Shift+V paste
```
---
## Launching apps
From a urxvt terminal (`M-Return`):
```bash
firefox &
```
The `&` sends it to the background; the terminal returns immediately. Close with `Ctrl+q` (Firefox) or `C-x k` (emacs buffer).