Skip to content

필사 모드: Terminal & Shell Tools 2026 — Ghostty / Wezterm / Alacritty / Kitty / Warp / Fish 4 / Nushell / Zellij / Starship Deep Dive

English
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

Prologue — terminals got interesting again

For ten years the terminal was the boring tool. The xterm model from the 1990s plus iTerm2 (2008), GNU screen (1987), and tmux (2007) covered nearly everything. After that the only real changes were "slightly nicer fonts" and "slightly faster rendering."

Between 2024 and 2026 that picture shifted hard.

- December 2024 brought **Ghostty 1.0**. Mitchell Hashimoto, who left HashiCorp, spent two full-time years writing a Zig-based terminal. Even the private beta drew a crowd, and the first week of GA pushed GitHub stars into the tens of thousands.

- **Fish 4** (2024) marked the moment shells themselves started being rewritten in Rust. It is the largest shell project to port a C++ codebase to Rust in stages.

- **Warp** locked in its identity as the AI-native terminal. Rust plus Apple Metal underneath, LLM integration as a first-class feature.

- **Nushell** stopped being a toy. Still 0.x, but a real community of data engineers and SREs using it instead of Python for one-off pipelines.

- **Zellij** grew into a credible alternative to tmux, and **Starship** has become the universal shell prompt nobody argues with.

- **bat / eza / zoxide / fd / ripgrep / fzf / atuin** — the Rust-rewrites-of-Unix-utils wave is now the default. Apple has even started recommending ripgrep as an alternative to BSD grep in macOS Sequoia developer guidance.

This post walks the 2026 landscape in one breath: **emulator -> shell -> multiplexer -> prompt -> utilities -> dotfiles**. At the end there is a matrix for who should pick what across macOS, Linux, Windows, design-first, and speed-first scenarios.

1. The 2026 terminal map — four layers

One picture first. The single word "terminal" hides four different things.

[your keyboard]

|

v

+----------------------+

| Terminal Emulator | <- draws pixels (GUI)

| (Ghostty, iTerm2, | Ghostty / Wezterm / Alacritty / Kitty

| Wezterm, Warp ...) | Warp / iTerm2 / Windows Terminal

+----------+-----------+

|

| pty (virtual terminal)

v

+----------------------+

| Shell | <- parses commands

| (bash, zsh, fish, | bash / zsh / fish / nushell

| nushell, ...) | elvish / xonsh / Oils sh

+----------+-----------+

|

| fork / exec

v

+----------------------+

| Multiplexer | <- sessions, windows, panes

| (tmux, zellij, | tmux / zellij / screen / dvtm

| screen, ...) |

+----------+-----------+

|

v

+----------------------+

| CLI utils + prompt | <- bat / eza / zoxide / fd / rg / fzf / atuin

+----------------------+ <- starship / p10k / oh-my-zsh / oh-my-posh

If you don't separate these four layers, tool decisions tangle. Saying "Warp is great" really means **the product that bundles emulator + shell + multiplexer + parts of the prompt is great** — not that it is somehow faster than tmux. By contrast, "Ghostty + zsh + tmux + starship + atuin" keeps each layer cleanly separated.

One-liner to remember: **emulator = pixels, shell = semantics, multiplexer = sessions, prompt = information.**

2. Ghostty — Mitchell Hashimoto's two-year project, GA Dec 2024

The most interesting newcomer first.

**Ghostty** is what Mitchell Hashimoto (co-founder of HashiCorp, the company behind Terraform, Vault, and Consul) built after leaving full-time. Two years, mostly solo, in Zig. The 1.0 release shipped in December 2024 after a long private beta; the first week of GA added 20,000+ stars on GitHub.

Key traits:

- **Written in Zig.** Not Rust, not C++. Zig is a systems language aiming for memory safety with less complexity than Rust. Mitchell has said in interviews that he patched the Zig compiler itself frequently along the way.

- **Native GUI.** SwiftUI on macOS, GTK4 on Linux. No Electron. The core is a C library called libghostty, with each platform wrapping its own GUI around it.

- **100% xterm compatible.** Seriously — ECMA-48, ISO 2022, DEC private modes, xterm extensions, all of it. Mitchell said in interviews the terminal protocol itself was what made it interesting to him.

