TL;DR

  • Git ์ €์žฅ์†Œ ์„ค์น˜์™€ *.tmux ์‹คํ–‰์„ ๋‹ด๋‹นํ•˜๋Š” TPMยทtpack์˜ ๊ณตํ†ต ๊ตฌ์กฐ
  • ์„ค์ • ํŒŒ์ผ๊ณผ ๋‹จ์ถ•ํ‚ค ์ค‘์‹ฌ์˜ TPM, TUI ๊ฒ€์ƒ‰ยท๊ด€๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•œ tpack
  • ์ €์žฅ์†Œ ๋ฐฐํฌ์™€ ๊ฒ€์ƒ‰ ๋ชฉ๋ก ๋“ฑ๋ก์˜ ๋ถ„๋ฆฌ, tpack ์ „ํ™˜ ์‹œ ์„ค์น˜ ๊ฒฝ๋กœ ํ™•์ธ ํ•„์š”

AI-assisted

1. ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งค๋‹ˆ์ €์˜ ์—ญํ• ๊ณผ ์ฐจ์ด

tmux์— ํ…Œ๋งˆ๋‚˜ ํ‚ค ๋ฐ”์ธ๋”ฉ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›๊ณ  ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งค๋‹ˆ์ €๋Š” ์„ค์ • ํŒŒ์ผ์— ์ ํžŒ ์ €์žฅ์†Œ๋ฅผ ์ฝ์–ด ์„ค์น˜ยท์—…๋ฐ์ดํŠธยท๋กœ๋“œ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.

TPM์€ shell script๋กœ ๊ตฌํ˜„ํ•œ ๋งค๋‹ˆ์ €๋‹ค. tpack์€ TPM์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์–ธ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜๋ฉฐ Go๋กœ ๊ตฌํ˜„ํ•œ CLI์™€ TUI๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋น„๊ต ํ•ญ๋ชฉTPMtpack
ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์–ธ์„ค์ • ํŒŒ์ผ์˜ set -g @plugin๊ฐ™์€ ๋ฌธ๋ฒ• ์ง€์›
๊ด€๋ฆฌ ํ™”๋ฉด๋‹จ์ถ•ํ‚ค์™€ shell script๋‹จ์ถ•ํ‚ค, CLI, TUI
๊ฒ€์ƒ‰๋‚ด์žฅ ๊ฒ€์ƒ‰ ํ™”๋ฉด ์—†์Œregistry ๊ธฐ๋ฐ˜ TUI ๊ฒ€์ƒ‰
์ €์žฅ์†Œ ์ฃผ์†Œ๋กœ ์„ค์น˜๊ฒ€์ƒ‰ ๋ชฉ๋ก ๋“ฑ๋ก ๋ถˆํ•„์š”๊ฒ€์ƒ‰ ๋ชฉ๋ก ๋“ฑ๋ก ๋ถˆํ•„์š”
์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„๋ณดํ†ต ์ €์žฅ์†Œ์˜ ๋งˆ์ง€๋ง‰ ์ด๋ฆ„๊ธฐ๋ณธ์ ์œผ๋กœ ์ €์žฅ์†Œ ์ด๋ฆ„๊ณผ ์‹๋ณ„์šฉ ํ•ด์‹œ ์กฐํ•ฉ

ํ™•์ธ ๊ธฐ์ค€: ๊ณต์‹ ์ €์žฅ์†Œ์˜ ๊ตฌํ˜„

  • 2026-09-28์— ํ™•์ธํ•œ TPM e261deb, tpack 1f8b694 ๊ธฐ์ค€.
  • ์„ค์น˜ ๊ฒฝ๋กœ์™€ ์„ธ๋ถ€ ๋ช…๋ น ๋™์ž‘์€ ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ.

2. ์‚ฌ์šฉ์ž๊ฐ€ ์„ ์–ธํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •

์˜ˆ์‹œ๋Š” tmux์™€ Git์ด ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ~/.tmux.conf๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. TPM๊ณผ standalone tpack ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค.

