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

سلام من سید محمد جواد تقی پور هستم.این اولین دفعه است که میخوام اینجا چیزی بنویسم، امیدوارم خوشتون بیاد و استفاده کنید.قبل از اینکه شروع کنیم اول یسری چیزهارو بررسی کنیم:توسعه دهنده یه مستند عالی از ساختار و نحوه تنظیم کردن Qtile در این لینک قرار داده که میتونید ازش استفاده کنید.چه پیش نیاز هایی برای استفاده وجود دارهپایتون رو یکمی بلد باشید و با کلید های عملکرد H,J,K,L توی ویم آشنا باشید کفایت میکنه، برای بعضی عملکردهای معمول یکمی کار با ترمینال هم بلد باشید لازمهتصویری از مدیر پنجره Qtileمدیر پنجره چیهویکی پدیا:مدیر پنجره (به انگلیسی: Window manager) نرم‌افزار سیستمی می‌باشد که وظیفه کنترل ظاهر و مکان پنجره‌های سامانه پنجره ای را در واسط گرافیکی کاربر بر عهده دارد.اغلب مدیر پنجره‌ها به منظور کمک برای ساخت محیط میزکار طراحی شده‌اند. مدیر پنجره در ادامه رابط‌های گرافیکی سطح پایین‌تر خود فعالیت می‌کند و ملزومات پشتیبانی از سخت افزارهای گرافیکی مانند وسایل اشاره‌ای مثلاً موشواره و صفحه کلید را فراهم میاورد و برای ساخت و نوشتن این ملزومات از ابزار ویجت بهره می‌برد.خیلی ساده:مدیر پنجره برنامه‌ای هست که محل قرارگیری پنجره ها و اندازشون رو مشخص میکنه. یعنی وقتی شما یه برنامه جدید باز میکنید،‌مدیر پنجره‌است که مشخص میکنه پنجره جدید کدوم قسمت نمایشگر و با چه اندازه‌ای ایجاد(باز) بشه.تفاوت مدیر پنجره و Desktop Environment(دسکتاپ) چیهدسکتاپ، مجموعه‌ای از ابزارها و برنامه هاست. با نصب دسکتاپ عملا نیاز خاصی به نصب برنامه های جدید برای انجام کارهای معمول ندارید چون خیلی ازونهارو خودش داره. اما مدیر پنجره کارش فقط مدیریت پنجره هاست و هیچ برنامه‌ای رو همراه خودش نصب نمیکنه.برای مثال، اگر شما گنوم رو نصب کنید این برنامه ها همراهش نصب میشه:ویرایشگر متن: geditمدیریت فایل: nautilusترمینال:‌ gnome-terminalو اگر KDE نصب کنید این برنامه ها همراهش نصب میشن:ویرایشگر متن: kateمدیریت فایل: dolphinترمینال:‌ konsoleدر صورتی که فقط مدیر پنجره نصب کنید شما باید یسری برنامه رو خودتون نصب کنید،‌البته اینجوری مدیریت بیشتری روی برنامه هایی که روی سیستمتون نصب میشن دارین. اگر دسکتاپ دارین و کنارش مدیر پنجره نصب کنید میتونید از برنامه هایی که همراه دسکتاپ نصب میشه استفاده کنید.چه در کنار مدیر پنجره، دسکتاپ نصب باشه و چه نصب نباشه،‌ بعضی عملکردهارو نیاز هست که خودتون تنظیم کنید. مثل کم و زیاد کردن نور صفحه و میزان صدا.حالا بریم سراغ نصب و تنظیم Qtileمدیر پنجره های زیادی وجود دارن که شما میتونید از هرکدوم که دوست دارین استفاده کنید. پیشنهاد میکنم مدیر پنجره‌ای رو نصب کنید که زبانی که باهاش نوشته شده براتون ساده باشه. منم چون پایتون بلدم از Qtile استفاده میکنم.تفاوت اصلی مدیر پنجره ها در زبان برنامه نویسی که استفاده میکنن و ابزار های آماده‌ای که دارن هست.نکته مهم: من روی ماشین مجازی و دو توزیع مختلف برپایه اوبونتو سعی کردم Qtile رو نصب کنم. باید یسری وابستگی هارو نصب میکردم تا در نهایت بشه Qtile رو نصب کرد. نمیدونم چیشد و متاسفانه محیط گرافیکی توزیع ازکار افتاد.تنها توزیع های مبتنی بر آرچ هستن که Qtile رو داخل مخازن دارن و بدون مشکل نصب و راه اندازی میشه.نصب Qtile در توزیع های مختلفدر توزیع های مبتنی بر آرچsudo pacman -S qtileدر توزیع های برپایه فدورا و اوبونتو باید از سورس کامپایل کنید:git clone https://github.com/qtile/qtile.git cd qtile pip install .در سایر توزیع ها هم میتونید از سورس کامپایل کنید یا با pip نصب کنید :pip install qtileحالا باید فایل تنظیمات پیش فرض رو در مسیر خودش کپی کنید:mkdir -p ~/.config/qtile sudo cp /usr/share/doc/qtile/default_config.py ~/.config/qtile/config.py sudo chown $USER:$USER ~/.config/qtile/config.pyاگر فایل وجود نداشت میتونید محتویات این فایل رو در فایل config.py بریزیدوارد شدن به Qtile و شروع شخصی سازییکبار از سیستم خارج بشید(log out) و دوباره وارد بشید اما اینبار برای ورود، Qtile رو انتخاب کنید.دقت کنید که ممکنه Qtile روی Wayland کمی ناپایدار باشه و بعضی از ابزارهاش کار نکنه.اولین باری که وارد Qtile بشید با این صحنه روبرو میشید:صفحه سیاه بعد از اولین ورود به Qtileهمونطور که میبینید فقط یک صفحه سیاه هست با یه نوار خیلی ساده پایین صفحه.و این هم چیزی هست که من برای خودم تنظیم کردم:تنظیمات ظاهری من برا Qtileبرای خارج شدن از Qtile، روی گزینه [shutdown] که گوشه پایین سمت راست صفحه هست کلیک کنید. اینجوری بعد از اینکه شمارشگر تموم شد از محیط Qtile خارج میشید.ممکنه بعد از اولین ورود به Qtile تصویر صفحه ورود تغییری نکنه و فقط نوار پایین اضافه بشه، در این صورت هر برنامه‌ای که باز کنید، بعد از بستن برنامه آخرین صحنه ازون برنامه به عنوان تصویر زمینه قرار میگیره. این مشکل تا زمانی توی تنظیمات تصویر زمینه رو تنظیم نکرده باشید رفع نخواهد شد.کلید های میانبر پیش فرضیسری میانبرها ازپیش تعیین شده و در این قسمت قراره مهم هارو یاد بگیریمدر اینجا منظور از کلید super، کلید meta یا همون کلید ویندوز هستباز کردن ترمینال: super + enterبارگذاری مجدد تنظیمات(برای وقتی که تنظیمات رو تغییر میدید): super + ctrl + Rبستن پنجره‌ی برنامه‌ها: super + Wفعال کردن لانچر برنامه‌ها: super + Rبریم که شخصی سازی رو شروع کنیماول ترمینال رو باز کنید، به مسیر زیر برید و فایل config.py رو با ادیتور دلخواهتون باز کنید~.config/qtile/خود Qtile سعی میکنه از طریقی ترمینال شمارو تشخیص بده و هربار که میخواید بازش کنید، چیزی که حدس زده رو باز میکنه. پیشنهاد من اینه که ترمینال مدنظرتون رو بهش بشناسونید. در فایل تنظیمات خط زیر رو پیدا کنید و پاک یا کامنتش کنید:from libqtile.tuils import guess_terminalچند خط پایین تر جایی که نوشته شده ()terminal = guress_terminal رو تغییر بدیدterminal = 'konsole'بجای konsole، اسم ترمینال مدنظرتون رو قرار بدید.شاید بخواید به برنامه مدیریت فایل و مرورگر هم یه میانبر اختصاص بدید، پس این خط هارو به تنظیمات اضافه کنیدfile_manager = 'dolphin'browser = 'firefox'بجای dolphin و firefox، برنامه های مدنظرتون رو قرار بدید(قطعا میدونید که این برنامه‌ها باید روی سیستم نصب باشن)در نهایت باید همچین چیزی داشته باشید:mod = &quotmod4&quot #به این خط کاری نداشته باشید.قطعا به مشکل خواهید خورد terminal = 'konsole' browser = 'firefox' file_manager = 'dolphin'تنظیم میانبرهای مهمهمونطور که قبلا گفتم نیاز دارید که یسری عملکردهارو خودتون تنظیم کنید، مثل کم و زیاد کردن نور صفحه و میزان صدا.اول باید تشخیص بدیم هر کلید چه کدی داره. برنامه xbindkeys رو نصب کنید و یه ترمینال باز کنید و دستور زیر رو بزنیدxbindkeys -mk یه پنجره سفید باز میشه که با هربار فشار دادن یک کلید، کد مربوط به اون کلید رو نشون میده، کلیدهای افزایش و کاهش صدا و کلیدهای افزایش و کاهش نور صفحه رو فشار بدیدبرای من با فشار دادن کلید افزایش نور صفحه این خروجی نمایش داده میشه:m:0x0 + c:223XF86MonBrightnessUpقسمت مهم برای ما XF86MonBrightnessUp هستش، برای همه‌ی کلیدهایی که نیاز دارید این کارو انجام بدید و کد هر کلید رو یادداشت کنید. با فشار دادن کلید q برنامه متوقف میشه.این کد کلیدهایی هست که من بدست‌ آوردم و ممکنه برای شما متفاوت باشهXF86AudioMute قطع و وصل کردن صداXF86AudioRaiseVolume افزایش صداXF86AudioLowerVolume کاهش صداXF86MonBrightnessUp افزایش روشنایی صفحهXF86MonBrightnessDown کاهش روشنایی صفحهحالا باید بریم و این میانبر هارو تنظیم کنیم. بدلیل اینکه این کار یکمی وقت گیره در قسمت بعد این کارو انجام خواهیم داد.امیدوارم تا اینجای کار از این مطلب راضی بوده باشید.