Qtile

مدیر پنجره‌ای به زبان پایتون(بخش اول)

سلام، محمدجواد هستم و در اولین مطلب میخوام قسمت اول Qtile رو براتون بنویسم.
در اینجا میخوایم این مدیر پنجره رو نصب و تنظیم کنیم تا بتونیم ازش به بهترین نحو استفاده کنیم

قبل از شروع خوبه این رو بدونید که توسعه دهنده، مستندات(documentation) عالی رو در این لینک قرار داده که میتونید هروقت به مشکل خوردید یا نیاز به چیز جدیدی داشتید بهش سر بزنید.

نیازه که کمی با ویم vim آشنا باشید و کمی هم پایتون بدونید.

این تصویری از محیط Qtile من هست: my qtile config

حالا بریم ببینیم که مدیر پنجره چیه:

طبق تعریف ویکی پدیا

مدیر پنجره (به انگلیسی: Window manager) نرم‌افزار سیستمی می‌باشد که وظیفه کنترل ظاهر و مکان پنجره‌های سامانه پنجره ای را در واسط گرافیکی کاربر بر عهده دارد.اغلب مدیر پنجره‌ها به منظور کمک برای ساخت محیط میزکار طراحی شده‌اند. مدیر پنجره در ادامه رابط‌های گرافیکی سطح پایین‌تر خود فعالیت می‌کند و ملزومات پشتیبانی از سخت افزارهای گرافیکی مانند وسایل اشاره‌ای مثلاً موشواره و صفحه کلید را فراهم میاورد و برای ساخت و نوشتن این ملزومات از ابزار ویجت بهره می‌برد.

و بصورت ساده

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

تفاوت مدیر پنجره و Desktop Environment(میزکار) چیه

میزکار، مجموعه‌ای از ابزارها و برنامه هاست. با نصب میزکار عملا نیاز خاصی به نصب برنامه های جدید برای انجام کارهای معمول ندارید چون خیلی ازونهارو خودش داره. اما مدیر پنجره کارش فقط مدیریت پنجره هاست و هیچ برنامه‌ای رو همراه خودش نصب نمیکنه.

برای مثال، اگر شما گنوم رو نصب کنید این برنامه ها همراهش نصب میشه:

  • ویرایشگر متن: gedit
  • مدیریت فایل: nautilus
  • ترمینال:‌ gnome-terminal

و اگر KDE نصب کنید این برنامه ها همراهش نصب میشن:

  • ویرایشگر متن: kate
  • مدیریت فایل: dolphin
  • ترمینال:‌ konsole

در صورتی که فقط مدیر پنجره نصب کنید شما باید یسری برنامه رو خودتون نصب کنید،‌البته اینجوری مدیریت بیشتری روی برنامه هایی که روی سیستمتون نصب میشن دارین. اگر میزکار دارین و کنارش مدیر پنجره نصب کنید میتونید از برنامه هایی که همراه میزکار نصب میشه استفاده کنید.
چه در کنار مدیر پنجره، میزکار نصب باشه و چه نصب نباشه،‌ بعضی عملکردهارو نیاز هست که خودتون تنظیم کنید. مثل کم و زیاد کردن نور صفحه و میزان صدا.

نصب Qtile در توزیع های مختلف

در توزیع های مبتنی بر آرچ

pacman -S qtile

در توزیع های مبتنی بر اوبونتو و فدورا باید از سورس کامپایل کنید

git  clone  https://github.com/qtile/qtile.git
cd  qtile
pip  install .

در سایر توزیع‌ها میتونید از سورس کامپایل کنید یا با pip نصب کنید

pip install qtile

بعد از نصب باید فایل تنظیمات پیش‌فرض رو در مسیر درستش قرار بدید

mkdir -p ~/.config/qtile
cp /usr/share/doc/qtile/default_config.py ~/.config/qtile/config.py
chown $USER:$USER ~/.config/qtile/config.py

اگر فایل وجود نداشت میتونید محتویات این لینک رو داخل فایل تنظیمات کپی کنید

ورود به Qtile و تنظیمات اولیه

یکبار از سیستم خارج بشید(logout) و بعد با Qtile وارد بشید
در اولین ورود، با همچین صفحه‌ای روبرو میشید qtile no config