2.1. TPM

  1. ๋งค๋‹ˆ์ € ์„ค์น˜: TPM ์ €์žฅ์†Œ๋ฅผ ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค.
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
  1. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์–ธ: ~/.tmux.conf์— ์„ค์น˜ํ•  ์ €์žฅ์†Œ๋ฅผ ์ ๊ณ  ํŒŒ์ผ ๋งˆ์ง€๋ง‰์—์„œ TPM์„ ์‹คํ–‰ํ•œ๋‹ค.
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
 
# ์„ค์ • ํŒŒ์ผ ๋งˆ์ง€๋ง‰์— ๋ฐฐ์น˜
run '~/.tmux/plugins/tpm/tpm'
  1. ์„ค์ • ์ ์šฉ: ์‹คํ–‰ ์ค‘์ธ tmux ์„ธ์…˜์—์„œ ์„ค์ • ํŒŒ์ผ์„ ๋‹ค์‹œ ์ฝ๋Š”๋‹ค.
tmux source-file ~/.tmux.conf
  1. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜: prefix๋ฅผ ๋ˆ„๋ฅธ ๋’ค ๋Œ€๋ฌธ์ž I๋ฅผ ๋ˆ„๋ฅธ๋‹ค. TPM์€ ์„ ์–ธํ•œ ์ €์žฅ์†Œ๋ฅผ cloneํ•˜๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋กœ๋“œํ•œ๋‹ค.

prefix: tmux ๋‹จ์ถ•ํ‚ค์˜ ์‹œ์ž‘ ํ‚ค

  • ๊ธฐ๋ณธ๊ฐ’์€ Ctrl-b์ด๋ฉฐ ์„ค์ •์—์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.
  • prefix + I๋Š” prefix๋ฅผ ๋ˆ„๋ฅด๊ณ  ์†์„ ๋—€ ๋’ค Shift-i๋ฅผ ๋ˆ„๋ฅด๋Š” ์ˆœ์„œ.
  • XDG ๊ฒฝ๋กœ๋ฅผ ์“ฐ๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์˜ˆ์‹œ์˜ ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์‹ค์ œ tmux.conf ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝ.

2.2. tpack

  1. ๋งค๋‹ˆ์ € ์„ค์น˜: macOS์˜ Homebrew ํ™˜๊ฒฝ์—์„œ๋Š” ๊ณต์‹ tap์œผ๋กœ ์„ค์น˜ํ•œ๋‹ค.
brew install tmuxpack/tpack/tpack
  1. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์–ธ: ~/.tmux.conf์— ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ €์žฅ์†Œ๋ฅผ ์ ๊ณ  ๋งˆ์ง€๋ง‰์— tpack์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
set -g @plugin 'tmux-plugins/tmux-sensible'
 
# ์„ค์ • ํŒŒ์ผ ๋งˆ์ง€๋ง‰์— ๋ฐฐ์น˜
run 'tpack init'
  1. ์„ค์ • ์ ์šฉ๊ณผ ์„ค์น˜: ์„ค์ •์„ reloadํ•œ ๋’ค prefix + I๋กœ ์„ค์น˜ ํ™”๋ฉด์„ ์—ฐ๋‹ค.
tmux source-file ~/.tmux.conf

CLI๋กœ ์„ค์น˜ํ•  ๋•Œ๋Š” ์•„๋ž˜ ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

tpack install
tmux source-file ~/.tmux.conf
  • ์„ค์น˜: ์ธ์ž ์—†๋Š” tpack install์€ ์„ค์ • ํŒŒ์ผ์— ์„ ์–ธ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค.
  • ๋กœ๋“œ: ํ˜„์žฌ ๊ตฌํ˜„์˜ install ๋ช…๋ น์€ ๊ธฐ๋ณธ ์‹คํ–‰ ์‹œ ์„ค์ •์„ ์ž๋™ reloadํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋’ค์˜ source-file์ด tpack init์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋กœ๋“œํ•œ๋‹ค.
  • ๊ฒ€์ƒ‰: prefix + T๋กœ TUI๋ฅผ ์—ด๊ณ  ๊ฒ€์ƒ‰ ํ™”๋ฉด์—์„œ registry์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ฐพ๋Š”๋‹ค.

