برای کسایی که با tmux کار میکنن و روال کارشون هر روز باز کردن یه ترمینال و چنتا سشن و پنجره tmux هست اتوماتیک کردن روند راه انداری tmux بدرد بخور هست. برای انجام این کار یا میشه از سوئیچهای خود tmux یا با یه برنامهی مدیریت سشن استفاده کرد.
استفاده از خود tmux میشه یه چیزی مثل این:
#!/bin/sh
tmux \
new-session -c $Home/blog \; \
send-keys 'vim .' C-m \; \
split-window -v -c $Home/blog/output -p 20 \; \
send-keys 'python3 -m http.server' C-m \; \
split-window -h -c $HOME/blog -p 70 \; \
send-keys 'source $HOME/.venvs/blog/bin/activate' C-m \;
که همچین چیزی میشه:
ولی تنظیم سایز بخشها (paneها) برای قالبهای پیچیدهتر با این روش سختتر میشه.
برای همین استفاده از یه ابزار مدیریت tmux مثل tmuxp راحتتر هست.
session_name: blog
windows:
- window_name: blog
window_index: 5
layout: 79ce,168x53,0,0[168x39,0,0,38,168x13,0,40{69x13,0,40,39,98x13,70,40,40}]
shell_command_before:
- cd ~/Projects/blog
- export LANG=fa
panes:
- shell_command:
- vim ./main.py
- shell_command:
- source ~/.venvs/blog/bin/activate
- cd ./output
- python -m http.server
- shell_command:
- source ~/.venvs/blog/bin/activate
- cd ./app
- echo $LANG
با این تنظیمات یه پنجره tmux با ایندکس 5 با قالبی که از قبل مشخص و سفارشی شده (layout) ساخته میشه.
با این دستور سشن اجرا میشه:
$ tmuxp load blog.yaml
توضیحات همهی گزینههای توی فایل تنظیمات (blog.yaml) داخل مستندات tmuxp مفصل توضیح داده شده. فقط نکتهی مهمش اون قالب سفارشی شده (layout) هست.
برای بدست آوردن مقدار layout باید یه بار یه tmux رو اجرا کنید و قالبی که میخواید رو بوجود بیارید و داخل اون سشن tmux این دستور رو بزنید:
$ tmux list-windows
که همچین خروجی میده:
0: zsh* (4 panes) [119x53] [layout 8f89,119x53,0,0[119x19,0,0,42,119x20,0,20,45,119x12,0,41{59x12,0,41,43,59x12,60,41,44}]] @17 (active)