- **GPU rendering.** Metal on macOS, OpenGL on Linux. Alacritty-class speed.

- **Kitty graphics protocol** plus **Sixel** support — inline images work.

- **Nearly everything is a key-value config.** Just `~/.config/ghostty/config` with lines like `font-size = 14`. No Lua, no Python.

Config example (the simplicity is the point):

~/.config/ghostty/config

font-family = "JetBrains Mono"

font-size = 14

theme = "GruvboxDarkHard"

background-opacity = 0.95

window-padding-x = 12

window-padding-y = 12

macos-titlebar-style = "tabs"

keybind = cmd+t=new_tab

keybind = cmd+shift+enter=toggle_fullscreen

The reason Ghostty became a talking point is not just "another new terminal." It was **proof that one person, given two full-time years, can ship system software of this quality.** No prior terminal had simultaneously hit xterm compatibility, GPU rendering, and native GUIs on two platforms.

The limits are real too.

- **No Windows yet.** macOS and Linux only as of May 2026. WSL works.

- **Low extensibility.** No Lua, no Python scripting. Keybindings are about it.

- **Theme ecosystem is still small.** You don't yet get the thousands of community iTerm2 themes for free.

One-liner: **Ghostty is "just a fast, clean terminal." That is the strongest selling point.**

3. Wezterm — the Lua-scripted Rust terminal

**Wezterm** (Wez Furlong) has been under heavy development since 2020. One-liner: **Lua config + built-in multiplexer + multi-OS.**

Traits:

- **Rust.** Renders through wgpu (Metal, Vulkan, DX12, OpenGL).

- **Lua config.** `~/.wezterm.lua`. Keybindings, automation, and event hooks are written in a full scripting language — deliberate, powerful.

- **Built-in multiplexer.** `wezterm cli` lets you do tmux-like things from outside. Connect to a remote wezterm-mux-server and you get persistent sessions on remote hosts.

- **Native on Linux, macOS, Windows.** GPU-accelerated on all three.

- **SSH domains.** Treat remote-host panes like local ones from inside a single Wezterm window.

Config example:

-- ~/.wezterm.lua

local wezterm = require 'wezterm'

local config = wezterm.config_builder()

config.font = wezterm.font 'JetBrains Mono'

config.font_size = 14

config.color_scheme = 'GruvboxDark'

config.window_background_opacity = 0.95

config.hide_tab_bar_if_only_one_tab = true

-- key bindings

config.keys = {

{ key = 't', mods = 'CMD', action = wezterm.action.SpawnTab 'CurrentPaneDomain' },

{ key = 'd', mods = 'CMD', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },

{ key = 'D', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },

}

-- event hook

wezterm.on('update-right-status', function(window, pane)

window:set_right_status(wezterm.strftime '%H:%M:%S')

end)

return config

The reason to pick Wezterm is clear: **you want all config as code, and you want the multiplexer built in.** People who want Wezterm's expressive power over Ghostty's simplicity.

4. Alacritty — the simplest Rust terminal

**Alacritty** (2017–) is the grandparent of Rust terminals. Philosophy in one line: **render fast, do nothing else.**

- **GPU rendering** on OpenGL ES2. Among the fastest in benchmarks.

- **YAML, then TOML config.** `alacritty.toml` is just fonts, colors, keybindings.

- **No tabs, no splits.** On purpose. "That is tmux's job."

- **Every OS** — macOS, Linux, Windows, BSD.

Config example:

~/.config/alacritty/alacritty.toml

[font]

normal = { family = "JetBrains Mono", style = "Regular" }

size = 14

[colors.primary]

background = '#1d2021'

foreground = '#d4be98'

[window]

opacity = 0.95

padding = { x = 12, y = 12 }

decorations = "buttonless"

[keyboard]

bindings = [

{ key = "T", mods = "Command", action = "SpawnNewInstance" },

]

Alacritty's appeal is simplicity. **"A terminal only draws characters; sessions belong to tmux."** If that resonates, Alacritty is the answer. In 2026 Ghostty matches the simplicity story while also shipping a SwiftUI GUI, but Alacritty still wins on pure cross-platform coverage.

5. Kitty — GPU acceleration plus Python config

**Kitty** (Kovid Goyal, 2017–) is C plus Python. Same vintage as Alacritty, opposite philosophy: **put features in.**