2.3. ์—…๋ฐ์ดํŠธ์™€ ์ •๋ฆฌ

์ž‘์—…TPMtpack
์„ ์–ธํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜prefix + Iprefix + I
ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธprefix + Uprefix + U
์„ ์–ธ์—์„œ ๋น ์ง„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ •๋ฆฌprefix + Alt-uprefix + Alt-u
๊ด€๋ฆฌ TUI ์—ด๊ธฐ๊ธฐ๋ณธ ์ œ๊ณต ์—†์Œprefix + T

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ •๋ฆฌํ•  ๋•Œ๋Š” ์„ค์ •์˜ ์„ ์–ธ์„ ์ง€์šฐ๊ฑฐ๋‚˜ ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ ๋’ค ์ •๋ฆฌ ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

์ œ๊ฑฐ ๋ฒ”์œ„: ํŒŒ์ผ๊ณผ ์‹คํ–‰ ์ค‘์ธ ์„ค์ •

  • ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ด๋„ ์ด๋ฏธ ๋“ฑ๋กํ•œ ํ‚ค ๋ฐ”์ธ๋”ฉ์ด๋‚˜ ์˜ต์…˜์ด ๋‚จ์„ ์ˆ˜ ์žˆ์Œ.
  • ์‹คํ–‰ ์ค‘์ธ tmux์˜ ์„ค์ •์„ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ œ๊ณตํ•˜๋Š” ํ•ด์ œ ๋ฐฉ๋ฒ•์ด๋‚˜ ๊ด€๋ จ ์„ค์ • ์žฌ์ ์šฉ ํ•„์š”.

3. ์„ ์–ธ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹คํ–‰๊นŒ์ง€

์„ค์น˜์™€ ๋กœ๋“œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋‹จ๊ณ„๋‹ค. ์„ค์น˜๋Š” Git ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ์— ์ค€๋น„ํ•˜๊ณ  ๋กœ๋“œ๋Š” ๊ทธ ์•ˆ์˜ ์ง„์ž…์ ์„ ์‹คํ–‰ํ•œ๋‹ค.

flowchart TD
    A["tmux.conf์˜ @plugin ์„ ์–ธ"] --> B["๋งค๋‹ˆ์ €๊ฐ€ ์ €์žฅ์†Œ ๋ชฉ๋ก ์ˆ˜์ง‘"]
    B -->|์„ค์น˜ ์š”์ฒญ| C["Git clone"]
    C --> D["๋กœ์ปฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ"]
    B -->|๋กœ๋“œ ์š”์ฒญ| E["๋กœ์ปฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ *.tmux ์‹คํ–‰"]
    D -.->|์ €์žฅ๋œ ์ง„์ž…์ | E
    E --> F["tmux ์˜ต์…˜ยทํ‚ค ๋ฐ”์ธ๋”ฉ ๋“ฑ๋ก"]
    F --> G["ํ‚ค ์ž…๋ ฅ ๋“ฑ์œผ๋กœ ๊ธฐ๋Šฅ ์‹คํ–‰"]
  • ์ „๋‹ฌํ•˜๋Š” ๊ฐ’: ์„ ์–ธ์—๋Š” GitHub์˜ OWNER/REPO ์•ฝ์‹ ์ฃผ์†Œ๋‚˜ ์ง€์›ํ•˜๋Š” Git ์ €์žฅ์†Œ URL์„ ์ ๋Š”๋‹ค.
  • ์„ค์น˜ ๊ฒฐ๊ณผ: ๋งค๋‹ˆ์ €๊ฐ€ ๋กœ์ปฌ์— ์ €์žฅ์†Œ๋ฅผ cloneํ•œ๋‹ค. ์ดํ›„ ์—…๋ฐ์ดํŠธ์—์„œ๋Š” ์„ค์น˜ํ•œ ์ €์žฅ์†Œ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.
  • ์‹คํ–‰ ๊ฒฐ๊ณผ: ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ง„์ž…์ ์ด tmux ๋ช…๋ น์œผ๋กœ ์˜ต์…˜๊ณผ ํ‚ค ๋ฐ”์ธ๋”ฉ์„ ์„ค์ •ํ•˜๊ณ  ํ•„์š”ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

