One-command development environment for Ubuntu, WSL and Windows. It installs a consistent shell, tmux workflow, developer tools, AI CLIs and the interactive devhub learning dashboard.
Ubuntu or WSL:
curl -fsSL https://raw.githubusercontent.com/arturict/zsh-setup/main/setup.sh | bashWindows PowerShell:
irm https://raw.githubusercontent.com/arturict/zsh-setup/main/setup.ps1 | iexThe scripts are safe to run again for updates. Existing shell files are backed up before the managed loader is added. Optional components are presented for confirmation instead of silently installed, including when setup.sh is piped through curl. Authentication secrets are never stored in this repository.
Ubuntu and WSL:
- Zsh, Oh My Zsh, Powerlevel10k and completion plugins
- Git, GitHub CLI, fzf, ripgrep, bat, tmux and build tools
- Node.js LTS through nvm, Bun, uv and pyenv
- Codex CLI, Claude Code and OpenCode
~/repos,~/schooland~/scratch- a persistent, visually clear tmux configuration
devhuband thetproject-session command
Windows:
- Windows Terminal, PowerShell, Git, GitHub CLI, VS Code and Tailscale via winget
- Ubuntu via WSL when WSL is missing
- the PowerShell edition of
devhub
Linux development tools stay inside Ubuntu/WSL. Windows remains the host for Windows Terminal, VS Code, Tailscale and WSL lifecycle management.
Open the fullscreen dashboard, built with OpenTUI:
devhubDirect commands:
devhub doctor # installation and auth health
devhub tmux # tmux cheat sheet
devhub sessions # open the current project workspace
devhub learn # guided short lessons
devhub tips # searchable command library
devhub auth # login instructions without exposing tokens
devhub update # pull a clean copy and re-run setupThe dashboard rotates practical reminders and tracks completed lessons locally under ~/.local/state/devhub. It never uploads usage data.
The installer asks before optional or disruptive changes, including AI CLIs, pyenv, Bun, uv, Windows applications and installing Ubuntu in WSL. --yes is the explicit unattended opt-in and accepts the documented defaults. The minimal shell and verification dependencies remain automatic on Ubuntu.
Inside any project:
tThis creates or resumes a session named after the current directory. Interactive SSH logins automatically create or resume the main session.
t ls # list sessions (does not create a session named "ls")
t NAME # open or create a named session
t kill NAME # remove a session| Shortcut | Action |
|---|---|
Ctrl-a s |
select sessions and windows |
Ctrl-a c |
new window in the current directory |
Ctrl-a | |
split left/right |
Ctrl-a - |
split top/bottom |
Ctrl-a h/j/k/l |
move between panes |
Ctrl-a d |
detach while processes keep running |
Ctrl-a r |
reload configuration |
The status bar always shows the machine hostname, session, window, current path and time. This is important when working across WSL and multiple Tailscale machines.
Installers deliberately do not copy or commit credentials. Log in once on each machine:
gh auth login
codex login
opencode auth login
claude /login
devhub doctorSubscription sessions and API keys remain in each tool's protected user configuration.
bash setup.sh --yes
bash setup.sh --non-interactive
bash setup.sh --doctor
bash setup.sh --skip-shell-change
bash setup.sh --skip-optional-tools~/.config/artur-zsh-setup/
├── zshrc.zsh
├── zprofile.zsh
├── tmux-auto.zsh
├── tmux-auto.bash
└── content/
~/.local/bin/devhub
~/.local/bin/t
~/.tmux.conf
The installer only adds marked loader blocks to .zshrc/.zprofile and one guarded tmux loader to .bashrc where applicable.
assets/ managed tmux and shell integration
bin/ devhub and helper commands
content/ tips and guided lessons
tui/ OpenTUI TypeScript application
install-zsh-setup.sh Ubuntu/WSL implementation
setup.sh Linux entry point
setup.ps1 Windows entry point
Supported systems: Ubuntu 22.04+, Ubuntu 24.04+, Ubuntu 26.04 and WSL running Ubuntu. Other Linux distributions intentionally fail with a clear message.