در OS X کنترل پنجره برنامهها توسط ابزارهایی مانند xmonad یا i3 امکانپذیر نیست. این باعث شد که به دنبال یک برنامه جایگزین برای مدریت ترمینالهایم باشم. در ادامه توضیح میدهم که من چطور به روشی برای استفاده از tmux (تیماکس) به عنوان یک tiling window manager برای ترمینال رسیدم.
در روزهای اول تمام کارهایم را در یک session انجام میدادم. برای هر پروژه یا هر کار تکرار شونده یک window (پنجره) ایجاد میکردم و با استفاده از کلیدهای Alt+h و Alt+l به پنجره بعدی یا قبلی سوئیچ میکردم.
برای مدتی کارها پیش میرفت و مشکلی بزرگی نداشتم. تنها مشکل این بود که برای ادامهی کار روی یک پروژه باید شماره پنجرهاش را حفظ میکردم، یا تکتک پنجرهها را مرور میکردم تا پنجره مورد نظر پیدا شود. وقتی فهمیدم که پنجرهها در تیماکس میتوانند نام داشته باشند خیلی خوشحال شدم. دیگر میتوانستم آنها را نامگذاری کنم، ولی نمیخواستم هر دفعه این دستورات را تایپ کنم:
tmux new-window -n project1
یا
tmux rename-window project2
برای رفع این مشکل اسکریپتی نوشتم تا با استفاده از آن پنجرههای جدید ایجاد کنم و پنجرههای موجود را جستوجو کنم، بدون اینکه مجبور باشم دستوری بنویسم یا نام کامل پنجره را حفظ باشم. هر بار که میخواستم پنجرهای را پیدا کنم کلید Alt+p را میزدم و قسمتی از نام پنجره را وارد میکردم. برای ایجاد پنجره جدید کافی بود همان Alt+p را بزنم و نام جدیدی وارد کنم.
این اسکریپت کمک زیادی کرد ولی هنوز هم ایدهآل نبود. این دفعه مشکل این بود که بعد از چند ساعت در هر پنجره تعداد زیادی pane ایجاد میشد. مثلا برای یک پروژه ممکن بود چهار pane وجود داشته باشد (سرور، لاگ، کنسول مشکل یابی و غیره) همه در یک پنجره. بعضی پروژهها هم نیاز به بیش از یک پنجره داشتند.
در نهایت به روشی رسیدم که امروز هم از آن استفاده میکنم. در این روش برای هر پروژه بجای window یک session ایجاد میکنم. مثلا هر پروژه سارینا یک session دارد. به ازای هر نفر از اعضای خانواده و دوستان که کمک لازم دارند هم یک session به نامشان ایجاد میکنم. مزیت session این است که یک لایه طبقهبندی جدید اضافه میکند. یعنی درون هر session چند window، و درون هر window چند pane وجود دارد. تعداد نامهایی که باید انتخاب کنم و به خاطر بسپارم هم کمتر میشود، چون دیگر لازم نیست همه windowها نامگذاری بشوند.
برای اینکه شما هم از این روش استفاده کنید، کارهای زیر را انجام بدهید:
mkdir -p ~/.tmux/ git clone https://github.com/siadat/session-finder.git ~/.tmux/session-finder ~/.tmux/session-finder/install.bash
اسکریپت install.bash چند key binding جدید به انتهای فایل tmux.conf شما اضافه میکند.
M-Space new window M-l select next window M-h select prev window M-Tab select last window M-L move current window to right M-H move current window to left M-Return toggle pane fullscreen M-- scroll up M-+ scroll down
در این فایل M به معنی کلید Alt یا Meta است. اگر از iTerm و یا از OSX Terminal استفاده میکنید باید این کلید را فعال کنید:
Enable Meta key in OSX Terminal: Settings > Keyboard > Use option as meta key Enable Meta key in iTerm: Your profile > Keys > Left option key acts as __+Esc__
آیا شما هم از تیماکس یا برنامه مشابهای استفاده میکنید؟ در قسمت نظر دربارهی تجربه و راهحلهای خودتان بنویسید.