์„ ์–ธ ์ˆ˜์ง‘: ์„ค์ • ํŒŒ์ผ์„ ์ฝ๋Š” ๋งค๋‹ˆ์ €

  • TPM์˜ ๋ชฉ๋ก ์ˆ˜์ง‘ ํ•จ์ˆ˜๋Š” ์„ค์ • ํŒŒ์ผ์—์„œ @plugin ์„ ์–ธ ์ค„์„ ์ถ”์ถœํ•จ.
  • tpack์˜ GatherPlugins๋„ ์„ค์ • ํŒŒ์ผ๊ณผ ๋ถˆ๋Ÿฌ์˜จ ์„ค์ •์˜ ์„ ์–ธ์„ ์ˆ˜์ง‘ํ•จ.
  • ์—ฌ๋Ÿฌ set -g @plugin ์ค„์„ ์„ค์น˜ ๋ชฉ๋ก์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฒƒ์€ ๋งค๋‹ˆ์ €์˜ ๋™์ž‘์ด๋ฉฐ tmux์˜ ์ผ๋ฐ˜ ์˜ต์…˜ ๊ฐ’ ํ•˜๋‚˜์— ๋ชฉ๋ก์„ ๋ˆ„์ ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ตฌ๋ถ„.

TPM์˜ ๋กœ๋”์™€ tpack์˜ ๋กœ๋”๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฃจํŠธ์˜ *.tmux ํŒŒ์ผ์„ ์ฐพ์•„ ์‹คํ–‰ํ•œ๋‹ค. ์ง„์ž…์ ์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด ๋ชจ๋‘ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋ณด์กฐ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณ„๋„ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‘๊ณ  ์ง„์ž…์ ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ตฌ์„ฑ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.


4. ์ œ์ž‘์ž๊ฐ€ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ฐฐํฌํ•˜๊ธฐ

TPM์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์„ฑ ๊ทœ์•ฝ์— ๋งž์ถฐ Git ์ €์žฅ์†Œ์™€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ง„์ž…์ ์„ ์ค€๋น„ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด hello.tmux์— ๋‹ค์Œ ๋‚ด์šฉ์„ ์ €์žฅํ•œ๋‹ค.

#!/usr/bin/env bash
 
tmux bind-key H display-message 'Hello from plugin'

์ €์žฅ์†Œ ๋ฃจํŠธ์—์„œ ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  Git์— ๊ธฐ๋กํ•œ๋‹ค.

chmod +x hello.tmux
git add hello.tmux
git commit -m 'Add tmux plugin entry point'
  1. ๋™์ž‘ ํ™•์ธ: tmux ์„ธ์…˜์—์„œ ์ง„์ž…์ ์„ ์‹คํ–‰ํ•˜๊ณ  prefix + H๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  2. ์‚ฌ์šฉ๋ฒ• ์ž‘์„ฑ: README์— ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์–ธ, ํ‚ค ๋ฐ”์ธ๋”ฉ, ์ง€์› ํ™˜๊ฒฝ๊ณผ ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ์ ๋Š”๋‹ค.
  3. ์ €์žฅ์†Œ ๋ฐฐํฌ: ์›๊ฒฉ Git ์ €์žฅ์†Œ์— pushํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ฃผ์†Œ๋ฅผ ์•ˆ๋‚ดํ•œ๋‹ค.

