- Add serialMonitor display config to all diagram templates - Set USB_SERIAL_JTAG attr on ESP32-S3 for built-in USB serial - Add TX/RX → $serialMonitor wiring for ESP32 (UART-based serial) - Remove disconnected breadboard parts (wired directly to MCU pins) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
⚡ Archduino
A full TUI-based Arduino development environment — one script, zero friction.
Archduino bootstraps a complete terminal-based Arduino IDE on Arch Linux or Ubuntu (including WSL2). It installs, configures, and wires together a curated set of modern CLI tools — with a unified colorscheme of your choice — so you can go from a bare system to compiling and uploading sketches in minutes.
The Idea was a Development Environment runnable by almost everything. No GUI needed! This is tested on a minimal Arch install without a Desktop Environment!
╔═══════════════════════════════════════╗
║ ⚡ Archduino Bootstrap ⚡ ║
║ TUI Arduino Dev Environment Setup ║
╚═══════════════════════════════════════╝
✨ What You Get
| Layer | Tool | Purpose |
|---|---|---|
| Editor | Neovim + NvChad | Fully configured IDE with LSP, Treesitter, and fuzzy finding |
| Arduino | arduino-cli + vim-arduino | Compile, upload, and monitor directly from Neovim |
| Multiplexer | Zellij | Tiled workspace with a custom Arduino layout |
| Shell | Zsh + Oh My Zsh | Autosuggestions, syntax highlighting, smart completions |
| Prompt | Starship | Fast, minimal, git-aware prompt |
| Git | Lazygit | Beautiful terminal UI for git |
| File Manager | Yazi | Blazing fast terminal file manager with image preview |
| Serial | tio | Simple serial device I/O |
| Font | JetBrainsMono Nerd Font | Icons and ligatures for all TUI tools |
| Theme | 5 colorschemes | Consistent look across every tool (see below) |
Colorschemes
The installer lets you pick a theme that is applied consistently across Neovim, Starship, Zellij, Lazygit, and Yazi:
| # | Theme | Style |
|---|---|---|
| 1 | Gruvbox Dark | Warm retro browns and yellows |
| 2 | Catppuccin Mocha | Soft pastel on dark base |
| 3 | Tokyo Night | Cool blues and purples |
| 4 | Nord | Arctic, muted blue-grey |
| 5 | Dracula | High-contrast purple and green |
You can switch themes at any time after installation:
archduino-theme # or just: theme
This updates Starship, Zellij, Lazygit, Yazi, and NvChad in one step.
Supported Boards (out of the box)
| Board | FQBN |
|---|---|
| Arduino Uno | arduino:avr:uno |
| Arduino Mega | arduino:avr:mega |
| Arduino Nano | arduino:avr:nano |
| ESP32 | esp32:esp32:esp32 |
| ESP32-S3 | esp32:esp32:esp32s3 |
| ESP8266 (NodeMCU) | esp8266:esp8266:nodemcuv2 |
🚀 Quickstart
git clone --depth=1 https://github.com/<your-username>/ArduinoArch.git
cd ArduinoArch
chmod +x install.sh
./install.sh
The installer will:
- Show a banner with detected OS and package manager
- Let you pick your colorscheme (applied to all tools)
- Let you choose between progress bar or verbose output
- Ask for your sudo password once (cached for the entire install)
- Run through all 11 setup steps automatically
After it finishes, start a new shell or run source ~/.zshrc.
📁 Project Structure
ArduinoArch/
├── install.sh # Main entry point
└── lib/
├── common.sh # Colors, helpers, environment detection, progress bar
├── themes.sh # Colorscheme selection menu
├── themes/
│ ├── gruvbox.sh # Gruvbox Dark configs
│ ├── catppuccin.sh # Catppuccin Mocha configs
│ ├── tokyonight.sh # Tokyo Night configs
│ ├── nord.sh # Nord configs
│ └── dracula.sh # Dracula configs
├── packages.sh # Base packages (build tools, ripgrep, fd, bat, etc.)
├── fonts.sh # JetBrainsMono Nerd Font installation
├── zsh.sh # Oh My Zsh + plugins
├── starship.sh # Starship prompt config
├── zellij.sh # Zellij + config + Arduino workspace layout
├── neovim.sh # Neovim + NvChad + plugin configs (Arduino, LSP)
├── yazi.sh # Yazi file manager + themed config
├── arduino.sh # Arduino CLI + AVR/ESP32/ESP8266 cores + common libraries
├── git.sh # Lazygit config
├── scaffold.sh # `arduino-new` scaffolding tool + board templates
└── shell-config.sh # .zshrc aliases/config + WSL2 extras
🔧 Usage
Creating a New Project
arduino-new my-project uno
cd my-project
nvim my-project.ino
This scaffolds a ready-to-go project with:
- Board-specific
.inotemplate (WiFi-enabled for ESP boards) sketch.yamlwith your board's FQBN.clangdconfig for C++17 intellisense.gitignorefor build artifacts- Initialized git repo
Launching the Arduino Workspace
adev
Opens Zellij with the custom Arduino layout:
┌──────────────────────┬─────────────────┐
│ │ │
│ Neovim (65%) │ Terminal │
│ │ │
│ ├─────────────────┤
│ │ Serial Mon │
│ │ │
├──────────────────────┴─────────────────┤
│ Tab: code (focused) │ Tab: git │
└────────────────────────────────────────┘
Neovim Keybindings (Arduino)
All keybindings are under <leader>a:
| Key | Action |
|---|---|
<leader>ac |
Choose board |
<leader>ap |
Choose port |
<leader>av |
Verify (compile) |
<leader>au |
Upload |
<leader>as |
Serial monitor |
<leader>ai |
Board info |
Zellij Keybindings
| Key | Action |
|---|---|
Alt h/l |
Move focus left/right (or switch tabs) |
Alt j/k |
Move focus down/up |
Alt n |
New pane below |
Alt v |
New pane to the right |
Alt f |
Toggle floating panes |
Alt t |
New tab |
Shell Aliases
| Alias | Command |
|---|---|
adev |
zellij --layout arduino |
ac |
arduino-cli |
acc |
arduino-cli compile |
acu |
arduino-cli upload |
acm |
arduino-cli monitor |
acb |
arduino-cli board list |
lg |
lazygit |
v |
nvim |
y |
yazi (file manager) |
theme |
archduino-theme (switch colorscheme) |
🖥️ WSL2 Notes
Archduino fully supports WSL2 (both Arch and Ubuntu). The installer automatically:
- Detects the WSL2 environment
- Adds your user to the
dialoutanduucpgroups for serial access
To connect your Arduino over USB you need usbipd-win on the Windows side:
# On Windows (PowerShell as Admin)
winget install usbipd
# List USB devices
usbipd list
# Attach your Arduino to WSL
usbipd attach --wsl --busid <BUSID>
🤝 Contributing
Contributions are welcome! Each installer step lives in its own file under lib/, making it straightforward to modify or extend individual components without touching the rest.
📄 License
This project is open source. Feel free to use, modify, and distribute.