skills/ibrahimhka/configuring-tmux/SKILL.md
Configures tmux status bars, installs frameworks and plugins, adds widgets and scripts, and sets up multiple status bars. Use when working with oh-my-tmux, Catppuccin, or tmux-powerline; adding weather/finance/clock/news widgets; troubleshooting why bar changes aren't appearing; or setting up tmux on a new machine.
npx skillsauth add aiskillstore/marketplace configuring-tmuxInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Ask the user which framework they want before touching any config.
cd ~ && git clone https://github.com/gpakosz/.tmux.git
ln -sf .tmux/.tmux.conf .tmux.conf
cp .tmux/.tmux.conf.local .tmux.conf.local
tmux_conf_theme_* variables in ~/.tmux.conf.local — never edit ~/.tmux.confset -g status-right — use status-format[] for extra barsset -g @plugin 'catppuccin/tmux#v2.1.3'
set -g @catppuccin_flavor 'mocha'
set -g @catppuccin_status_modules_right "application session date_time"
#() calls via status-right-appendstatus-format[] directlygit clone https://github.com/erikw/tmux-powerline.git ~/.config/tmux-powerline
set-option -g status-left "#(~/.config/tmux-powerline/powerline.sh left)"
set-option -g status-right "#(~/.config/tmux-powerline/powerline.sh right)"
~/.config/tmux-powerline/segments/Ask for: repo URL, install method, where customizations live, how it handles status content. Then apply the patterns below.
# Install TPM
git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
# Essential plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-cpu' # #{cpu_percentage} #{ram_percentage}
set -g @plugin 'tmux-plugins/tmux-net-speed' # #{net_speed_up} #{net_speed_down}
set -g @continuum-restore 'on'
set -g @continuum-save-interval '10'
set -g @resurrect-capture-pane-contents 'on'
run '~/.config/tmux/plugins/tpm/tpm'
# Install: prefix + I
tmux 3.2+ supports 2–5 bars. The correct syntax is status-format[] array — not status2-right (invalid, will error).
set -g status 3
# Bar 1: widgets row
set -g status-format[1] "#[bg=#1a1b26,fg=#c0caf5,align=right]#(~/.config/tmux/scripts/weather.sh) #(~/.config/tmux/scripts/finance.sh) #[fg=#1e3a8a,bg=#b8970d,bold]PT #(TZ=America/Los_Angeles date +%H:%M) EST #(TZ=America/New_York date +%H:%M)#[default]"
# Bar 2: news ticker
set -g status-format[2] "#[bg=#16161e,fg=#e0af68,align=right] #(~/.config/tmux/scripts/news-ticker.sh)"
With status-position top and status 3:
Bar 0 ← framework owns (oh-my-tmux / Catppuccin)
Bar 1 ← status-format[1] — configure freely
Bar 2 ← status-format[2] — configure freely
──────────────────────────────
Terminal panes
Verify: tmux show-options -g status (must equal your total bar count)
Scripts in #() must emit one line. Multi-line output corrupts the bar.
#!/bin/bash
CACHE="/tmp/my-widget-cache"
CACHE_AGE=300
if [ -f "$CACHE" ]; then
age=$(( $(date +%s) - $(stat -c %Y "$CACHE") ))
[ "$age" -lt "$CACHE_AGE" ] && cat "$CACHE" && exit 0
fi
python3 << 'PYEOF' | tee "$CACHE"
# fetch and print ONE line
PYEOF
# In status-format[]: use %H:%M directly
"PT #(TZ=America/Los_Angeles date +%H:%M) EST #(TZ=America/New_York date +%H:%M)"
# In oh-my-tmux tmux_conf_theme_status_right: escape % as %%
"PT #(TZ=America/Los_Angeles date +%%H:%%M)"
#!/bin/bash
CACHE="/tmp/news-cache" # one headline per line, refreshed by background fetch
[ ! -s "$CACHE" ] && echo "Loading..." && exit 0
count=$(wc -l < "$CACHE")
idx=$(( ($(date +%s) / 20) % count )) # rotates every 20s
sed -n "$((idx + 1))p" "$CACHE"
Use -A "Mozilla/5.0" — Yahoo blocks default curl UA:
curl -sf --max-time 4 -A "Mozilla/5.0 (X11; Linux x86_64)" \
"https://query1.finance.yahoo.com/v8/finance/chart/BTC-USD?interval=1d&range=1d"
# ~/.tmux.conf.local
tmux_conf_theme_status_right="#{prefix}#{mouse} 🌿 #[fg=#000,bg=#2ea043,bold]#(git -C #{pane_current_path} symbolic-ref --short HEAD 2>/dev/null)#[default] #[fg=#fff,bg=#cc1111,bold]⚡#{cpu_percentage}/💾#{ram_percentage}#[default]"
tmux_conf_theme_status_right_fg="#000000,#000000,#000000"
tmux_conf_theme_status_right_bg="#2ea043,#1155cc,#2ea043"
tmux_conf_theme_status_right_length=300
| Mistake | Fix |
|---------|-----|
| set -g status-right overridden | Use tmux_conf_theme_status_right= (oh-my-tmux) or framework equivalent |
| status2-right → invalid option | Use set -g status-format[1] "..." |
| New bars not visible | tmux show-options -g status must equal bar count |
| Bar appears blank | Script must output exactly one non-empty line |
| Script works in terminal, blank in bar | tmux #() has minimal PATH — use ~/ or absolute paths |
| %% vs % confusion | %% in tmux_conf_theme_*; %H:%M directly in status-format[] |
tmux source-file ~/.tmux.conf # full reload (re-applies framework theming)
tmux source-file ~/.tmux.conf.local # local overrides only
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.