์ง์ ‘ ์‹คํ–‰ํ•ด ํ™•์ธํ•˜๋Š” ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

./hello.tmux
  • ๋งค๋‹ˆ์ €์˜ ์ฑ…์ž„: ์ €์žฅ์†Œ ๋‹ค์šด๋กœ๋“œยท์—…๋ฐ์ดํŠธ์™€ ์ง„์ž…์  ์‹คํ–‰.
  • ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ฑ…์ž„: ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ณผ ํ•„์š”ํ•œ ์™ธ๋ถ€ ๋„๊ตฌ์˜ ํ™•์ธยทํ˜ธ์ถœ.
  • ์™ธ๋ถ€ ์˜์กด์„ฑ: fzf, jq๋‚˜ ๋ณ„๋„ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ œ์ž‘์ž๊ฐ€ ์„ค์น˜ ์ ˆ์ฐจ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ README์—์„œ ๋ณ„๋„ ์„ค์น˜๋ฅผ ์•ˆ๋‚ดํ•œ๋‹ค.

์ง„์ž…์ : ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์Šคํฌ๋ฆฝํŠธ

  • ์œ„ ์˜ˆ์‹œ์˜ .tmux ํŒŒ์ผ์€ shebang์œผ๋กœ Bash๋ฅผ ์ง€์ •ํ•˜๊ณ  tmux ๋ช…๋ น์„ ์‹คํ–‰ํ•จ.
  • ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ €์žฅ์†Œ์™€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ง„์ž…์ ์„ ์ค€๋น„ํ•˜๋ฉด ๊ฒ€์ƒ‰ ๋ชฉ๋ก ์Šน์ธ ์—†์ด ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ด ์„ค์น˜ ๊ฐ€๋Šฅ.
  • ๋งค๋‹ˆ์ €๊ฐ€ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ์ž๋™ ์„ค์น˜ํ•ด ์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹˜.

5. ๋ฐฐํฌํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฒ€์ƒ‰ ๋ชฉ๋ก์— ๋“ฑ๋กํ•˜๊ธฐ

์ €์žฅ์†Œ๋ฅผ ๋ฐฐํฌํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ด ์„ค์น˜ํ•œ๋‹ค. ๊ฒ€์ƒ‰ ๋ชฉ๋ก ๋“ฑ๋ก์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ฐœ๊ฒฌํ•˜๋„๋ก ์ด๋ฆ„ยท์„ค๋ช…ยท์ฃผ์†Œ๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๋Š” ์ ˆ์ฐจ๋‹ค.

๊ตฌ๋ถ„TPMtpack
์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•œ ์„ค์น˜์ค‘์•™ ๋“ฑ๋ก์ด๋‚˜ ์Šน์ธ ๋ถˆํ•„์š”์ค‘์•™ ๋“ฑ๋ก์ด๋‚˜ ์Šน์ธ ๋ถˆํ•„์š”
๊ฒ€์ƒ‰ ๋ชฉ๋ก์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ถ”์ฒœ ๋ฌธ์„œ ๋“ฑ์„ ๋ณ„๋„๋กœ ์ด์šฉTUI๊ฐ€ plugins-registry์˜ ๋ชฉ๋ก ์‚ฌ์šฉ
๋ชฉ๋ก์— ์ œ์•ˆ๊ฐ ์ถ”์ฒœ ๋ชฉ๋ก์˜ ๊ธฐ์—ฌ ๊ทœ์น™์— ๋”ฐ๋ผ ์ œ์•ˆtmuxpack/plugins-registry์— PR ์ œ์ถœ
๋ชฉ๋ก ๋ฐ˜์˜ ๊ฒฐ์ •๋ชฉ๋ก ๊ด€๋ฆฌ์žregistry maintainer

5.1. tpack registry์˜ ๋“ฑ๋ก ์ ˆ์ฐจ