برای خارج شدن از Qtile، روی گزینه [shutdown] که در گوشه پایین سمت راست قرار داره کلیک کنید، بعد ازینکه شمارشگر تموم شد از Qtile خارج میشید. قبل ازینکه تصویر زمینه رو اعمال کنید، ممکنه هربار که برنامه‌ای رو میبندید تصویر آخرین لحظه‌ای که برنامه باز بوده به عنوان پس زمینه قرار داده بشه. همچنین ممکنه بعد از وارد شدن به Qtile، تصویر صفحه ورود(login screen) به عنوان تصویر زمینه قرار داده بشه و فقط نوار پایین به صفحه اضافه بشه.

موارد پیش‌فرض

یکسری میانبر وجود داره که میتونید برای کارهای اصلی استفاده کنید

  • نکته: منظور از کلید super، همون کلید meta یا کلید ویندوز هست *

super + Enter : باز کردن ترمینال جدید
super + W : بستن پنجره فعال
super + ctrl + R : بارگذاری مجدد تنظیمات(وقتی تنظیمات رو تغییر میدید)
super + R : فعال کردن لانچر برنامه‌ها
~/.config/qtile/config.py : فایل تنظیمات

اولین تغییرات

قبل از هرچیز تصویر زمینه رو عوض کنیم. عکس دلخواه رو در مسیر تنظیمات قرار بدید. پیشنهاد میشه اسم فایل رو به یچیز ساده تغییر بدید تا بعدا راحت باشید، مثلا bg.jpg. حالا فایل تنظیمات رو با ویرایشگر دلخواه باز کنید، حدودا در خط 125 قبل ازین خط

bottom = bar.Bar(

این خط هارو اضافه کنید ``` wallpaper = '~/.config/qtile/FILENAME', wallpaper_mode = 'fill', ``` بجای FILENAME، اسم تصویر رو قرار بدید

حالا باید همچین چیزی داشته باشید:

...
screens = [ 
    Screen(
        wallpaper = '~/.config/qtile/bg.jpg',
        wallpaper_mode = 'fill',
        bottom = bar.Bar(
            [ 
                widget.CurrentLayout(),
                ...

حالا بریم واسه کار بعدی

خود Qtile سعی میکنه به روش خودش، ترمینالی که روی سیستم شما نصب شده رو تشخیص بده. بهتره کاری کنیم که این حدس زدن رو انجام نده و خودمون بهش بگیم چه ترمینالی استفاده میکنیم:

حدودا در خط شماره 30 فایل تنظیمات با همچین چیزی روبرو هستیم

from libqtile.utils import guess_terminal

این خط رو پاک یا کامنت کنید، چند خط پایین تر هم باید تغییر کوچکی ایجاد کنیم تا کارمون تموم بشه

این خط رو

terminal = guess_terminal()

تغییر بدید به

terminal = 'konsole'

بجای konsole اسم ترمینال دلخواهتون رو قرار بدید

شاید بخواید برای مرورگر و مدیر فایل هم کلید میانبر تعریف کنید، در این صورت بعد از همین خط، این خط هارو قرار بدید:

browser = 'firefox'
file_manager = 'dolphin'

در آینده کلیدهای مربوط به هرکدوم رو تنظیم خواهیم کرد.

میانبرهای مهم

شاید نیاز داشته باشید که کلیدهای کنترل میزان صدا و نور صفحه رو هم تنظیم کنید، اول باید کد مربوط به هر کلید رو تشخیص بدیم.

بسته‌ی xbindkeys رو نصب کنید و دستور زیر رو اجرا کنید:

xbindkeys -mk

با فشردن هر کلید، کد مربوط به اون کلید رو مشاهده خواهید کرد.

به عنوان مثال:

m:0x0 + c:223
XF86MonBrightnessUp

قسمت مهم برای ما، XF86MonBrightnessUp هستش.

کد همه‌ی کلیدهای موردنیاز رو جایی یادداشت کنید.

برای مثال، این کدهایی هست که من بهشون نیاز دارم:

XF86AudioMute            
XF86AudioRaiseVolume     
XF86AudioLowerVolume     
XF86MonBrightnessUp                      
XF86MonBrightnessDown    

این کدهارو جایی یادداشت کنید تا بعدا ازشون استفاده کنیم


تا همینجا بحث طولانی شد، ادامه مطالب رو در قسمت های بعد خواهیم دید.

با تشکر