- **GPU rendering** on OpenGL.

- **Kitty graphics protocol** — inline images, icons, previews. Ghostty and Wezterm now both speak it, effectively standardizing the protocol Kitty defined.

- **kittens** — small apps written in Python: `icat` (image viewer), `hyperlinked_grep`, `clipboard`, etc.

- **Tabs and splits built in.** Usable without a multiplexer.

- **Conf-style config** at `~/.config/kitty/kitty.conf`. Mostly key-value.

Config example:

~/.config/kitty/kitty.conf

font_family JetBrains Mono

font_size 14.0

background_opacity 0.95

window_padding_width 12

tabs

map cmd+t new_tab

map cmd+shift+enter toggle_fullscreen

splits

enabled_layouts splits,stack

map cmd+d launch --location=vsplit

map cmd+shift+d launch --location=hsplit

Kitty fits **the user who wants everything in one tool, hates Lua and JS, and likes Python.** Common in scientific computing, research, and ML.

6. Warp — the AI-first bet

**Warp** (2020–) made the biggest bet of any new terminal. Y Combinator alum, raised through Series B, with the slogan "we are redesigning the terminal for the first time in 30 years."

Differentiators:

- **Rust + Apple Metal.** Smooth 60fps on 4K macOS displays.

- **Block-based UI.** Each command and its output is one "block" you can scroll, search, share, and reuse.

- **AI integration.** Warp AI generates commands from natural language, explains output, and interprets errors. Initially their own LLM integration, later adding Claude and GPT as options.

- **Warp Drive.** A cloud feature for teams to share command workflows. The SaaS surface.

- **Workflows.** Parameterized command templates. An evolution of shell aliases.

- **Notebooks.** Jupyter-style mixed markdown plus commands.

Tradeoffs:

- **Cloud dependence.** Login was required for a long time (an anonymous mode partially landed late 2024). Some SRE and security teams push back.

- **macOS first.** Linux entered beta in 2023 and stabilized in 2025. Windows is still unsupported.