tpack registry ๊ธฐ์—ฌ ์•ˆ๋‚ด๋Š” ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ์ œ์‹œํ•œ๋‹ค.

  1. Fork: registry ์ €์žฅ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ณ„์ •์œผ๋กœ forkํ•œ๋‹ค.
  2. ํ•ญ๋ชฉ ์ถ”๊ฐ€: plugins/utility.yml์ฒ˜๋Ÿผ ์•Œ๋งž์€ ๋ถ„๋ฅ˜ ํŒŒ์ผ์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  3. PR ์ œ์ถœ: ์›๋ณธ registry ์ €์žฅ์†Œ๋กœ ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•œ๋‹ค.
  4. ๊ฒ€์ฆ๊ณผ ๋ฐ˜์˜: CI๊ฐ€ ํ˜•์‹ยท์ €์žฅ์†Œ ์กด์žฌ ์—ฌ๋ถ€ยท์ค‘๋ณต์„ ๊ฒ€์‚ฌํ•˜๊ณ  maintainer๊ฐ€ ๊ฒ€ํ† ํ•ด mergeํ•œ๋‹ค.

์•„๋ž˜๋Š” GitHub ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” YAML ํ˜•์‹์ด๋‹ค. your-username/your-plugin์€ ์‹ค์ œ ๊ณต๊ฐœ ์ €์žฅ์†Œ ์ฃผ์†Œ๋กœ ๋ฐ”๊พผ๋‹ค.

- repo: your-username/your-plugin
  description: Show a greeting in the tmux status line
  author: your-username

๋“ฑ๋ก ํ•„๋“œ: registry์˜ ์š”๊ตฌ์‚ฌํ•ญ

  • repo: ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐœ ์ €์žฅ์†Œ์˜ user/repo ํ˜•์‹.
  • description: 10~200์ž ์„ค๋ช….
  • author: ์ €์žฅ์†Œ ํ˜ธ์ŠคํŠธ์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„.
  • host: GitHub ์™ธ ํ˜ธ์ŠคํŠธ๋ผ๋ฉด gitlab.com ๋“ฑ ๋„๋ฉ”์ธ ์ถ”๊ฐ€.
  • stars: CI๊ฐ€ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Œ.

5.2. ๊ฒ€์ƒ‰ ํ™”๋ฉด์ด ๋ชฉ๋ก์„ ์ฝ๋Š” ์›๋ฆฌ

