شرتکات فوکوس روی پنجره ایمکس

خوب، امروز پست شاهین در مورد استفاده از ایمکس به عنوان ترمینال رو دیدم. یه مدت خودم هم این فکر رو تو سرم داشتم، ولی تنبلی نمیذاره کاری بکنیم ;)‏

خوب، این پست رو میخونم. همه جا تا multi-term خوب و خوش پیش میره. ولی وقتی به تنظیمات i3 میرسم، یه چیز جالب یادم میفته: دسکتاپ من i3 نیست! چاره چیه؟
باید پنجره ایمکس رو طوری بکنم که با یه شرتکات بیاد و بره. اوپن باکس به هیچ وجه تو مدیریت پنجره‌ها از طریق خط فرمان خوب نیست. پس باید یه راه دیگه پیدا کنم. با یه سرچ، به یه ابزار داخلی X میرسم: xdotool. کمی تو راهنماش میچرخم و چیزهایی رو که لازم هستن پیدا میکنم. چیزایی مثل مینیمایز کردن، بالا آوردن و گرفتن آی‌دی پنجره. خوب، فقط مونده این‌ها رو ترکیب بکنیم. یه اسکریپت کوتاه می‌نویسیم:
‎#! /bin/bash

id="$(xdotool search –name –limit 1 emacs@$HOST)"‎
active="$(xdotool getactivewindow)"‎

if [ "$id" = "" ]; then
zenity –error –title "Error" –text "No emacs is running\!"‎
exit 1
fi

if [ $id != "$active" ]; then
xdotool windowmap $id
xdotool windowfocus $id
else
xdotool windowminimize $id
fi

اول بگم که اگه بخواین این رو کپی کنین، یه سری کاراکتر برای درست نشون دادن این کد گذاشتم. پس اگه بخواین کپیش کنین، اول چک کنین ببینین کاراکتر اضافی دارین یا نه.
خوب، میشه گفت هرکسی با یه نگاه میتونه بگه این اسکریپت چیکار میکنه. ولی به هر حال توضیح میدم. اولین سطر که میگیم با بش اجرا کن. بعد، آی‌دی پنجره‌ای رو که اسمش emacs@HOSTNAME هست، میگیرم (HOSTNAME همون اسم کامپیوتره منه) که همون پنجره ایمکسه و میذارم تو متغیر id. بعد، آی‌دی پنجره فعال رو میگیرم و اونو هم میندازم تو متغیر active. حالا چک میکنم ببینم اصلا پنجره ایمکسی هست یا نه. اگه نباشه با zenity یه ارور میدم و میزنم بیرون. حالا یه if دیگه میذارم که ببینم پنجره فعال همون ایمکسه یا نه. اگه باشه، مینیمایزش میکنم و اگه نباشه، میارمش بالا و روش فوکوس میکنم.
خوب، حالا این رو تو یه فایل میریزم و یه شرتکات دلخواه براش تعیین میکنم و تمام.
ولی من شخصا زیاد از ترمینال ایمکس خوشم نیومد. بعضی شرتکات‌ها رو ساپورت نمیکنه (که نباید هم بکنه. به هر حال شرتکات‌های خودشه دیگه!) و بعضی کارهای دیگه هم نمیشن.
ولی به هر حال این کد رو نگه میدارم تا شاید یه روز برای برنامه دیگه‌ای، مثل GoldenDict، ازش استفاده بکنم 😉

Advertisements

آرچ و کانفیگ جدید اوپن‌باکس

چند روز قبل، دیگه اوبونتو کلافم کرد و خسته شدم از اینکه ندونم چی به چیه. پس مستقیم آرچ رو زدم به فلش و بایوس رو ادیت کردم که از فلش هم بوت کنه. بعد تو دو روز همه چیز کانفیگ شد و الان خیلی بیشتر از قبل میدونم کامپیوترم چطور کار میکنه و چی به چیه. مشکلاتی هم که پیش اومدن، باعث شدن چیزای جدیدی یاد بگیرم. مثلا، الان میدونم که اگه بخوام از اوپن‌باکس (و نه یونیتی) از HDMI استفاده کنم، میتونم از lxrandr استفاده کنم (با تشکر از توسعه‌دهنده‌های باحال lxde 😉 ) و برای حل مشکل صدای HDMI هم شاید این مطلب به درد بخوره. یا مثلا میدونم که اگه صدای کامپیوتر با یوزرهای غیر از روت کار نکنه، باید به گروه audio اضافشون کنم. البته بعضی مشکلات هم هستن که هنوز نتونستم حل کنم. مثل read-only بودن پارتیشن‌های ntfs (از زمان جاهلیت ویندوزی بودن موندن، ولی فایل‌های مهم زیادی توشون هستن) (حل شد 😉 ).

اوپن باکس رو هم میخواستم از کانفیگ قبلیم استفاده کنم، ولی بعد دیدم دیگه خوشم نمیاد ازش. پس دوباره کانفیگ کردم و این‌بار به نظرم خیلی بهتره. ابزار استفاده شده هم wbar برای بار سمت راست، tint2 به جای fbpanel بالای صفحه، conky برای اطلاعات کامپیوتر، feh برای ست کردن بک‌گراند و xfce4-xkb-plugin برای سویچ بین زبان‌های کیبورد. والپیپر رو یادم نیست از کجا آوردم.

در آخر پیشنهاد میکنم حتما حداقل آرچ رو امتحان کنین. بعدش دیگه نمیتونین ازش دست بردارین. اینکه همه چیز دست خودتون باشه، واقعا حس خوبیه.

پی‌نوشت:
مشکل read-only بودن پارتیشن‌های ntfs رو با نصب بسته‌ی ntfs-3g حل کردم 😉