- **Shell compatibility.** Warp wraps the underlying shell. zsh, bash, fish mostly work, but a few prompt setups (notably Powerlevel10k's instant prompt) can clash.

People who pick Warp:

- Engineers whose work has actually shifted toward AI assist and who frequently convert natural language into commands.

- SRE / DevOps teams that want shared workflows.

- People who agree philosophically that "the terminal should be redesigned from scratch."

People who avoid it:

- Security-sensitive teams that flinch at cloud and telemetry.

- Unix-purists who think a terminal should be small.

- Windows users.

One-liner: **Warp is the bet that "if the editor's evolution was VS Code, the terminal's evolution is us."**

7. iTerm2 / Windows Terminal / Tabby / Hyper — the incumbents in 2026

iTerm2 — the macOS classic (2008–)

George Nachman's ObjC project. The de-facto macOS terminal for 17 years.

- **Feature-rich.** Split panes, triggers, autocomplete, hotkey window, Shell Integration.

- **Downside.** Has a reputation for being slower than GPU-accelerated alternatives on Apple Silicon.

- **2026 status.** Stable maintenance mode. The migration from iTerm2 to Ghostty is accelerating.

Windows Terminal — Microsoft's official (2019–)

- **Default terminal on Windows 11.** cmd, PowerShell, and WSL share one window.

- **DirectX 11 + DirectWrite rendering.** Fast.

- **JSON config** in `settings.json`.

- **2026 status.** The de-facto standard on Windows. Even WSL users stay on it.

Tabby (formerly Terminus) — Electron cross-platform (2017–)

- **Electron.** Not light, but identical on macOS, Linux, Windows.

- **Plugin ecosystem** — installs feel like npm modules.

- **Built-in SSH, Telnet, Serial clients.** Many PuTTY refugees end up here.

Hyper — JS/HTML/CSS Electron terminal (2016–)

- **Vercel (then Zeit) project.** Themes are JS and CSS.

- **2026 status.** Stagnant. Electron weight and performance ceilings have largely choked off new adoption.

One-liner: **In 2026, if you're starting fresh on macOS, the answer is Ghostty or Wezterm. On Windows, it's Windows Terminal.**

8. Fish 4 (2024) — the Rust rewrite

To the shell layer. The biggest event is **Fish 4**.

Fish (Friendly Interactive Shell) has been around since 2005, long written in C++. Fish 4, released in 2024, is the major release that **moved almost all of the C++ codebase to Rust**. It is the case study frequently cited when projects like PostgreSQL or CPython discuss Rust migrations.

Fish's appeal (carried from version 1):

- **Not POSIX compatible.** Deliberately. `if / then / fi` becomes `if / end`. Love it or hate it.

- **Autosuggestions.** Gray text completes as you type.

- **Syntax highlighting.** Existing commands change color.

- **Functions and abbreviations.** Richer than plain aliases.

What Fish 4 actually changes:

- **Rewritten in Rust.** Faster startup, safer memory, smaller binary.

- **CMake to Cargo.** The whole build system flipped.

- **Compatibility preserved.** Users barely notice — functions, aliases, keybindings all carry over.

Config example:

~/.config/fish/config.fish

set -gx EDITOR nvim

set -gx PATH $HOME/.cargo/bin $PATH

abbreviations — expand as you type

abbr -a gst git status

abbr -a gco git checkout

abbr -a k kubectl

starship prompt

starship init fish | source

zoxide

zoxide init fish | source

keybinding

bind \cr 'atuin search'

What Fish 4 signals:

1. **The opening shot for shells themselves being rewritten in Rust.** Nushell started in Rust; Fish 4 is the first major example of moving an existing shell.

2. **A C++-to-Rust migration case study.** Staged ports, interop layers, build system rewrites — patterns documented in public.

3. **No visible change for the user.** The definition of a well-executed migration: users don't notice.

9. Nushell — the structured-data shell

**Nushell** (2019–, by Jonathan Turner, Yehuda Katz, and others) is the attempt to change the shell paradigm.

Old shell assumption: **what flows through pipes is text.** In bash or zsh, what moves between commands is newline-delimited strings: `ls | grep foo | awk '{print $1}'`.

Nushell's assumption: **what flows through pipes is a structured table.** `ls` emits a table with rows and columns, and the next command can reference columns by name.

Comparison:

bash: text parsing

ls -la | awk '{print $5, $9}' | sort -n

nushell: structured data

ls | select name size | sort-by size

JSON, CSV, TOML, YAML, SQLite — same shape

open data.csv | where age > 30 | select name email

open package.json | get dependencies | columns

HTTP fits the same model

http get https://api.github.com/repos/nushell/nushell | get stargazers_count

SQL-ish queries

ls | where modified > (date now) - 7day | sort-by modified

Nushell's strengths:

- **Consistent treatment of structured data** — JSON, CSV, SQL via one syntax.

- **Types and autocomplete.** The shell knows column names.

- **Cross-platform.** First-class on Windows.

- **Extensible** with Rust plugins.

Limits:

- **Not POSIX compatible.** Existing shell scripts don't run. Use `bash -c '...'` to escape hatch.

- **0.x.** The syntax still breaks occasionally (2026 has entered a stabilization phase, but major changes still happen).

- **Smaller ecosystem.** Nothing like the Fish or zsh plugin surface.

Where Nushell shines: **data wrangling, ops automation, day-to-day SRE work.** "Too small for a Python script, too tangled for a jq/awk pipeline." That gap.

10. Elvish / Murex / xonsh / Oils sh — the other newcomers

Beyond Nushell, there are several other shells rethinking the model.

Elvish

- **Written in Go.** Nice concurrency story.

- **Structured data** — lists and maps are first-class.

- **`use` modules.** Function libraries can be imported.

Murex

- **POSIX compatible plus a type system.** Bash scripts still run, but JSON and YAML are first-class.

- **Event-driven.** The `event` keyword hooks into shell events.

xonsh

- **Python + shell hybrid.** Python expressions and shell commands mix on the same line.

- **Shell command results inside `$(...)` are Python objects.** Great for data work.

Oils sh (formerly Oil)

- **Andy Chu's project.** Dual mode: POSIX compatible plus YSH, the new syntax.

- **Bash compatibility + data structures + better error messages.** Aims to be "a better bash you can move to."

These four are at 5k–20k GitHub stars each. **Nushell dominates the new-shell space, but each shows a different philosophy.** Elvish for Go users, Murex for people who can't drop POSIX, xonsh for data scientists, Oils for "better bash" people.

11. tmux vs Zellij — comparing multiplexers

Session, window, and pane management was **tmux**'s monopoly (2007–) for a long time. GNU screen (1987–) is alive but effectively in maintenance, dvtm appeals only to minimalists.

The 2026 challenger is **Zellij** (2020–, Rust).

tmux — the standard

- **Written in C.** Light and fast.

- **Installed almost everywhere** on Linux and macOS.

- **Prefix-key model.** Press something like `Ctrl-B`, then the next key.

- **Highly configurable.** `.tmux.conf` can rewrite almost everything.

- **TPM (Tmux Plugin Manager)** plus a real plugin ecosystem.

Config example:

~/.tmux.conf

set -g prefix C-a

unbind C-b

bind C-a send-prefix

set -g mouse on

set -g history-limit 10000

set -g base-index 1

set -g renumber-windows on

splits

bind | split-window -h -c "#{pane_current_path}"

bind - split-window -v -c "#{pane_current_path}"

pane navigation

bind h select-pane -L

bind j select-pane -D

bind k select-pane -U

bind l select-pane -R

status

set -g status-style 'bg=#1d2021 fg=#d4be98'

Zellij — the modern challenger

- **Written in Rust.**

- **Discoverable UI.** Keybinding hints always at the bottom of the screen — first-timers don't get lost.

- **YAML/KDL config** at `~/.config/zellij/config.kdl`.

- **WASM plugins.** Plugins are compiled to WASM from Rust, Go, or other languages.

- **Layouts.** Save common pane arrangements to a file.

- **Floating panels and tabs** — features tmux doesn't have.

Comparison matrix:

| Aspect | tmux | Zellij |

| --- | --- | --- |

| Maturity | Very high | Mid |

| Learning curve | Steep | Gentle |

| Default UX | Prefix keys | Discoverable hints |

| Config format | tmux DSL | KDL |

| Plugins | TPM | WASM |

| Memory | Very light | Light |

| Remote SSH | First-class | Workable |

| Installed everywhere | Yes | No |

**Pick tmux:** if you live in remote SSH, need it on every server, and have the keystrokes burned in.

**Pick Zellij:** if most work is local, you're starting fresh, or you don't want to memorize keys.

12. Starship — the universal prompt

The prompt layer. This market has been effectively unified by **Starship** (2019–, Matt Knox).

Why Starship wins:

- **Shell-agnostic.** bash, zsh, fish, nushell, elvish, xonsh — all supported.

- **Rust.** Fast enough that you don't need Powerlevel10k's instant prompt trick.

- **One TOML file.** `~/.config/starship.toml`.

- **120+ modules** — git, node, python, rust, docker, kubernetes, terraform, aws, gcp, azure, etc.

- **Custom modules** are easy to add.

Install:

install

curl -sS https://starship.rs/install.sh | sh

enable in your shell (one line in your shell rc)

bash: eval "$(starship init bash)"

zsh: eval "$(starship init zsh)"

fish: starship init fish | source

Config example:

~/.config/starship.toml

add_newline = true

format = """

$username\

$hostname\

$directory\

$git_branch\

$git_status\

$nodejs\

$python\

$rust\

$kubernetes\

$character"""

[character]

success_symbol = "[➜](bold green)"

error_symbol = "[➜](bold red)"

[directory]

truncation_length = 3

truncate_to_repo = true

[git_branch]

symbol = " "

format = "[$symbol$branch]($style) "

[kubernetes]

disabled = false

format = '[⛵ $context \($namespace\)](dimmed green) '

Other options:

- **oh-my-zsh** — zsh plugin framework. Prompt plus hundreds of plugins. Heavier than Starship. zsh-only.

- **oh-my-posh** — Supports PowerShell, zsh, bash. The closest competitor to Starship. Popular on Windows.

- **Powerlevel10k (p10k)** — zsh only. The most polished, fastest (instant prompt) zsh prompt. But the project has been in essentially maintenance mode since 2022, and a lot of people are migrating to Starship.

One-liner: **In 2026, if you're starting fresh, Starship is the answer. The zsh + oh-my-zsh + p10k combo is still valid but has no reason to be new.**

13. The Rust CLI series — bat / eza / zoxide / fd / ripgrep / fzf / atuin

The group of utilities that rewrote standard Unix tools in Rust. All over 10k stars on GitHub.

bat — a better `cat`

bat README.md

syntax highlighting + git diff markers + automatic pager

`alias cat=bat` is the usual move.

eza (formerly exa) — a better `ls`

eza -la --git --icons

eza -T --level=2 # tree view

After the original exa went unmaintained, eza forked to keep it alive. A similar alternative is `lsd`.

zoxide — a better `cd`

go in once normally

cd ~/work/yj-next-blog2

next time, anywhere

z next-blog2 # full name from anywhere

z blog2 # partial match

zi # fzf interactive mode

Learns the directories you visit and lets you jump by a fragment of the name. Once it's wired up, going back to `cd ../../../foo` is impossible.

fd — a better `find`

fd README # any file with README in the name

fd -e mdx # extension mdx

fd -t f --changed-within 1d # files modified in last day

Translates `find`'s arcane syntax (`-name '*foo*' -type f`) into something humans can type.

ripgrep (rg) — a better `grep`

rg "fn main" # recursive grep from cwd

rg -t rust "TODO" # only Rust files

rg -i -A 3 "error" # case-insensitive + 3 lines after

Powers the GitHub code search engine. Respects `.gitignore` automatically and uses multi-threading plus SIMD — typically an order of magnitude faster than `grep`.

fzf — fuzzy finder

pick a file

vim "$(fzf)"

Ctrl-R for shell history

Ctrl-T for files in cwd

Alt-C for cd

pipe anything into fzf

ls | fzf | xargs cat

After installation, enabling the shell integration immediately rewires `Ctrl-R` (history), `Ctrl-T` (files), and `Alt-C` (cd). Hard to live without after a week.

atuin — a better shell history

after install

atuin init zsh | source

atuin import auto

Ctrl-R is now the atuin UI

search by exit code, duration, directory, session, host

optional sync (can self-host)

Much more powerful search than the default `.zsh_history`. If you want machines to share history, sync to Atuin's cloud or a self-hosted instance.

Install everything (Homebrew flavor):

brew install bat eza zoxide fd ripgrep fzf atuin starship

Wire it all into zsh:

at the end of ~/.zshrc

eval "$(starship init zsh)"

eval "$(zoxide init zsh --cmd cd)"

eval "$(atuin init zsh)"

source <(fzf --zsh)

alias ls='eza --icons --git'

alias cat='bat --plain'

alias find='fd'

alias grep='rg'

One-liner: **Install these seven tools and your shell becomes a different shell.** The first week is awkward; after that you forget some of the GNU coreutils names.

14. Korea and Japan — Toss dotfiles, Mercari shell setups

Korea — the Toss / Naver / Kakao picture

Look inside dotfiles repos from senior engineers at modern Korean startups like Toss (Viva Republica) and a pattern shows up.

A typical Toss-senior macOS setup:

- **Emulator:** Ghostty (rising since 2025) or iTerm2

- **Shell:** zsh + oh-my-zsh, or zsh + zinit (lighter)

- **Prompt:** Starship (lots of refugees from Powerlevel10k)

- **Multiplexer:** tmux

- **Utilities:** ripgrep + fzf + zoxide + bat + eza + atuin

Backend work at Naver leans differently — Linux + bash + tmux + ripgrep + fzf, Starship occasionally. **"Only install what's on every server"** is more or less the rule for production work.

Kakao varies a lot by silo. AI teams experiment with zsh + Starship + Nushell, conservative backend teams stay on bash + tmux.

Korean OSS: global tools like `karpathy`'s scripts and `gleitz/howdoi` show up in Korean dotfiles. Beyond that, mostly the same trends as anywhere else.

Japan — Mercari, LINE, CyberAgent

Mercari's SRE team publishes an exemplary dotfiles repo that doubles as a reference.

The Mercari-style macOS setup:

- **Emulator:** iTerm2, with a migration toward Wezterm. Ghostty is appearing from late 2025.

- **Shell:** zsh + zinit + chezmoi for dotfiles management

- **Multiplexer:** tmux, always attached to a remote EC2 instance

- **Prompt:** Starship

- **Utilities:** ripgrep + fd + fzf + bat + eza + atuin + direnv

- **Extras:** kubectx + kubens for k8s context switching, plus `pet` for snippet management (a tool from a Japanese developer)

LINE Yahoo, with massive infrastructure, tends to be conservative: Linux + bash + tmux. Some Nushell experimentation inside SRE.

CyberAgent's AI Lab is the most progressive: Warp with AI heavily, Nushell for data work, Zellij in trial.

Japanese OSS worth knowing:

- **pet** — by knqyf263. Snippet / scratch manager. Combine with fzf for searchable shell snippets.

- **peco** — fzf-style interactive filter, built by a Japanese developer. Very common in older Japanese dotfiles.

- **ghq** — by motemen. Manages GitHub repos in a structured directory tree.

One-liner: **Korean and Japanese senior engineer dotfiles are fast adopters of the global stack. Japan blends in more domestic OSS (pet, peco, ghq).**

15. Who should pick what — the scenario matrix

The final chapter. A matrix to help you decide.

macOS — new user

| Layer | Pick | Alternative |

| --- | --- | --- |

| Emulator | **Ghostty** | Wezterm |

| Shell | zsh | fish 4 |

| Multiplexer | **tmux** | Zellij |

| Prompt | **Starship** | p10k |

| Utilities | bat + eza + zoxide + fd + rg + fzf + atuin | — |

macOS — AI / design forward

| Layer | Pick | Alternative |

| --- | --- | --- |

| Emulator | **Warp** | Ghostty |

| Shell | (Warp built-in) | — |

| Prompt | (Warp built-in) | Starship |

Linux desktop

| Layer | Pick | Alternative |

| --- | --- | --- |

| Emulator | **Ghostty** | Wezterm, Alacritty, Kitty |

| Shell | zsh or fish 4 | bash |

| Multiplexer | tmux | Zellij |

| Prompt | Starship | — |

Linux server over SSH

| Layer | Pick | Note |

| --- | --- | --- |

| Shell | **bash** | Installed everywhere |

| Multiplexer | **tmux** | Installed almost everywhere |

| Utilities | apt-get just ripgrep / fd / bat | Too much breaks ops hygiene |

Windows

| Layer | Pick | Alternative |

| --- | --- | --- |

| Emulator | **Windows Terminal** | Wezterm, Tabby |

| Shell | PowerShell 7 | WSL + bash/zsh |

| Prompt | oh-my-posh | Starship |

Speed-first

- **Emulator:** Alacritty or Ghostty

- **Shell:** zsh (minimal config) or fish 4

- **Prompt:** Starship (or even plain PS1)

- **Avoid:** Electron-based terminals (Hyper, Tabby) for input lag.

Design-first

- **Emulator:** Ghostty (native GUI), Warp (the most polished UI)

- **Fonts:** JetBrains Mono / Fira Code / IBM Plex Mono / Berkeley Mono (paid)

- **Themes:** Gruvbox / Catppuccin / Tokyo Night / Rose Pine

Epilogue — the terminal is interesting again

Ask "what terminal do you use" in 2014 and you got two answers — iTerm2 or GNOME Terminal. The shell was bash or zsh. The multiplexer was tmux. The prompt was some oh-my-zsh theme.

Ask the same question in 2026 and there are five answers per layer. Ghostty, Wezterm, Alacritty, Kitty, Warp. zsh, fish 4, Nushell, bash, Elvish. tmux, Zellij. Starship, p10k, oh-my-posh.

Three forces produced that diversity:

1. **Rust rewrites.** The wave of rewriting systems software in Rust reached shells, utilities, and multiplexers.

2. **Solo full-time projects returning.** Mitchell Hashimoto's Ghostty is the cleanest example — two years full-time, one person, shipping system software at this quality.

3. **AI integration.** Warp leans hardest, but tools like Cursor, Claude Code, and Cline are blurring the line between shell and terminal.

Hopefully this post made you re-examine your setup once. You don't need to swap everything. **One emulator change, one prompt change, plus installing ripgrep, fzf, zoxide, and atuin** is enough to change how daily shell work feels.

14-step checklist

1. Switch the emulator to one of Ghostty, Wezterm, or Warp.

2. Clean up your shell rc file and install Starship.

3. Migrate from Powerlevel10k to Starship (skip if you already love p10k).

4. Install ripgrep and forget `grep`.

5. Install fd and forget `find`.

6. Install fzf and enable shell integration (Ctrl-R changes meaning).

7. Install zoxide and alias `cd` to it.

8. Install bat and alias `cat` to it.

9. Install eza and alias `ls` to it.

10. Install atuin (self-host the sync server if needed).

11. Pick one multiplexer flow in tmux or Zellij.

12. Create a dotfiles repo and manage it with chezmoi or a bare git repo.

13. Switch fonts to a Nerd Font variant (so Starship icons render).

14. Install the same setup again in WSL or a container — work feels identical everywhere.

10 anti-patterns

1. Installing Hyper fresh today. It's slow; better options exist.

2. Enabling every oh-my-zsh plugin. Shell startup pays for it.

3. Building a 1000-line tmux config. You won't read it six months later.

4. Starting fresh with p10k. Go to Starship.

5. Running Nushell in server automation scripts. 0.x risk.

6. Using Warp without thinking about the cloud dependency cost over years.

7. Using zsh, bash, and fish simultaneously as the main shell. Three rc files, pick one.

8. Setting up new machines without dotfiles. Turns a 30-minute job into 3 hours.

9. Installing atuin without reviewing sync. Your history may end up in the cloud.

10. Mandating Ghostty company-wide the week it shipped. Wait a year and validate on your own machine first.

Next-post teasers

- "Dotfiles management — chezmoi vs Nix vs git bare repo vs Stow compared."

- "Nerd Fonts and programming fonts 2026 — JetBrains Mono vs Berkeley Mono vs MonoLisa vs Comic Code."

- "Mastering tmux in 30 minutes — the minimal config for new users."

References

- [Ghostty official site](https://ghostty.org/)

- [Ghostty GitHub](https://github.com/ghostty-org/ghostty)

- [Mitchell Hashimoto on Ghostty 1.0](https://mitchellh.com/writing/ghostty-1-0-reflection)

- [Wezterm official site](https://wezfurlong.org/wezterm/)

- [Wezterm GitHub](https://github.com/wez/wezterm)

- [Alacritty official site](https://alacritty.org/)

- [Alacritty GitHub](https://github.com/alacritty/alacritty)

- [Kitty official site](https://sw.kovidgoyal.net/kitty/)

- [Kitty GitHub](https://github.com/kovidgoyal/kitty)

- [Warp official](https://www.warp.dev/)

- [iTerm2 official](https://iterm2.com/)

- [Windows Terminal GitHub](https://github.com/microsoft/terminal)

- [Tabby official](https://tabby.sh/)

- [Hyper official](https://hyper.is/)

- [Fish 4 release notes](https://fishshell.com/release_notes.html)

- [Fish official](https://fishshell.com/)

- [Nushell official](https://www.nushell.sh/)

- [Nushell GitHub](https://github.com/nushell/nushell)

- [Elvish official](https://elv.sh/)

- [Murex official](https://murex.rocks/)

- [xonsh official](https://xon.sh/)

- [Oils sh official](https://www.oilshell.org/)

- [tmux GitHub](https://github.com/tmux/tmux)

- [Zellij official](https://zellij.dev/)

- [Zellij GitHub](https://github.com/zellij-org/zellij)

- [Starship official](https://starship.rs/)

- [oh-my-zsh](https://ohmyz.sh/)

- [oh-my-posh](https://ohmyposh.dev/)

- [Powerlevel10k GitHub](https://github.com/romkatv/powerlevel10k)

- [bat GitHub](https://github.com/sharkdp/bat)

- [eza official](https://eza.rocks/)

- [zoxide GitHub](https://github.com/ajeetdsouza/zoxide)

- [fd GitHub](https://github.com/sharkdp/fd)

- [ripgrep GitHub](https://github.com/BurntSushi/ripgrep)

- [fzf GitHub](https://github.com/junegunn/fzf)

- [atuin official](https://atuin.sh/)

- [chezmoi official](https://www.chezmoi.io/)

- [pet (snippet manager)](https://github.com/knqyf263/pet)

- [peco (fzf-like)](https://github.com/peco/peco)

- [ghq](https://github.com/x-motemen/ghq)

- [Mercari Engineering blog](https://engineering.mercari.com/)

현재 단락 (1/475)

For ten years the terminal was the boring tool. The xterm model from the 1990s plus iTerm2 (2008), G...

작성 글자: 0원문 글자: 27,174작성 단락: 0/475