๋ถ„๋ฅ˜๋ณ„ plugins/*.yml
        โ”‚ CI์—์„œ ๋ชฉ๋ก ์ƒ์„ฑ
        โ–ผ
dist/plugins.yml
        โ”‚ HTTP๋กœ ๋‹ค์šด๋กœ๋“œ
        โ–ผ
tpack์˜ ๋กœ์ปฌ registry ์บ์‹œ
        โ”‚ ์ด๋ฆ„ยท์„ค๋ช… ๊ฒ€์ƒ‰
        โ–ผ
TUI์—์„œ ์„ ํƒํ•œ Git ์ €์žฅ์†Œ
        โ”‚ ์„ค์น˜ ์š”์ฒญ
        โ–ผ
์„ค์ •์— ์„ ์–ธ ์ถ”๊ฐ€ + ์ €์žฅ์†Œ clone
  • ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ: registry์—๋Š” ์ €์žฅ์†Œ ์ฃผ์†Œยท์„ค๋ช…ยท๋ถ„๋ฅ˜ ๋“ฑ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”๋“œ๋Š” ์„ ํƒํ•œ Git ์ €์žฅ์†Œ์—์„œ ๋ฐ›๋Š”๋‹ค.
  • ๊ฒ€์ƒ‰ ๋™์ž‘: ๊ฒ€์ƒ‰ ๊ตฌํ˜„์€ ๋ชฉ๋ก์˜ ์ €์žฅ์†Œ ์ด๋ฆ„๊ณผ ์„ค๋ช…์—์„œ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ฐพ๋Š”๋‹ค.
  • ์„ค์ • ๊ธฐ๋ก: ๊ฒ€์ƒ‰ ํ™”๋ฉด์—์„œ ์„ค์น˜ํ•œ ํ•ญ๋ชฉ์€ ์„ค์ • ๊ธฐ๋ก ํ•จ์ˆ˜๊ฐ€ @plugin ์„ ์–ธ์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

์บ์‹œ: ๊ฒ€์ƒ‰ ๋ชฉ๋ก์˜ ๊ฐฑ์‹  ์‹œ์ 

  • registry ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„์˜ ๊ธฐ๋ณธ ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์€ 6์‹œ๊ฐ„.
  • PR merge ํ›„ ๋ฐฐํฌ ๋ชฉ๋ก ์ƒ์„ฑ๊ณผ ์‚ฌ์šฉ์ž ์บ์‹œ ๊ฐฑ์‹  ์‹œ์ ์— ๋”ฐ๋ผ ๊ฒ€์ƒ‰ ๋ฐ˜์˜์ด ๋Šฆ์–ด์งˆ ์ˆ˜ ์žˆ์Œ.
  • ๋‹ค์šด๋กœ๋“œ ์‹คํŒจ ์‹œ ๊ธฐ์กด ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์บ์‹œ๋„ ์—†์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฐ˜ํ™˜.

6. ์„ ํƒ๊ณผ ์ „ํ™˜ ์‹œ ํ™•์ธํ•  ์‚ฌํ•ญ

  • TPM: ์„ค์ • ํŒŒ์ผ์— ์ €์žฅ์†Œ๋ฅผ ์ง์ ‘ ์ ๊ณ  ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์น˜ยท์—…๋ฐ์ดํŠธํ•˜๋Š” ์ž‘์—… ๋ฐฉ์‹์— ์ ํ•ฉํ•˜๋‹ค.
  • tpack: ๊ฐ™์€ ์„ ์–ธ ๋ฌธ๋ฒ•์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฒ€์ƒ‰ ํ™”๋ฉด๊ณผ TUI์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.

TPM์—์„œ standalone tpack์œผ๋กœ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ๊ธฐ์กด TPM ์ดˆ๊ธฐํ™” ์ค„์„ tpack ์ดˆ๊ธฐํ™” ์ค„๋กœ ๊ต์ฒดํ•œ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์–ธ์€ ์œ ์ง€ํ•˜๋˜ TPM ์ž์ฒด๋ฅผ ์„ ์–ธํ•œ ์ค„์€ ์ œ๊ฑฐํ•œ๋‹ค.

# ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์–ธ ์•„๋ž˜, ์„ค์ • ํŒŒ์ผ ๋งˆ์ง€๋ง‰์— ๋ฐฐ์น˜
run 'tpack init'

์„ค์น˜ ๊ฒฝ๋กœ: ํ˜„์žฌ tpack๊ณผ TPM์˜ ์ฐจ์ด

  • tpack์€ ๊ธฐ๋ณธ์ ์œผ๋กœ tmux-87a1216f1f68์ฒ˜๋Ÿผ ์ €์žฅ์†Œ๋ณ„ ํ•ด์‹œ๋ฅผ ๋ถ™์—ฌ ๊ฐ™์€ ์ด๋ฆ„์˜ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ๋ถ„ํ•จ.
  • tpack์ด ๊ธฐ์กด ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒˆ ๊ทœ์น™์— ๋งž์ถฐ ๋ณ€๊ฒฝํ•˜๋ฏ€๋กœ ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ์ ์€ ์„ค์ •๊ณผ ์Šคํฌ๋ฆฝํŠธ ํ™•์ธ ํ•„์š”.
  • ๊ณต์‹ README๋Š” TPM๊ณผ tpack์ด ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฃจํŠธ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ช…์‹œ.
  • TPM์œผ๋กœ ๋Œ์•„๊ฐˆ ๋•Œ๋„ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„๊ณผ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•˜๋ฉด TPM์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹ค์‹œ ์„ค์น˜.