Files
2026-06-18 21:19:09 +01:00

5.4 KiB

warp-dotfiles

Version-controlled Warp configuration, symlinked into place on each machine so file-based settings follow me everywhere.

This complements — it does not replace — Warp's cloud features:

  • Settings Sync (cloud) handles themes, AI settings, feature toggles, and privacy settings automatically on login.
  • Warp Drive Workflows (cloud) store reusable, parameterized commands (e.g. SSH connections).
  • This repo captures the file-based bits Settings Sync skips: custom keybindings, custom themes, YAML/tab configs, and local settings.toml.

Layout

warp-dotfiles/
├── install.ps1                         # symlink installer (Windows / PowerShell)
├── README.md
└── warp/
    ├── data/                           # -> %APPDATA%\warp\Warp\data
    │   ├── keybindings.yaml            # custom keybindings (if present)
    │   ├── tab_configs/                # launch / tab configs (TOML)
    │   └── themes/                     # custom themes
    └── config/                         # -> %LOCALAPPDATA%\warp\Warp\config
        └── settings.toml               # device settings
Repo path Target on Windows
warp\data\tab_configs %APPDATA%\warp\Warp\data\tab_configs
warp\data\themes %APPDATA%\warp\Warp\data\themes
warp\data\keybindings.yaml %APPDATA%\warp\Warp\data\keybindings.yaml
warp\config\settings.toml %LOCALAPPDATA%\warp\Warp\config\settings.toml

Entries whose source does not exist in the repo are skipped, so the script is safe to run even before you've added keybindings or themes.

Note: settings.toml includes some device-specific values (e.g. startup shell). If you don't want it shared across machines, remove that entry from $Entries in install.ps1.

Set up on a new machine

The installer is Windows / PowerShell only. On macOS or Linux the config paths and symlink mechanics differ, so install.ps1 will not work as-is.

Prerequisites: Git and Warp installed. The repo is public, so cloning needs no authentication.

  1. Enable Developer Mode so non-admin symlink creation works: Settings > Privacy & security > For developers > Developer Mode. (Alternatively, run the installer from an elevated PowerShell.)

  2. Clone and run:

    git clone https://github.com/slaguru666/warp-dotfiles.git $env:USERPROFILE\warp-dotfiles
    cd $env:USERPROFILE\warp-dotfiles
    pwsh -ExecutionPolicy Bypass -File .\install.ps1
    
  3. Restart Warp.

Useful flags

pwsh -File .\install.ps1 -DryRun   # preview changes, write nothing
pwsh -File .\install.ps1 -Force    # delete existing real targets instead of backing them up

Existing real files at a target are backed up to <target>.bak-<timestamp> unless -Force is used.

The target roots can also be overridden (handy for testing or non-standard installs); they default to the standard Warp locations:

pwsh -File .\install.ps1 -DataRoot C:\tmp\data -ConfigRoot C:\tmp\config -DryRun
  • -DataRoot — defaults to %APPDATA%\warp\Warp\data (tab_configs, themes, keybindings.yaml)
  • -ConfigRoot — defaults to %LOCALAPPDATA%\warp\Warp\config (settings.toml)

Syncing across machines

The goal is the same on every machine: clone this repo once, then symlink its files into wherever that machine's Warp reads its config. On most machines the defaults are correct, so you don't pass any roots:

git clone https://github.com/slaguru666/warp-dotfiles.git $env:USERPROFILE\warp-dotfiles
pwsh -File $env:USERPROFILE\warp-dotfiles\install.ps1

Use -DataRoot / -ConfigRoot only when a machine stores Warp's config somewhere non-standard (e.g. a portable install, a custom %APPDATA%, or a redirected profile). Point them at that machine's Warp data and config folders:

pwsh -File .\install.ps1 `
  -DataRoot   D:\PortableWarp\warp\Warp\data `
  -ConfigRoot D:\PortableWarp\warp\Warp\config

Tip: add -DryRun first to confirm the resolved roots before linking. Once linked, every machine shares the same tracked files — edit on one, git push, then git pull on the others. Because Warp also runs Settings Sync in the cloud, prefer keeping device-specific values (startup shell, preferred editor) out of the synced settings.toml, or drop that entry from $Entries as noted above.

Repository status: archived (read-only)

This repository is archived on GitHub (read-only):

  • Consuming the config still works — git clone and git pull work on any number of machines, and the installer runs normally.
  • Pushing changes is rejected until the repo is unarchived.

To resume contributing config updates, unarchive it first (requires the GitHub CLI):

gh repo unarchive slaguru666/warp-dotfiles --yes

Updating

Because the targets are symlinks back into this repo, edits made in Warp land directly in the working tree. Commit and push as usual (after unarchiving, per the note above):

cd $env:USERPROFILE\warp-dotfiles
git add -A
git commit -m "Update Warp config"
git push