~/.tmux.confकॉन्फ़िग फ़ाइल के ज़रिए key bindings, रंग, status bar, mouse behavior आदि को अपनी पसंद के अनुसार बदला जा सकता है- डिफ़ॉल्ट Prefix key
C-bकोC-aमें बदलकर और Caps Lock को Ctrl पर remap करके इनपुट दक्षता बढ़ाई जा सकती है - विंडो split को
",%की जगह|,-keys से अधिक सहज तरीके से किया जा सकता है, औरrkey से कॉन्फ़िग फ़ाइल को तुरंत reload किया जा सकता है - Alt + arrow keys से panel switching, mouse mode enable करना, window name का auto rename बंद करना आदि से उपयोग में आसानी बढ़ती है
- रंग, status bar, messages, borders जैसे visual elements को बारीकी से सजाकर एक consistent theme बनाई जा सकती है
tmux customization की बुनियादी अवधारणाएँ
- tmux कॉन्फ़िग फ़ाइल
tmux.confहोती है, और इसे user home directory के~/.tmux.confमें रखने पर यह व्यक्तिगत सेटिंग के रूप में लागू होती है- कई users के साथ साझा करने के लिए इसे system-wide directory में रखा जा सकता है, और इसका स्थान operating system के अनुसार अलग होता है
- सही स्थान
man tmuxमें-foption के विवरण से देखा जा सकता है
- कॉन्फ़िग फ़ाइल को बदलकर key bindings, रंग, status bar, mouse behavior आदि को स्वतंत्र रूप से बदला जा सकता है
कम असुविधाजनक Prefix key सेट करना
- डिफ़ॉल्ट Prefix key
C-bको अधिक आसानी से पहुँचे जाने वालेC-aमें बदला जा सकता हैC-abash के “लाइन की शुरुआत पर जाएँ” कमांड से टकरा सकता है- Caps Lock key को Ctrl पर remap करने से Prefix combination दबाना और आसान हो जाता है
- कॉन्फ़िग उदाहरण इस प्रकार है
unbind C-b set-option -g prefix C-a bind-key C-a send-prefix C-a C-aसे पुराना bash कमांड अब भी इस्तेमाल किया जा सकता है
सहज विंडो split कमांड
- डिफ़ॉल्ट split keys
",%की जगह दृश्य रूप से सहज|,-का उपयोग|को horizontal split और-को vertical split के लिए सेट किया जाता है- पुरानी key bindings हटा दी जाती हैं
bind | split-window -h bind - split-window -v unbind '"' unbind %
कॉन्फ़िग फ़ाइल को तेज़ी से reload करना
- यदि
tmux.confको बार-बार बदला जाता है, तो इसे shortcut से तुरंत reload किया जा सकता हैrkey पर कॉन्फ़िग फ़ाइल दोबारा लागू करने वाला कमांड bind किया जाता है
bind r source-file ~/.tmux.conf
तेज़ panel switching
- Alt (Meta) key + arrow keys से Prefix के बिना panels के बीच जाया जा सकता है
Alt-Left,Alt-Right,Alt-Up,Alt-Downसे क्रमशः movement होता है
bind -n M-Left select-pane -L bind -n M-Right select-pane -R bind -n M-Up select-pane -U bind -n M-Down select-pane -D
mouse mode सक्षम करना
- mouse से windows चुनना और panel size बदलना संभव हो जाता है
- keyboard-केंद्रित उपयोग डिफ़ॉल्ट है, लेकिन collaboration में यह उपयोगी है
- pair programming जैसी स्थितियों में इसका अक्सर उपयोग किया जा सकता है
set -g mouse on
window name का automatic rename बंद करना
- हाथ से दिए गए window name को कमांड चलने पर अपने-आप overwrite होने से रोका जा सकता है
set-option -g allow-rename off
tmux का रूप-रंग बदलना
- रंग, status bar, messages, panel borders आदि को विस्तार से नियंत्रित किया जा सकता है
STYLESसेक्शन देखने पर कई visual elements की सेटिंग मिलती है- डिफ़ॉल्ट terminal colors (
red,yellow,blackआदि) इस्तेमाल करने पर theme के साथ स्वाभाविक मेल बैठता है - 256-color mode में
colour0~colour256निर्दिष्ट किया जा सकता है
- उदाहरण कॉन्फ़िग में ये आइटम शामिल हैं
-
bell alert बंद**,** clock color yellow**,** copy mode style fg=black bg=red bold
-
panel border color red**,** active panel border yellow
-
status bar position bottom**,** बाईं ओर खाली जगह**,** दाईं ओर समय दिखाना
-
current window style fg=black bg=red**,** सामान्य window style fg=red bg=black
- message style fg=yellow bg=red bold
- इन सेटिंग्स से consistent रंग संयोजन और स्पष्ट दृश्य विभाजन मिलता है
-
अतिरिक्त संदर्भ सामग्री
- अलग-अलग tmux कॉन्फ़िग उदाहरण GitHub के
tmux.confयाdotfilesrepositories में देखे जा सकते हैं- Reddit के
/r/dotfiles,/r/unixpornभी संदर्भ के लिए उपयोगी हैं
- Reddit के
- पूरा कॉन्फ़िग GitHub dotfiles repository में सार्वजनिक है
- गहराई से सीखने के लिए tmux man page और tmux wiki के Configuring tmux सेक्शन को देखने की सलाह दी जाती है
- इनमें नवीनतम features और विस्तृत options शामिल हैं
- यदि terminal color theme खुद डिज़ाइन करनी हो, तो Root Loops(https://rootloops.sh/) का उपयोग किया जा सकता है
- यह व्यक्तिगत terminal color setup को समर्थन देता है
1 टिप्पणियां
Hacker News की राय
मैं पहले tmux इस्तेमाल करता था, लेकिन Zellij मिलने के बाद पूरी तरह उसी पर चला गया
tabs और panels की सेटिंग कहीं ज़्यादा intuitive है, और mouse से scrolling और text selection आसान होने की वजह से copy-paste करना भी सुविधाजनक है
button links में right-click copy नहीं हो पाता और accessibility के लिहाज़ से भी यह अच्छा नहीं है
tmux में मैं यह feature हर 1~2 मिनट में इस्तेमाल करता हूँ, लेकिन Zellij developers कहते हैं कि data को editor में pipe कर दो, जो system clipboard के साथ compatible नहीं है
इसलिए आखिरकार मैं tmux पर लौट आया
Zellij लगभग 50MB है, जबकि tmux dependencies सहित भी लगभग 2MB है, इसलिए size difference काफ़ी बड़ा है
Zellij धीरे-धीरे bloated होता गया और असुविधाजनक लगने लगा; अब मैं tmuxp से sessions configure करता हूँ और autossh से connection बनाए रखता हूँ, और इससे कहीं ज़्यादा संतुष्ट हूँ
key bindings की बात करें तो, ^a screen की परंपरा है और ^b tmux की
कई systems संभालने वाले admin के लिए default keymap सीखना ज़रूरी है
मैंने सिर्फ colors, active panel background, timestamp clock और mouse enable जैसी चीज़ें बदलीं, key bindings वैसे ही छोड़ीं
आदत पड़ जाए तो defaults ही ज़्यादा सुविधाजनक लगते हैं
Shift+Enter काम न करने की वजह से मैंने tmux छोड़कर Zellij अपना लिया था
लेकिन Zellij ने panic crash में process उड़ा दिए, इसलिए आखिरकार tmux पर लौट आया
समाधान
"bind-key -T root S-Enter send-keys C-j"था, जो इस issue में मिला"bind -n S-Enter send-keys Escape '[13;2u'"से इसे ठीक कियाpi.dev extended-keys setting न होने की warning देता है, लेकिन यह ठीक काम करता है
tmux में server को मारने पर child processes भी साफ़ हो जाते थे, जो सुविधाजनक था
\ + Entercombination से भी यह किया जा सकता हैtmux का Control Mode जानने के बाद तो यह पूरा game changer लगा
iTerm2 में
tmux -CCचलाने पर tabs, scrolling, copy/paste, shortcuts वगैरह terminal-native तरीके से काम करते हैंtabs visually भी साफ़ दिखाई देते हैं, और beginners के लिए यह खास तौर पर उपयोगी है
मैं tmux में Alt+number से तेज़ window switching इस्तेमाल करता हूँ
उदाहरण:
bind-key -n M-1 select-window -t :1जैसी settingAlt-/ से vi-style copy mode भी खोला जा सकता है
Wayland environment में
wl-copyइस्तेमाल करके mouse drag याykey से copy किया जा सकता हैमैंने Powerline-style design भी जोड़ा है, लेकिन इसके लिए powerline-fonts चाहिए
मैंने tmux को इतना ज़्यादा customize कर लिया था कि नए server पर ssh करते ही उसका basic usage भूल जाता था
अब मैं इसे default settings पर ही इस्तेमाल करता हूँ। बस mouse scrolling setting हर बार बदलनी पड़ती है
इससे जुड़ा एक concept The Lisp Curse भी है
जैसे Ctrl-b वैसा ही रखा और Ctrl-space को अतिरिक्त shortcut के रूप में इस्तेमाल किया
iTerm2 में tmux के Control Mode ने मुझे प्रभावित किया
local window manager की तरह remote terminal windows को control किया जा सकता है
ghostty में भी इस feature का implementation चल रहा है, इसलिए उम्मीद है
tmux की default prefix key (C-b) को बहुत लोग अटपटी मानते हैं, लेकिन मुझे लगता है कि यही उसकी अटपटी प्रकृति उसका फ़ायदा है
गलती से दब जाने की संभावना लगभग नहीं रहती
split commands भी मुझे intuitive लगते हैं —
%मुझे horizontal line जैसा और"vertical line जैसा महसूस होता हैconfig reload की ज़रूरत शुरू में ज़्यादा पड़ती थी, अब लगभग नहीं पड़ती
ज़रूरत हो तो
.tmux.confमें यह जोड़ सकते हैं। अगर सिर्फ local पर इस्तेमाल करते हैं तो conflicts की चिंता भी नहीं रहतीमुझे tmux बहुत पसंद है, लेकिन इसकी मुश्किल यह है कि इसके लिए 400-line config file चाहिए
default रूप में यह बहुत friendly नहीं है, लेकिन अच्छी तरह हाथ लगाने पर शानदार बन जाता है
मेरी config file देखी जा सकती है
बस लगभग 9 shortcuts याद रखने पड़े
PowerShell version भी जोड़ने वाला हूँ
prefix binding ही बस वापस पुरानी कर दी
पहले मैंने एक weekend में “tmux 2: mouse-free productivity” किताब पढ़ी थी, और यह मेरी productivity पर सबसे बड़ा असर डालने वाली किताबों में से एक थी
इसका नया edition भी लगातार update हो रहा है → tmux 3: productive mouse-free development