Skip to main content

Termux environment setup guide

1. Install the Cascadia Mono NF font

Source: Microsoft's official microsoft/cascadia-code v2404.23

# 1. Install unzip (if not already installed)
pkg install unzip -y

# 2. Download the official Microsoft release zip
curl -fsSL -o ~/cascadia.zip https://github.com/microsoft/cascadia-code/releases/download/v2404.23/CascadiaCode-2404.23.zip

# 3. Extract
mkdir -p ~/cascadia
unzip ~/cascadia.zip -d ~/cascadia

# 4. Copy the font to Termux's font location
mkdir -p ~/.termux
cp ~/cascadia/ttf/static/CascadiaMonoNF-Regular.ttf ~/.termux/font.ttf

# 5. Apply
termux-reload-settings

# 6. Clean up
rm -rf ~/cascadia ~/cascadia.zip

Notes

  • Termux only reads ~/.termux/font.ttf. Drop a font there and reload — that's it.
  • Use Cascadia Mono NF (no ligatures) rather than Cascadia Code NF (with ligatures) to avoid terminal layout issues.
  • For ligatures, change step 4 to:
    cp ~/cascadia/ttf/static/CascadiaCodeNF-Regular.ttf ~/.termux/font.ttf
  • /tmp may not be writable in Termux — put all temp files under ~/ instead.

2. Install Claude Code

The official native installer (curl | bash) does not work in Termux: the Linux ARM64 binary it downloads depends on the standard Linux dynamic linker, which is incompatible with Termux's Android ABI (e_type error). Use npm instead.

Installation steps

# 1. Update Termux and install dependencies
pkg update -y && pkg upgrade -y
pkg install nodejs git -y

# 2. Install Claude Code via npm
npm install -g @anthropic-ai/claude-code

# 3. Create an alias (the npm version doesn't ship a global CLI shim)
alias claude='node /data/data/com.termux/files/usr/lib/node_modules/@anthropic-ai/claude-code/cli.js'

# 4. Persist it to bashrc
echo "alias claude='node /data/data/com.termux/files/usr/lib/node_modules/@anthropic-ai/claude-code/cli.js'" >> ~/.bashrc

# 5. Test
claude --version

Known issue: /tmp/claude permission error

Claude Code hardcodes the /tmp/claude path. On Termux, long-running commands may fail with EACCES: permission denied.

How to tell: just use it normally — if you don't see the error, you don't need to do anything.

If you hit it, bind-mount tmp via proot:

# Install proot
pkg install proot -y

# Launch claude via proot
proot -b /data/data/com.termux/files/usr/tmp:/tmp claude

You can also bake the proot version into the alias:

alias claude='proot -b /data/data/com.termux/files/usr/tmp:/tmp node /data/data/com.termux/files/usr/lib/node_modules/@anthropic-ai/claude-code/cli.js'

Updating Claude Code

npm install -g @anthropic-ai/claude-code