برنامه نویسی

دبیان 12… شگفت انگیز است! چگونه: خانه کد سفارشی خود را ایجاد کنید [Part 4A/4]

Summarize this content to 400 words in Persian Lang

ایجاد یک رابط کاربری مینیمالیستی سفارشی در دبیان: از سرور نمایشگر خالی تا رابط کاربری کاملاً کاربردی با BSPWM و Polybar.

در قسمت‌های قبلی این سری مقالات دبیان 12 (4 قسمت)، جزئیات زیادی را در مورد توزیع دبیان توضیح دادم – چه چیزی دبیان ارائه می‌کند، چگونه نرم‌افزار را بسته‌بندی می‌کند، چگونه دبیان را نصب کنید، و چگونه سیستم دبیان خود را به روشی امن مدیریت کنید. . اگر تا به حال از آن لذت برده اید و من کنجکاوی شما را در مورد دبیان برانگیخته ام، بیایید به جالب ترین بخش برویم – ایجاد رابط کاربری سفارشی دبیان!

در قسمت‌های 3A و 3B، ممکن است متوجه شده باشید که تمام اسکرین‌شات‌هایی که ارائه کردم، فقط متن سفید روی صفحه سیاه هستند. این به این دلیل است که من یک نسخه بسیار کم از دبیان را نصب کردم که در ابتدا فقط ابزارهای استاندارد سیستم را داشت و هیچ راهی برای اجرای هیچ برنامه رابط کاربری گرافیکی نداشت، حتی اگر بخواهم. چرا؟ مشکلی در درایورهای گرافیک وجود داشت؟ نه من فقط یک کارت گرافیک دارم – NVIDIA (CPU اینتل من کارت گرافیک یکپارچه ندارد)، من درایورهای Nouveau داشت برای پردازنده گرافیکی NVIDIA از ابتدا.

ضمنا من درایورهای اختصاصی انویدیا رو نصب کردم. من این فرآیند را در این مقاله به تفصیل شرح داده‌ام (نمی‌توانم آن را در اینجا ادغام کنم زیرا این مقاله را فوق‌العاده طولانی می‌کند).

اگر با سیستم های لینوکس آشنایی دارید، ممکن است در مورد طعم های توزیع اطلاعات داشته باشید. آنها اساساً محیط های دسکتاپ (DE) متفاوتی هستند که با توزیع مورد نظر شما همراه شده اند. بنابراین، اگر شما دانلود کنید .iso با یک طعم، و نصب سیستم، محیط دسکتاپ را که انتخاب کرده اید خواهید داشت. معروف ترین آنها GNOME، XFCE و KDE Plasma هستند. با این حال، در حین نصب، هیچ یک از آنها را روی سیستم عامل خود نصب نکردم، بنابراین تنها چیزی که دارم این ترمینال سیاه است. اما آیا این محیط های دسکتاپ معروف تنها راه برای کاربرپسندتر کردن سیستم عامل شما و دریافت یک UI در غیر این صورت، من این مقاله را نمی نوشتم.

آیا یکی از این محیط‌های دسکتاپ را روی تنظیمات دبیان خود نصب می‌کنم و سپس به شما نشان می‌دهم که چگونه آن را سفارشی کنید؟ نه. چرا؟ چون جالب نیست همچنین، برای من bloatware می آورد (در این مورد، نرم افزاری که من هرگز استفاده نمی کنم). برای توضیح بهتر خودم، مهم نیست که چقدر گنوم را سفارشی کنید، گنوم همچنان گنوم است. هیچ راهی وجود ندارد که آن را کاملاً مطابق با نیازهای خود قرار دهید و در عین حال همه چیزهایی را که هرگز استفاده نمی کنید از بین ببرید. تنها DE که من شخصا تحمل می کنم XFCE است. بقیه؟ مه باستا. من هشت ساعت در روز، پنج روز در هفته با رایانه شخصی کارم با ویندوز سروکار دارم—به اندازه کافی از این رابط‌های کاربری بامزه «کلیک-کلیک» استفاده می‌کنم.

برای من، ارزشمندترین بخش فرآیند سفارشی سازی دبیان این است که شما را واقعاً به خود سیستم عامل نزدیک می کند. آیا در حال یادگیری Rust هستید؟ آیا در مورد نوشتن برنامه های کاربردی برای سیستم عامل های لینوکس (یا حتی ویندوز) کنجکاو هستید؟ اما شما هرگز از گنوم فراتر نرفته اید و برای شما یک جعبه جادویی است؟ خبر بد: به احتمال زیاد، شما نیز از برنامه های وب فراتر نخواهید رفت.

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

چه چیزی در اینجا داریم: دستگاه های ورودی و خروجی. به عنوان ورودی، صفحه کلید و ماوس و همچنین میکروفون روی هدست را دارم. برای خروجی، مانیتور و برای موسیقی یا تماس، خود هدست وجود دارد. برای سادگی، ماوس و صفحه کلید را با استفاده از یک اتصال سیمی ترسیم می کنم. ماوس من بی سیم است، اما توجه به این نکته مهم است که اگر صفحه کلید و ماوس شما از دانگل استفاده می کنند، معمولاً به بلوتوث متکی نیستند – آنها از فناوری فرکانس رادیویی (RF) برای ارتباط با گیرنده های خود (دانگل) استفاده می کنند. این طرح به هیچ وجه به دانگل بلوتوث متصل نیست.

صفحه کلید من یک صفحه کلید شگفت انگیز AKKO است. متأسفانه، در لینوکس، فقط در حالت سیمی کار می کند، اما من با آن کاملاً خوب هستم. از طرفی هدست مارشال من از طریق بلوتوث وصل می شود. مانیتور من خروجی خود را از واحد پردازش گرافیکی NVIDIA دریافت می کند.

NB! من مارک های چیزهایی را که از آنها استفاده می کنم نه به عنوان تبلیغات، بلکه برای نشان دادن آنچه برای من مفید است ذکر می کنم.

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

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

➀ درک چگونه UI و Desktop Environments روی Debian کار می کنند

➁ نمایش سرورها، پروتکل های ارتباطی نمایشگر و مدیران ویندوز

➂ نصب و پیکربندی BSPWM Windows Manager

➃ نصب مرورگر (مرورگر Brave) و شبیه ساز ترمینال (Alacritty)

➄ درباره گذرگاه دسکتاپ و ارتباطات بین فرآیندی (IPC)

➅ نصب ابزار Status Bar (polybar)، File Manager (thunar)، App Launcher (dmenu)، Notification Daemon (dunst) و Windows Compositor (picom).

موارد زیر بخش فرعی روی پیکربندی دستگاه های صوتی بلوتوث و Wi-Fi تمرکز خواهد کرد.

آخرین مقاله در این سری دبیان به سفارشی سازی نوار وضعیت (Polybar) و پیکربندی کامپوزیتور (picom) اختصاص خواهد داشت. علاوه بر این، من نرم افزار اضافی را نصب خواهم کرد که بخشی جدایی ناپذیر از تنظیمات سیستم من است. در پایان آن مقاله، شما به طور کامل مجهز خواهید شد تا از فایل های پیکربندی من جدا شوید و یک رابط کاربری حتی بهتر از سلیقه خود ایجاد کنید – جایی که فقط تخیل شما محدودیت ها را تعیین می کند!

بیایید شروع کنیم!

➀ درک چگونه UI و Desktop Environments روی Debian کار می کنند

نمی‌دانم با توسعه وب آشنایی دارید یا نه، اما اجازه دهید از آن به عنوان یک مثال انتزاعی برای توضیح نحوه عملکرد Desktop Environments (DE) و نحوه عملکرد رابط کاربری گرافیکی برنامه‌ها در Debian استفاده کنم.

_تصور کنید از یک وب سایت DEV.TO بازدید می کنید و یکی از مقالات من را می خوانید. شما آن را دوست دارید و تصمیم می گیرید به عنوان واکنش به آن یک تک شاخ بدهید. شما روی تک شاخ کلیک می کنید و در لیست واکنش های زیر مقاله من ظاهر می شود. این همان چیزی است که در “سمت خود” می بینید.

اما در پشت صحنه – در سمت سرور – کلیک شما در واقع یک رویداد است. این رویداد یک قطعه کد را در سرور فعال می کند. منطق ممکن است چیزی شبیه به این باشد:

اگر روی “تک شاخ” کلیک شود ← شمارنده واکنش های “تک شاخ” در مقاله من را افزایش دهید (با شناسه منحصر به فرد آن مشخص می شود).پایگاه داده را به روز کنید ← تعداد جدید تک شاخ ها را برای مقاله “idX” در DB بنویسید.بنابراین، هر زمان که شخص دیگری مقاله من را باز کند، تعداد به روز شده تک شاخ هایی که قبلاً به آن داده شده است را می بیند که از DB آمار واکشی می شود._

در اینجا توضیح شما اصلاح شده و مرتبط با برنامه های Debian است که لحن و سبک شما را حفظ می کند:

این چگونه با هر برنامه دبیان مرتبط است؟ دقیقا همینطوره برای مثال File Explorer را در نظر بگیرید. شما این برنامه را باز می کنید، محتویات دایرکتوری های خود را کاوش می کنید، فایلی را جستجو می کنید، یا شاید فایلی را از یک دایرکتوری به فهرست دیگر منتقل می کنید. شما همه این کارها را با ماوس از طریق رابط کاربری گرافیکی انجام می دهید، شاید با کشیدن و رها کردن. اما پشت همه اینها دستوراتی در حال اجراست! این دستورات مشابه دستوراتی هستند که می توانید خودتان به راحتی در ترمینال اجرا کنید: ls، mv، cp، find، و غیره.

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

محیط‌های دسک‌تاپ، برای مثال گنوم غنی از ویژگی‌ها، با وجود اینکه پیچیدگی آن‌ها بسیار زیاد است، هنوز دستوراتی دارند. وقتی روی نماد دوبار کلیک می‌کنید و برنامه گنوم پنجره‌ای را روی صفحه با این برنامه باز می‌کند، می‌توانید آن را بزرگ کنید یا آن را جمع کنید یا آن را به گوشه صفحه بکشید – چه جادویی! آیا گنوم «سیگنال‌هایی» به GPU می‌فرستد تا وقتی چیزی تغییر می‌کند، صفحه را واقعاً سریع رندر کند؟ نه در اینجا نمایش شماتیک “طرفین” درگیر در رابط کاربری سیستم شما است.

درایورهای میان‌افزار و GPU خارج از محدوده این مقاله هستند، توضیح بسیار دقیق در مورد نحوه عملکرد سیستم‌افزار و درایورها در دبیان را می‌توانید اینجا و اینجا پیدا کنید NB! این طرح فقط برای پروتکل ارتباطی X (X11) دقیق است، برای پروتکل Wayland کاملاً متفاوت است، در مورد تفاوت آنها در زیر بخوانید.

GNOME DE چندین مؤلفه کلیدی دارد. مدیر پنجره مسئول عملکرد پنجره های شناور است – به شما امکان می دهد آنها را بکشید، جمع کنید یا گسترش دهید. Compositor از ظاهر این پنجره ها مراقبت می کند و مواردی مانند شفافیت، انیمیشن ها و حاشیه ها را مدیریت می کند.

با این حال، آنچه خارج از GNOME (یا هر DE دیگر) وجود دارد، سرور نمایش است. همه محیط های دسکتاپ به سرور نمایشگر بستگی دارند. این سرور نمایشگر است که تفاوت اساسی بین یک سیستم فقط ترمینال و یک سیستم با رابط گرافیکی ایجاد می کند.

➁ نمایش پروتکل های ارتباطی، نمایش سرورها و مدیران ویندوز

درباره سرورهای نمایش و پروتکل های ارتباطی نمایشگر

وقتی صحبت از نمایش چیزها می شود، دو مورد عمده وجود دارد “فناوری های نمایش” تقریباً توسط تمام سیستم عامل های لینوکس استفاده می شود و همین امر در مورد دبیان نیز صدق می کند. نام آنها X Window System (معروف به X11 یا فقط X) و Wayland است. برای کاهش سردرگمی با اصطلاحات مربوط به موارد X-*: X Window System یک پروتکل ارتباطی صفحه نمایش X است که آخرین نسخه آن 11 است، بنابراین X11 نیز نامیده می شود.

در سیستم پنجره X، خود سرور X به کاربر امکان مدیریت پنجره های باز شده را نمی دهد. در عوض، این کار به برنامه ای به نام مدیر پنجره واگذار می شود.در مورد Wayland، کار به نمایش سروری به نام compositor یا compositing window manager واگذار می شود. (WindowManager – Debian Wiki)

با تمام این اصطلاحات مربوط به X11 و Wayland، پروتکل های ارتباطی نمایش، سرورهای نمایش، سردرگمی کاملاً وجود دارد. بیایید یک مرورگر را به عنوان مثال در نظر بگیریم تا تفاوت را ببینیم. FYI، مرورگرهای مبتنی بر ترمینال وجود دارد! با این حال، بیایید روی یک مرورگر کلاسیک با ویژگی های رابط کاربری گرافیکی مانند برگه های تعاملی، نوار وضعیت و غیره تمرکز کنیم.

وقتی مرورگر را راه‌اندازی می‌کنید – حتی اگر آن را از ترمینال راه‌اندازی کنید (بله، در لینوکس، نیازی نیست روی نماد کلیک کنید یا برنامه را از منو اجرا کنید؛ می‌توانید آن را به خوبی از ترمینال با یک دستور اجرا کنید. brave-browser) – باید روی صفحه نمایش شما ظاهر شود. بر اساس جایی که کلیک می کنید و کاری که انجام می دهید، تصویر روی صفحه شما بلافاصله تغییر می کند.

بدیهی است که برخی از کدها این فرآیند را مدیریت می‌کنند و ورودی‌های شما را مخابره می‌کنند و تعیین می‌کنند چه چیزی باید به عنوان خروجی نمایش داده شود. به عبارت دیگر، یک وجود دارد نمایش پروتکل ارتباطی. و اینجاست که X11 و Wayland از هم جدا می شوند – آنها پروتکل های کاملاً متفاوتی هستند!

Wayland یک پروتکل ارتباطی است که ارتباط بین سرور نمایشگر و کلاینت‌هایش و همچنین اجرای کتابخانه C از آن پروتکل را مشخص می‌کند. سرور نمایشی که از پروتکل Wayland استفاده می کند، Wayland Compositor نامیده می شود، زیرا علاوه بر این، وظیفه یک مدیر پنجره ترکیبی را نیز انجام می دهد. (منبع)

پروتکل هسته X Window System پروتکل پایه سیستم X Window است که یک سیستم پنجره شبکه ای برای نمایشگرهای بیت مپ است که برای ساخت رابط های کاربری گرافیکی بر روی یونیکس، یونیکس مانند و سایر سیستم عامل ها استفاده می شود. سیستم پنجره X بر اساس مدل مشتری-سرور است: یک سرور واحد سخت افزار ورودی/خروجی مانند صفحه نمایش، صفحه کلید و ماوس را کنترل می کند. همه برنامه های کاربردی به عنوان کلاینت عمل می کنند و از طریق سرور با کاربر و سایر مشتریان تعامل دارند. (منبع)

نکته کلیدی از این دو نقل قول نه تنها این است که پروتکل های Wayland و X Window System متفاوت هستند، بلکه این است که آنها بر روی سرورهای نمایش کاملاً متفاوت اجرا می شوند. سرور X.Org برای اجرا بر روی پروتکل ارتباطی X11 طراحی شده است. در همین حال، در مورد Wayland، سرورهای نمایشگر را Compositors Wayland می نامند و بر اساس پروتکل Wayland اجرا می شوند.

با این حال، برای اینکه به شما یک ایده واضح تر از اینکه چگونه سرورهای نمایش و پروتکل های ارتباطی نمایشگر چیزهای مجزا و مجزا هستند، به شما اجازه دهید وجود XWayland را به شما اطلاع دهم. XWayland مجموعه ای از وصله های اعمال شده بر روی پایگاه کد سرور X.Org است که اجازه می دهد تا یک سرور X برای دویدن در بالا پروتکل وی لند. این وصله ها توسط توسعه دهندگان Wayland توسعه یافته و نگهداری می شوند تا با برنامه های X11 در طول انتقال به Wayland سازگاری داشته باشند.

کمی پیشینه در مورد Wayland: بسیار جوانتر از X11 است که بیش از 40 سال پیش ساخته شد. در حالی که X11 در طول زمان به‌روزرسانی شده است، هنوز با معماری قدیمی، کدهای قدیمی و غیره دست و پنجه نرم می‌کند. از سوی دیگر، Wayland کاملاً خارج از اکوسیستم X11، از جمله سرورهای نمایش X.Org ایجاد شده است، بنابراین هیچ وابستگی ندارد. روی آن فناوری قدیمی

با این حال، Wayland کاملاً جدید نیست – فقط سال گذشته منتشر نشد. وضعیت فعلی آن افزایش پذیرش را نشان می دهد. هر دو محیط دسکتاپ GNOME و KDE Plasma به Wayland منتقل شده اند. دبیان به طور یکپارچه از آن پشتیبانی می کند:

Xorg سرور پیش فرض X Window از Debian 4.0 (etch) است. برای دبیان 10 به بعد، پروتکل رابط انسانی پیش فرض Wayland است. (منبع)

برای مدت طولانی، گلوگاه درایورهای اختصاصی انویدیا بود، اما این مشکل حل شده است – انویدیا مشکلات کمتر و کمتری را برای سیستم‌های مبتنی بر Wayland ایجاد می‌کند که نسخه درایور با آن به‌روزرسانی می‌شود.

سرور نمایش با مشتریان خود از طریق پروتکل سرور نمایشگر، یک پروتکل ارتباطی، ارتباط برقرار می کند. سرور نمایشگر یک جزء کلیدی در هر رابط کاربری گرافیکی، به ویژه سیستم پنجره است.

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

بنابراین، من باید نصب یک سرور نمایش را ادامه دهم. و پس از این همه ستایش از Wayland – و شاید شما آن را در Reddit و دیگر انجمن‌ها دیده باشید – من به سراغ پروتکل ارتباطی X11 و سرور X.Org می‌روم. دلیل؟ نرم افزار کلیدی که قصد دارم استفاده کنم، bspwm، مستلزم آن است.

BSPWM یک مدیر پنجره کاشی کاری است. من نمودار قبلی را به روز می کنم تا نحوه انطباق آن با سیستم را تجسم کنم.

بنابراین، bspwm در راه‌اندازی من کار مدیریت ویندوز را انجام می‌دهد – وقتی برنامه‌ای را اجرا می‌کنم، پنجره‌ها را برای برنامه‌ها باز کنید و آنها را برای من ترتیب دهد. کاشی کاری یعنی چی؟

در زمینه مدیران پنجره، کاشی کاری به روشی برای سازماندهی و نمایش پنجره های برنامه بر روی یک صفحه به شیوه ای غیر همپوشانی و شبکه مانند اشاره دارد. بر خلاف سنتی انباشته شدن مدیران پنجره (مانند آنهایی که در GNOME، KDE استفاده می شوند)، که در آن پنجره ها می توانند همپوشانی داشته باشند و نیاز به تغییر اندازه یا جابجایی دستی دارند، یک مدیر پنجره کاشی کاری به صورت خودکار پنجره ها را مرتب می کند تا بهترین استفاده را از فضای صفحه نمایش در دسترس داشته باشد.

bspwm پنجره ها را به صورت برگ های یک درخت دوتایی کامل مرتب می کند.

bspwm بسیار مطابق با “راه دبیان” نرم افزار است – سعی نمی کند عملکردهای زیادی را در خود جذب کند. در عوض، برخی از عملکردها به نرم افزارهای دیگر واگذار می شود. به عنوان مثال، در نمودار بالا، می توانید ببینید picom بالا bspwm. picom یک آهنگساز است که مسئول افزودن جلوه های اضافی به ویندوزهای مدیریت شده است bspwm، مانند شفافیت، انیمیشن ها، و غیره. bspwm می تواند بدون آن کاملاً خوب اجرا شود!

چی bspwm نمی توان بدون آن کار کرد sxhkd نرم افزار این به این دلیل است bspwm هیچ ورودی صفحه کلید یا اشاره گر را به تنهایی کنترل نمی کند. sxhkd برای ترجمه رویدادهای صفحه کلید و اشاره گر به آن مورد نیاز است bspc فراخوان ها bspc برنامه ای است که پیام می فرستد bspwm از طریق سوکت آن

سرور نمایش: Xorg

نصب Xorg به سادگی اجرا است sudo apt install xserver-xorg-core. با این حال، اگر قبلاً درایورهای NVIDIA را با استفاده از nvidia-driver بسته (مورد من)، ممکن است قبلاً نصب شده باشد. در زیر خروجی دستور مورد استفاده برای بررسی اینکه آیا این بسته قبلاً نصب شده است (dpkg -l | grep xserver-xorg*):

را nvidia-driver بسته کشیده شد xserver-xorg-video-nvidia به عنوان یک وابستگی، که، به نوبه خود، به ارمغان آورد xserver-xorg-core بسته بندی در صورتی که سیستم شما این بسته ها را نصب نکرده باشد، کد زیر است:

dpkg -l | grep xserver-xorg*
#if output is empty:
#the X11 server itself without drivers and utilities:
$ sudo apt install xserver-xorg-core
#alternative for “full” xorg server installation:
#sudo apt install xorg

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه داشته باشید که آن را نخواهید داشت startx اگر فقط خود سرور x11 را نصب کنید، دستور دهید، و بنابراین نمی توانید بلافاصله پس از نصب، نمایش گرافیکی را راه اندازی کنید. startx دستور همراه با بسته است xinit.

$ sudo apt install xinit

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از این اگر اجرا کنم startx، سرور نمایش Xorg شروع می شود! صفحه نمایش من اینگونه تغییر می کند:

شما می توانید ضعیف نمایش داده شود nvidia-smi خروجی زیرا ترمینال کمی عجیب و غریب است – از تمام فضای موجود استفاده نمی کند. به هر حال، می توانید برخی از رنگ ها را در قسمت ترمینال مشاهده کنید. شبیه ساز ترمینال پیش فرض استفاده شده است xterm. هرچند “پنجره” خودش را دارد! اما هنوز مدیر پنجره ای وجود ندارد که آن را به درستی مدیریت کند. در اینجا دلیلی وجود دارد که نشان می دهد تقصیر سرور Xorg با پیکربندی بدی نیست که اندازه صفحه نمایش من را درک نمی کند: وقتی اجرا می کنم xrandr، من رزولوشن صحیح را برای مانیتور خود می بینم.

مدیر ویندوز: BSPWM

برای راحتی، برای ادامه با bspwm نصب، به فضای ترمینال خارج از سرور نمایشگر باز می گردم. با این حال، وجود ندارد stopx دستور توقف سرور X با شروع شد startx. بنابراین، من فقط باید فرآیند سرور X را از بین ببرم. وقتی می دوم ps aux | grep X، می توانم PID (شناسه فرآیند) را بازیابی کرده و با kill آن را بکشم:

kill 1191

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

bspwm: نصب

sudo apt install bspwm
#this will install also sxhkd package

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون مدیر ویندوز شما نصب شده است. با این حال، اگر شما اجرا کنید bspwm در ترمینال، کار نخواهد کرد، و اگر سرور نمایشگر را راه اندازی کنید، به احتمال زیاد صفحه سیاهی خواهید دید. این به این دلیل است که مدیر پنجره وجود دارد اما به درستی پیکربندی نشده است. به هر حال می‌توانید آن را امتحان کنید—این به شما می‌آموزد که چگونه یک جلسه TTY جدید را با استفاده از کلیدهای میانبر باز کنید اگر در آینده مشکلی پیش آمد. برای من، Ctrl+Alt+F_X_ است (F2، F3، F4، F5 ecc – هر کلید F جلسه ترمینال جدیدی را باز می‌کند، یا اگر از قبل استفاده می‌شود، می‌توانم بین آنها جابجا شوم). به این ترتیب کنترل دستگاه خود را از دست نمی دهید و مجبور نیستید از برق اضطراری استفاده کنید.

پیکربندی bspwm: دایرکتوری پیکربندی

بنابراین، بیایید پیکربندی کنیم bspwm و متحد آن sxhkd! این کار از طریق ایجاد فایل های پیکربندی برای آنها انجام می شود. اما کجا؟

فایل پیکربندی پیش فرض $XDG_CONFIG_HOME/bspwm/bspwmrc است: این به سادگی یک اسکریپت پوسته است که bspc را فراخوانی می کند. (منبع: صفحه BSPWM GitHub)

$XDG_CONFIG_HOME یک متغیر محیطی است، بنابراین می توانید مقدار آن را با اجرای echo $XDG_CONFIG_HOME بررسی کنید. من کاملا مطمئن هستم که خروجی به احتمال زیاد خالی خواهد بود. چرا؟ اول از همه، XDG چیست؟

XDG در ابتدا مخفف “X Desktop Group” بود، اما اکنون مخفف “Cross-Desktop Group” است. وقتی نوبت به محیط های دسکتاپ مانند GNOME، XFCE، KDE Plasma و غیره می رسد، در واقع می توانید بیش از یک مورد را روی سیستم خود نصب کنید و می توانید بین آنها جابجا شوید. با این حال، توسعه دهندگان آنها باید تا حدودی هماهنگ باشند – به خصوص در مورد دایرکتوری فایل های پیکربندی – در غیر این صورت، سیستم می تواند به یک آشفتگی تبدیل شود. اینجاست که freedesktop.org برای کمک به شما وارد عمل می شود.

freedesktop.org میزبان توسعه نرم افزار منبع باز و رایگان است که بر قابلیت همکاری و فناوری مشترک برای سیستم های گرافیکی و دسکتاپ منبع باز متمرکز است. ما خودمان دسکتاپ تولید نمی کنیم، اما هدف ما کمک به دیگران برای انجام این کار است. (منبع)

و به عنوان بخشی از این تلاش قابلیت همکاری، سندی به نام XDG Base Directory Specification وجود دارد.

در این مشخصات، جزئیات بیشتری در مورد XDG_CONFIG_HOME $ پیدا خواهید کرد:

$XDG_CONFIG_HOME دایرکتوری پایه ای را تعریف می کند که فایل های پیکربندی خاص کاربر باید در آن ذخیره شوند. اگر $XDG_CONFIG_HOME تنظیم نشده یا خالی باشد، باید از یک پیش‌فرض برابر با $HOME/.config استفاده شود. (منبع)

اگر $XDG_CONFIG_HOME را تنظیم نکرده باشید (یعنی خروجی echo $XDG_CONFIG_HOME خالی است)، bspwm پیکربندی آن را در جستجو خواهد کرد $HOME/.config/bspwm/. دایرکتوری HOME کاربر شما باید به طور پیش فرض تنظیم شود زیرا یکی از متغیرهای استاندارد در محیط های لینوکس است و می توانید با اجرای آن را بررسی کنید echo $HOME. (وقتی می دوید cd، دقیقاً به دلیل این متغیر شما را به فهرست اصلی شما می آورد.)

می خواهم توجه شما را به دو خروجی آخر از اسکرین شات جلب کنم. کاری که من انجام دادم این است: من به عنوان کاربر اصلی وارد شدم و همانطور که می بینید، کاربر اصلی HOME دایرکتوری متفاوت است!

چرا این مهم است؟ خوب، اگر فایل های پیکربندی BSPWM را در خود قرار دهید کاربر فعلی دایرکتوری اصلی، سایر کاربران به رابط کاربری با پیکربندی زیبا (با استفاده از bspwmفایل های پیکربندی 's and other tools' که بعداً به شما نشان خواهم داد). کاربر ریشه نیز دسترسی نخواهد داشت.

بنابراین، اگر تنظیم نکنید چه اتفاقی می‌افتد $XDG_CONFIG_HOME و فایل های پیکربندی BSPWM و SXHKD را در آن قرار دهید .config در فهرست اصلی کاربر شما (/home//.config)؟ در اینجا اتفاقی خواهد افتاد:

هنگامی که به عنوان کاربر پیش فرض خود وارد می شوید و سرور نمایش X را راه اندازی کنید، تنظیمات پیکربندی شده خود را خواهید دید.

وقتی به عنوان root وارد می شوید و سرور نمایش را راه اندازی کنید، یک صفحه سیاه خواهید دید.

هنگامی که شما به عنوان هر کاربر دیگری وارد شوید، آنها همچنین یک صفحه سیاه می بینند.

راه حل برای جلوگیری از این شرایط – اگر واقعاً به یک پیکربندی مشترک نیاز دارید – این است که فایل های پیکربندی را در جایی قرار دهید خارج از فهرست اصلی هر کاربر.

وقتی صحبت از پیکربندی سرور نمایش X می شود، یک مکان استاندارد برای این وجود دارد: /etc/xdg. با قرار دادن فایل های پیکربندی در آنجا، آنها در سراسر سیستم برای همه کاربران (برای خواندن!؛ کاربری بدون sudo امتیازها نمی توانند آنها را تغییر دهند.

برای نشان دادن در این مقاله، از آن استفاده خواهم کرد /etc/xdg برای پیکربندی های BSPWM و SXHKD. حتی اگر می توان متغیر محیطی XDG_CONFIG_HOME را برای اشاره به این دایرکتوری تنظیم کرد، به دلیل این که بسیاری از برنامه ها سعی می کنند چیزی در آنجا بنویسند ترجیح نمی دهم اگر در حین نصب این متغیر $XDG_CONFIG_HOME شناسایی شود.

خوشبختانه هر دو sxhkd و bspwm هنگام اجرا گزینه “-c” را داشته باشید. این گزینه برای اشاره به مکان “سفارشی” فایل های پیکربندی است.

پیکربندی bspwm: فایل های پیکربندی

پس از نصب bspwm می توانید نمونه های آن را پیدا کنید sxhkd's و bspwmپیکربندی های پیش فرض که می تواند به عنوان نقطه شروع برای پیکربندی های سفارشی شما استفاده شود. هر دو فایل پیکربندی را می توان در آن یافت /usr/share/doc/bspwm/examples.

در اینجا می خواهم چند اصطلاح عامیانه مرتبط با کاری که می خواهم انجام دهم را معرفی کنم. فرآیند سفارشی سازی سیستم عامل لینوکس اغلب نامیده می شودرایزنی لینوکساین اصطلاح به طور گسترده در Reddit استفاده می‌شود، به‌ویژه در یک subreddit که به آن اختصاص داده شده است، که در آن افراد تنظیمات خود را به اشتراک می‌گذارند. اغلب، زمانی که یک راه‌اندازی به‌ویژه جالب است، نظرات دیگران را می‌بینید که درخواست می‌کنند «فایل‌های نقطه‌ای» را به اشتراک بگذارند.

اصطلاح «فایل‌های نقطه‌ای» در واقع به اشتراک‌گذاری پیکربندی‌های مورد استفاده برای دستیابی به یک تنظیمات UI خاص اشاره دارد. با این حال، «فایل‌های نقطه‌ای» (یا به عبارت صحیح‌تر، DotFiles) فقط عامیانه نیست – حتی یک صفحه ویکی دبیان نیز وجود دارد که به DotFiles اختصاص داده شده است.

چرا DotFiles به این نام خوانده می شود؟ قبلاً اشاره کردم، مسیر پیش‌فرض پیکربندی‌های BSPWM $HOME/.config است که یک پوشه است، نه یک فایل. اما نام آن با یک نقطه (.) شروع می شود. اگر پیمایش کنید (cd) را در فهرست اصلی خود قرار دهید و محتویات را با آن فهرست کنید ls، فقط فایل ها و دایرکتوری های معمولی را خواهید دید. با این حال، اگر شما اجرا کنید ls -a، چیزهای بیشتری خواهید دید، به خصوص فایل ها و دایرکتوری هایی را خواهید دید که با (.) شروع می شوند.

برای جلوگیری از طولانی شدن این مقاله، «DotFiles» خود را نیز در GitHub به اشتراک خواهم گذاشت.

بیایید پیکربندی BSPWM را ادامه دهیم. شما باید «نمونه‌هایی» از پیکربندی را در فهرستی که BSPWM آن را جستجو می‌کند کپی کنید. اگر شما خوب هستید، این پیکربندی فقط برای کاربر فعلی شما کار می کند، باید زیر شاخه ها را در آن ایجاد کنید $HOME/.config و فایل های پیکربندی را به روش صحیح در آنجا قرار دهید. من فایل های پیکربندی را در آن نگه خواهم داشت /etc/xdg.

$ cd (this will teleport you to your $HOME directory)
# you can double check
$ pwd
$ ls -a
#if you do not see .config directory in the output, you will have to create it
$ mkdir .config
#create a directory for bspwm config
$ mkdir .config/bspwm
#create a SEPARATE directory for sxhkd config
$ mkdir .config/sxhkd
# copy configuration files there:
$ cp /usr/share/doc/bspwm/examples/bspwmrc ./config/bspwm/
$ cp /usr/share/doc/bspwm/examples/sxhkdrc ./config/sxhkd/
#ALternative: I do slightly different – i copy configurations to /etc/xdg
#NB! you do not have to do both, you have to choose ONE source of your configuration files.
$ cd /etc/xdg
$ sudo mkdir bspwm #I can keep files in the same directory, as I will be pointing sxhkd and bspwm to their config files manually
$ sudo cp /usr/share/doc/bspwm/examples/bspwmrc bspwm/
$ sudo cp /usr/share/doc/bspwm/examples/sxhkdrc bspwm/

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون، می توانم شروع به اصلاح آنها کنم. من انتخاب کرده ام که پیکربندی BSPWM برای همه کاربران قابل دسترسی باشد، بنابراین آنها را خارج از فهرست اصلی کاربر خود قرار دادم. من باید استفاده کنم sudo- امتیازات بالا – برای اصلاح این فایل‌های موجود در /etc دایرکتوری اگر تنظیمات خود را در آن نگه دارید $HOME/.config، شما نیاز ندارید sudo!

این مثال از bspwmrc پیکربندی:

من با اصلاح آن شروع می کنم.

$ pwd
/etc/xdg #<–I am here
$ cd bspwm
$ sudo vim bspwmrc
#Let’s see what is there:
#———-First Line———–#
pgrep -x sxhkd > /dev/null || sxhkd &
# this command ensures that sxhkd is running along bspwm
#pgrep -x searches for processes sxhkd, if sxhkd is already running, pgrep exits with a success status
#> /dev/null discards the standard output of pgrep. This means the command doesn’t clutter your terminal with process IDs.
#|| – a logical OR operator. The command after the || only runs if previous command, pgrep, did not find sxhkd process. In such case, it starts sxhkd & in the background (& means run in the background).
#As I will not be keeping configiration files in the default directory, I have to inform sxhkd about where its configuration file is when it is launched:
#pgrep -x sxhkd > /dev/null || sxhkd -c “/etc/xdg/bspwm/sxhkdrc” &
#———-Second Line———–#
bspc monitor -d I II III …
# this line sets up “or workspaces”, you can perceive them as tabs in the browser. You can navigate between them and have various applications opened. To avoid cluttering, I stop on 5 workspaces. There are Roman numbers by default, but you can name them as you want, 1,2,3 ecc or A,B,C… If you install fonts with icons later, you can use even Icons!
# I just trim everything after V.
bspc monitor -d I II III IV V
#NB! If you have more than one monitors, you can use separate bspc monitor commands to assign different sets of workspaces to each monitor.
#bspc monitor HDMI-1 -d I II III
#bspc monitor XX-1 -d IV V VI

#———-Lines 3-7 ———–#
bspc config …
#these lines are about default configurations about arrangements of windows, for now i leave them as they are

#———-Lines 8-12 ———–#
bspc rule -a …
#these lines set some specific rules for programs. I comment them out to keep the syntaxis for later, but I definitely do not need these exact rules:
#bspc rule -a …
#bspc rule -a …
#bspc rule -a …
# …

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مرحله بعد، من به سمت اصلاح حرکت می کنم sxhkdrc. در این فایل پیکربندی، من باید ترکیبات کلید میانبر را تنظیم کنم که برنامه های باز کردن را برای من مدیریت کند.

➃ نصب مرورگر (مرورگر Brave) و شبیه ساز ترمینال (Alacritty)

برای شروع، مهم ترین برنامه ای که نیاز دارم یک شبیه ساز ترمینال است. من از Alacritty استفاده خواهم کرد. من همچنین به یک مرورگر نیاز دارم و مورد علاقه من Brave Browser است، بنابراین ابتدا باید آنها را نصب کنم.

NB! Alacritty فقط می تواند بر روی یک GPU اجرا شود، بنابراین اگر به دلایلی مشکل دارد، گزینه دیگری مانند Terminator را در نظر بگیرید. یکی دیگر از گزینه های محبوب ترمینال Kitty است.

#the current Alacritty version is 0.14. To get it, you will have to build Alacritty from source.
#this command will install for me alacritty v. 0.11,
$ sudo apt install alacritty

#to install brave browser, I will follow official installation guide, which included adding PPA to my apt sources list! I do it, because I trust Brave Browser, so there is no reason to not trust their PPA. However, if you do not share my point of view, go for something like Firefox.
$ sudo apt install curl
# the following command will fetch the signing key and store it in /usr/share/keyrings/
$ sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
#this command will add a PPA to the sources list from which apt update & upgrade system packages.
$ echo “deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main”|sudo tee /etc/apt/sources.list.d/brave-browser-release.list
#to inform apt about new source, you have to run this:
$ sudo apt update
#now you can install brave browser from the repository of brave browser
$ sudo apt install brave-browser

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا باید برم sxhkd فایل پیکربندی، sxhkdrc، و میانبرهای کلید میانبر را اضافه کنید که با این دو برنامه برای من پنجره ها را باز می کند!

$ pwd
/etc/xdg #<–I am here
$ cd bspwm

#if you placed config files in $HOME/.config:
#$ cd
#$ cd .config/sxhkd
$ sudo vim sxhkdrc #if you are in $HOME/… no need for sudo!
# I replace urxvt terminal emulator with alacritty
super + Return
alacritty
# I add a new shortcut for Brave Browser:
super + b
brave-browser
#A bit on syntaxis:
# – “super” is “Windows” key on your keyboard, in Linux it is called super
# – “+” stands for which key you will press together with “super” key
# – “Return” is Enter key
# – “b” is just a letter of my choice, notice, it is minuscle
# – indented command – this command should be exactly the same that is in use when you launch any app from terminal. If for launching apps before you used only Desktop icons, you will have to google a bit to find the exact commands.

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همه چیز تقریباً آماده است! تنها چیزی که باقی می ماند این است که به سرور نمایش X و پروتکل ارتباطی X11 بگویید که کدام ویندوز منیجر را باید راه اندازی کنند! برای انجام این کار، باید یک فایل پیکربندی دیگر ایجاد کنید .xinitrc. این فایل باید در فهرست اصلی شما باشد نه در .config، فقط در $HOME دایرکتوری

# “teleport” to your home directory
$ cd
# check for the existence of .xinitrc file
$ ls -a
#if it is not there (most probably), you will have to create one
$ touch .xinitrc

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

باشه، حالا .xinitrc فایل ایجاد می شود، اما خالی است. در داخل، من باید فقط چند خط اضافه کنم تا به راه اندازی اشاره کنم bspwm مدیر پنجره

این فایل به صورت خودکار توسط startx دستور، که یک جلسه X گرافیکی را شروع می کند.

NB! در محیط های دسکتاپ کلاسیک مانند GNOME، KDE و غیره، فرآیند شروع یک جلسه گرافیکی توسط یک نمایشگر مدیریت می شود. Display Manager یک برنامه گرافیکی رابط کاربری است که با فرم ورود به سیستم می‌بینید که از شما می‌خواهد نام کاربری کاربری که می‌خواهید به عنوان وارد شوید و رمز عبور مربوطه را وارد کنید. به عنوان مثال:

مدیر نمایش اوبونتو

با این حال، مدیران نمایش همیشه مبتنی بر رابط کاربری گرافیکی نیستند. گاهی اوقات آنها TUI (واسط کاربری متنی) هستند:
مدیر نمایش Ly

انتخاب بسیار معروف برای تنظیمات رابط کاربری سفارشی LightDM است که یک رابط کاربری گرافیکی مینیمالیستی برای ورود به سیستم در حال حرکت ارائه می دهد. با این حال، مدیر نمایش اختیاری است و یک لایه امنیتی اضافی اضافه نمی کند. شما می توانید به سادگی از ترمینال وارد شوید و سپس از آن استفاده کنید startx دستور شروع یک جلسه گرافیکی X. با این حال، یک چیز وجود دارد که مدیران نمایش به طور خودکار آن را مدیریت می کنند، که باید آن را به صورت دستی پیکربندی کنید…

برای اجرای دستور X11 bspwm چه زمانی startx فرمان راه اندازی شده است فقط exec bspwm. با این حال، برای اینکه همه برنامه های شما با رابط کاربری گرافیکی به درستی کار کنند، باید بازیکن دیگری در این امر دخیل باشد. و این شرکت‌کننده دیگر D-Bus با نام اتوبوس دسکتاپ است.

➄ درباره گذرگاه دسکتاپ و ارتباطات بین فرآیندی (IPC)

D-Bus یک سیستم گذرگاه پیام است، روشی ساده برای صحبت برنامه‌ها با یکدیگر. علاوه بر ارتباطات بین فرآیندی، D-Bus به هماهنگ کردن چرخه حیات فرآیند کمک می کند. کدگذاری یک برنامه یا دیمون “تک نمونه” و راه‌اندازی برنامه‌ها و دیمون‌ها در صورت نیاز در صورت نیاز به خدمات آن‌ها را ساده و قابل اعتماد می‌کند.

D-Bus فی نفسه یک شبح است، به این معنی که فرآیندی است که در پس‌زمینه اجرا می‌شود. در دبیان 12 توسط مدیریت می شود systemd. دیمون D-Bus باید از قبل نصب شده و راه‌اندازی شده باشد. می توانید آن را بررسی کنید systemctl status dbus. با این حال، اگر اجرا کنید، خروجی کاملاً متفاوتی وجود دارد systemctl –user status dbus:

بنابراین، به طور پیش فرض، D-Bus سیستم در حالی که D-Bus، Message Bus راه‌اندازی می‌شود کاربر اتوبوس پیام کار نمی کند!

اراده شما bspwm راه اندازی کار حتی مثل این؟ بله. آیا می توانید برنامه ها را راه اندازی کنید، بله، به احتمال زیاد. با این حال، در اینجا گزارش مرورگر Brave زمانی که من به سادگی جلسه X را با آن شروع کردم، آمده است exec bspwm:

ببینید: Brave در حال شکایت است (در پنجره ترمینال سمت چپ، می توانید خطاهای تکراری زیادی را در رابطه با اتوبوس مشاهده کنید: ERRROR:bus.cc: Failed to connect to the bus) اما در حال اجرا برای بسیاری از برنامه‌ها، راه‌اندازی و اجرای D-Bus Message Bus برای جلسه X که در آن اجرا می‌شوند بسیار مهم است، بنابراین به درستی کار نخواهند کرد زیرا از آن برای برقراری ارتباط با برنامه‌های دیگر استفاده می‌کنند!

داشتن گذرگاه پیام D-Bus در حال اجرا برای جلسه، پیکربندی بی اهمیت نیست. همانطور که اشاره کردم، گذرگاه پیام D-Bus سیستم درست از ابتدای فرآیند راه‌اندازی راه‌اندازی می‌شود، زیرا یکی از خدمات بسیار مهم systemd است.

هر جلسه ای که شروع می کنید، وقتی به درستی پیکربندی شود، باید دارای یک DBUS_SESSION_BUS_ADDRESS. هنگامی که شما در یک TTY بوت می شوید (مانند مورد من، بدون محیط GUI)، جلسه شروع می شود و systemd آن را اداره می کند. بنابراین، من این را می بینم:

من به عنوان کاربر خود وارد شدم، alisa، و به طور پیش فرض، دبیان دارای این است dbus-user-session بسته نصب شده در نتیجه، من آن را دارم DBUS_SESSION_BUS_ADDRESS مجموعه متغیر، که حیاتی است. بدون این متغیر محیطی، برنامه هایی که شروع می کنید از جلسه D-Bus بی اطلاع هستند. بنابراین، هدف داشتن این مجموعه متغیر است (echo $DBUS_SESSION_BUS_ADDRESS نباید خالی باشد!).

وقتی به کاربر اصلی با su -، که هیچ متغیر محیط کاربری را حفظ نمی کند، می توانید ببینید که هیچ آدرس D-Bus وجود ندارد. با این حال، اگر استفاده کنم su بدون -، وضعیت متفاوت است. لطفاً توجه داشته باشید که این یک مثال ضعیف است زیرا چنین روشی برای ورود به سیستم خیلی کامل نیست و معمولاً برای مقاصد دیگر استفاده می شود. In general, systemd user space and D-Bus User Message Bus configuration is quite complicated, so my explanation here may provide misleading information.

هنگامی که یک نمایشگر سرور X را با startx راه اندازی می کنید، یک جلسه گرافیکی را شروع می کنید و رفتار متفاوتی دارد. نیازی به ورود به سیستم ندارد، بنابراین systemd به طور خودکار یک جلسه D-Bus را برای آن شروع نمی کند.

شاید فکر کنید بعد از ورود به جلسه گرافیکی می توانید به صورت دستی اجرا کنید systemctl –user start dbus برای شروع جلسه D-Bus. اما این کار نخواهد کرد زیرا به این سادگی نیست. هنگامی که آن را به صورت دستی راه اندازی می کنید، اجرا می شود و یک سوکت ایجاد می شود. با این حال، systemd برای کاربران متفاوت رفتار می کند، و شما باید مراحل مختلفی را انجام دهید تا به درستی کار کند، تنها با استفاده از اهرم systemd قابلیت ها و dbus-user-session بسته بندی

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

اگر از راهنمایی مانند این پیروی کنید، در نهایت با یک جلسه کاربر D-Bus کاربر در تمام جلسات و کاربران به اشتراک گذاشته شده است. در حالی که این رویکرد کاربردی است، می‌توان آن را غیربهینه و نه دقیقاً «راه دبیان» در نظر گرفت، حتی اگر بسیاری از محیط‌های دسکتاپ این مسیر را انتخاب کنند. برای جزئیات بیشتر می توانید به این ارتباط مراجعه کنید.

با این حال، اگر مایل به تغییر دادن نیستید systemdخدمات و تنظیمات سوکت، حتی در اینجا، دبیان شما را پوشش داده است! هدف این است که گذرگاه پیام کاربر D-Bus را برای یک جلسه گرافیکی BSPWM راه اندازی شود (با exec bspwm). یک ابزار خط فرمان وجود دارد که این مورد را مدیریت می کند: dbus-launch. این ابزار بخشی از Debian است dbus-x11بسته بندی

بسته: dbus-x11سیستم پیام رسانی بین پردازشی ساده (X11 deps)D-Bus یک گذرگاه پیام است که برای ارسال پیام بین برنامه ها استفاده می شود. از نظر مفهومی، از نظر پیچیدگی جایی بین سوکت های خام و CORBA قرار می گیرد.این بسته حاوی ابزار dbus-launch است که به‌طور خودکار یک گذرگاه جلسه D-Bus را در هر نمایشگر X11 برای هر کاربر راه‌اندازی می‌کند. اگر بسته dbus-user-session نیز نصب شده باشد، بر این بسته اولویت دارد. منبع

نصبش میکنم:

$ sudo apt install dbus-x11

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر در گوگل جستجو کرده اید bspwm نصب و پیکربندی، ممکن است با خطی که باید به خط خود اضافه کنید مواجه شده اید .xinitrc برای شروع bspwm هنگامی که جلسه گرافیکی راه اندازی می شود:exec dbus-launch –exit-with-x11 bspwm. با این حال، آن طور که باید باشد، این کاملاً صحیح نیست exec dbus-launch –exit-with-session bspwm.

من اصلاح می کنم .xinitrc فایل

$ cd
$ vim .xinitrc
exec dbus-launch –exit-with-session bspwm -c “/etc/xdg/bspwm/bspwmrc”
#if you decided to place the configuration of bspwm in $HOME/.config, you do not need to specify path to configuration file!
# exec dbus-launch –exit-with-session bspwm

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

dbus-launch –exit-with-session bspwm -c “/etc/xdg/bspwm/bspwmrc” برای من خوب کار می کند زیرا من فقط دستور راه اندازی BSPWM را در آن گنجانده ام .xinitrc. تمام برنامه های دیگری که بخشی از جلسه هستند و در پس زمینه اجرا می شوند از پیکربندی BSPWM شروع می شوند.

با این حال، اگر می خواهید آنها را به طور جداگانه شروع کنید، به یک دستور کمی متفاوت نیاز دارید: exec dbus-launch –exit-with-session ~/.xinitrc.

در مورد من، برای اطمینان از مرتب بودن کامل، کمی جلوتر می روم و بررسی D-Bus User Bus را اضافه می کنم:

$ cd
$ vim .xinitr
if [ -z “$DBUS_SESSION_BUS_ADDRESS” ]; then
exec dbus-launch –exit-with-session bspwm -c “/etc/xdg/bspwm/bspwmrc” exit
else
exec dbus-launch –exit-with-session bspwm -c “/etc/xdg/bspwm/bspwmrc”
fi

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نهایت، وقت آن است که آن را امتحان کنید! در ترمینال دستور را اجرا می کنم startx:

وویلا!

بنابراین، همه چیز با عملکرد پایه آماده است! اکنون، من فقط باید با نصب نرم افزار اضافی ادامه دهم تا تنظیمات رابط کاربری سفارشی خود را تکمیل کنم!

➅ نصب ابزار Status Bar (polybar)، File Manager (thunar)، App Launcher (dmenu)، Notification Daemon (dunst) و Windows Compositor (picom).

نوار وضعیت: پلی بار

اول، من به یک نوار وضعیت نیاز دارم. در زمینه یک محیط دسکتاپ، یک نوار وضعیت به موارد زیر اشاره دارد:

برای این کار از Polybar استفاده خواهم کرد که با:

sudo apt install polybar

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

اسناد دقیق در مورد سفارشی سازی وجود دارد: Polybar Wiki. مانند BSPWM و SXHKD، Polybar از طریق یک فایل پیکربندی قابل تنظیم است:

به‌طور پیش‌فرض، پلی‌بار فایل پیکربندی را از ~/.config/polybar/config.ini، /etc/xdg/polybar/config.ini، یا /etc/polybar/config.ini بارگیری می‌کند.اگر نام نوار را مشخص نکنید و فایل پیکربندی شما فقط شامل یک نوار باشد، پلی بار آن نوار را نمایش می دهد. در غیر این صورت باید به صراحت نام نوار را مشخص کنید. (منبع)

پس از نصب، فایل تنظیمات پیش‌فرض را می‌توانید در این آدرس پیدا کنید /etc/polybar/config.ini. در حال حاضر، پیکربندی پیش فرض را همانطور که هست می گذارم. من قصد دارم آن را در مقاله بعدی تغییر دهم، با تمرکز بر عملکرد اصلی که می خواهم اضافه یا تنظیم کنم. این شامل دکمه های نوار وضعیت برای مدیریت اتصالات Wi-Fi، حجم صدا، اتصالات بلوتوث و نور پس زمینه صفحه نمایش است.

در واقع، من قصد دارم دو نوار وضعیت Polybar داشته باشم – یکی در بالا و دیگری در پایین صفحه. شما می توانید اشیایی مانند آیکون ها یا حتی برچسب های متنی ساده (به عنوان دکمه) در Polybar ایجاد کنید و اسکریپت های پوسته را به آنها وصل کنید. این اسکریپت ها عملکردی را که با فشار دادن دکمه، کلیک ماوس، کلیدهای جهت دار یا حتی چرخ ماوس ایجاد می شود، مشخص می کنند!

دیمون اعلان: dunst

یک شبح اعلان نمایش اعلان‌ها، مانند پیام‌های خطا یا هشدارها را کنترل می‌کند.

Dunst یک شبح اعلان بسیار سبک و قابل تنظیم است. می‌توان آن را برای نمایش اعلان‌های مفید مختلف، مانند پیام‌های ایمیل، رسانه‌های اجتماعی و موارد دیگر پیکربندی کرد. شما می توانید آن را با:

sudo apt install dunst

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی پیش فرض در / قرار خواهد گرفتetc/xdg/dunst/dunstrc. اگر ترجیح می دهید تمام تنظیمات را در آن نگه دارید $HOME/.config، باید آن را با استفاده از:

$ cd
$ mkdir .config/dunst
$ cp /etc/xdg/dunst/dunstrc $HOME/.config/dunst

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آهنگساز: picom

اگرچه پیکربندی BSPWM امکان کنترل بر روی پنجره ها را فراهم می کند، اما در درجه اول بر نحوه قرارگیری آنها و مکان نمایش پنجره های جدید تمرکز می کند. ظاهر ویندوز، با این حال، توسط یک آهنگساز مدیریت می شود. در مورد من، این Picom خواهد بود.

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

مانند BSPWM، SXHKD و Polybar، Picom نیز می تواند از طریق فایل پیکربندی آن سفارشی شود:

اگر پشتیبانی libconfig در آن کامپایل شده باشد، picom می تواند از یک فایل پیکربندی بخواند. اگر -config استفاده نشود، picom به دنبال یک فایل پیکربندی در $XDG_CONFIG_HOME/picom.conf (~/.config/picom.conf، معمولاً) می‌گردد. $XDG_CONFIG_HOME/picom/picom.conf، سپس $XDG_CONFIG_DIRS/picom.conf (اغلب /etc/xdg/picom.conf)، سپس $XDG_CONFIG_DIRS/picom/picom.conf. (منبع)

نمونه پیکربندی پیش فرض را می توان در اینجا یافت /usr/share/doc/picom/examples/picom.sample.config. من آن را در سایر فایل‌های پیکربندی خود کپی می‌کنم تا مرتب و با هم ذخیره شوند.

$ cd /etc/xdg/bspwm
#alternatively, if you keep all configs in $HOME/.config:
# $ cd
# $ cd .config
# $ mkdir picom
# $ cp /usr/share/doc/picom/examples/picom.sample.config picom/
# $ mv picom/picom.sample.config picom/picom.config
$ sudo cp /usr/share/doc/picom/examples/picom.sample.config .
$ sudo mv picom.sample.config picom.config

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر سه ابزار – Polybar، Dunst و Picom – باید در پس‌زمینه اجرا شوند تا در صورت درخواست راه‌اندازی شوند. برای اطمینان از این امر، من باید فایل پیکربندی BSPWM را تغییر دهم تا نه تنها SXHKD همراه با BSPWM راه اندازی شود، بلکه این افراد نیز راه اندازی شوند.

$ cd /etc/xdg/bspwm
# if you decided to keep configurations in $HOME/.config:
#$ cd
#$ cd .config/bspwm
$ sudo vim bspwmrc #you do not need sudo if you are in $HOME
#I add this lines after pgrep -x sxhkd….
# to launch polybar:
# terminate in “elegant” way all running polybarS, if there are some (alternative to kill)
polybar-msg cmd quit
# require logging of polybar
echo “—” | tee -a /tmp/polybar.log
# launch polybar in background and start logging. As for now I am using default polybar config, the command polybar will automatically fetch it, if the configuration is placed in one of the places, where polybar searches it (in my case it is in /etc/polybar/config.ini)
polybar 2>&1 | tee -a /tmp/polybar.log & disown

#launching picom
# for picom i specify path to configuration
pgrep -x picom > /dev/null || picom –config /etc/xdg/bspwm/picom.conf &

#launching dunst
pgrep -x dunst > /dev/null || dunst &

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مدیر فایل: Thunar

مدیر فایل کسی است که شما آن را برای کاوش در رایانه شخصی خود، یافتن فایل ها، انتقال/کپی کردن فایل ها و تعامل با فایل ها از درایوهای قلم USB باز می کنید:

من از Thunar استفاده می کنم که با آن قابل نصب است

sudo apt install thunar

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه‌انداز برنامه: dmenu

App Launcher ابزاری است که برنامه های نصب شده را نمایش می دهد و به شما امکان می دهد آنها را با کلیک ماوس راه اندازی کنید. علاوه بر این، یک ابزار جستجو برای یافتن سریع برنامه مورد نظر شما فراهم می کند.

در محیط‌های دسکتاپ کلاسیک، یک راه‌انداز برنامه معمولاً چیزی شبیه به این است – برای مثال، راه‌انداز برنامه GNOME:

من از dmenu استفاده می کنم. این راه‌انداز برنامه در مقایسه با راه‌انداز برنامه GNOME که در بالا نمایش داده شد، بسیار مینیمالیستی‌تر است. همه آیکون ها یا سایر موارد اضافی را نمایش نمی دهد، اما به شما امکان می دهد به طور موثر جستجو کنید و برنامه ها را با یک کلیک راه اندازی کنید.

من این رویکرد مینیمالیستی را ترجیح می دهم زیرا به ندرت از لانچر برنامه استفاده می کنم. بیشتر اوقات، من برنامه ها را از خط فرمان یا با استفاده از کلیدهای SXHKD راه اندازی می کنم، که برای برنامه هایی که اغلب استفاده می کنم پیکربندی می کنم. dmenu با این دستور قابل نصب است:

sudo apt install suckless-tools

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

من باید Thunar و dmenu را به پیکربندی SXHKD اضافه کنم تا کلیدهای میانبر را برای راه اندازی آنها متصل کنم.

$ cd /etc/xdg/bspwm
# if you decided to keep configurations in $HOME/.config:
#$ cd
#$ cd .config/sxhkd
$ sudo vim sxhkdrc #you do not need sudo if you are in $HOME
#I add this lines only
# file manger
super + f
thunar
#dmenu is already there, if you kept the default config!
# super + @space
# dmenu_run

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اینجا هستیم! اکنون، اگر startx را از ترمینال اجرا کنم، تمام تنظیمات من شروع می شود:

در بالا: نوار وضعیت Polybar. در سمت راست: Thunar، Brave Browser

در بالا، نوار وضعیت پلی بار پوشانده شده است: راه‌انداز برنامه -dmenu

VOILA!

ایجاد یک رابط کاربری مینیمالیستی سفارشی در دبیان: از سرور نمایشگر خالی تا رابط کاربری کاملاً کاربردی با BSPWM و Polybar.


در قسمت‌های قبلی این سری مقالات دبیان 12 (4 قسمت)، جزئیات زیادی را در مورد توزیع دبیان توضیح دادم – چه چیزی دبیان ارائه می‌کند، چگونه نرم‌افزار را بسته‌بندی می‌کند، چگونه دبیان را نصب کنید، و چگونه سیستم دبیان خود را به روشی امن مدیریت کنید. . اگر تا به حال از آن لذت برده اید و من کنجکاوی شما را در مورد دبیان برانگیخته ام، بیایید به جالب ترین بخش برویم – ایجاد رابط کاربری سفارشی دبیان!


در قسمت‌های 3A و 3B، ممکن است متوجه شده باشید که تمام اسکرین‌شات‌هایی که ارائه کردم، فقط متن سفید روی صفحه سیاه هستند. این به این دلیل است که من یک نسخه بسیار کم از دبیان را نصب کردم که در ابتدا فقط ابزارهای استاندارد سیستم را داشت و هیچ راهی برای اجرای هیچ برنامه رابط کاربری گرافیکی نداشت، حتی اگر بخواهم. چرا؟ مشکلی در درایورهای گرافیک وجود داشت؟ نه من فقط یک کارت گرافیک دارم – NVIDIA (CPU اینتل من کارت گرافیک یکپارچه ندارد)، من درایورهای Nouveau داشت برای پردازنده گرافیکی NVIDIA از ابتدا.

ضمنا من درایورهای اختصاصی انویدیا رو نصب کردم. من این فرآیند را در این مقاله به تفصیل شرح داده‌ام (نمی‌توانم آن را در اینجا ادغام کنم زیرا این مقاله را فوق‌العاده طولانی می‌کند).

اگر با سیستم های لینوکس آشنایی دارید، ممکن است در مورد طعم های توزیع اطلاعات داشته باشید. آنها اساساً محیط های دسکتاپ (DE) متفاوتی هستند که با توزیع مورد نظر شما همراه شده اند. بنابراین، اگر شما دانلود کنید .iso با یک طعم، و نصب سیستم، محیط دسکتاپ را که انتخاب کرده اید خواهید داشت. معروف ترین آنها GNOME، XFCE و KDE Plasma هستند. با این حال، در حین نصب، هیچ یک از آنها را روی سیستم عامل خود نصب نکردم، بنابراین تنها چیزی که دارم این ترمینال سیاه است. اما آیا این محیط های دسکتاپ معروف تنها راه برای کاربرپسندتر کردن سیستم عامل شما و دریافت یک UI در غیر این صورت، من این مقاله را نمی نوشتم.

آیا یکی از این محیط‌های دسکتاپ را روی تنظیمات دبیان خود نصب می‌کنم و سپس به شما نشان می‌دهم که چگونه آن را سفارشی کنید؟ نه. چرا؟ چون جالب نیست همچنین، برای من bloatware می آورد (در این مورد، نرم افزاری که من هرگز استفاده نمی کنم). برای توضیح بهتر خودم، مهم نیست که چقدر گنوم را سفارشی کنید، گنوم همچنان گنوم است. هیچ راهی وجود ندارد که آن را کاملاً مطابق با نیازهای خود قرار دهید و در عین حال همه چیزهایی را که هرگز استفاده نمی کنید از بین ببرید. تنها DE که من شخصا تحمل می کنم XFCE است. بقیه؟ مه باستا. من هشت ساعت در روز، پنج روز در هفته با رایانه شخصی کارم با ویندوز سروکار دارم—به اندازه کافی از این رابط‌های کاربری بامزه «کلیک-کلیک» استفاده می‌کنم.

برای من، ارزشمندترین بخش فرآیند سفارشی سازی دبیان این است که شما را واقعاً به خود سیستم عامل نزدیک می کند. آیا در حال یادگیری Rust هستید؟ آیا در مورد نوشتن برنامه های کاربردی برای سیستم عامل های لینوکس (یا حتی ویندوز) کنجکاو هستید؟ اما شما هرگز از گنوم فراتر نرفته اید و برای شما یک جعبه جادویی است؟ خبر بد: به احتمال زیاد، شما نیز از برنامه های وب فراتر نخواهید رفت.


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

توضیحات تصویر

چه چیزی در اینجا داریم: دستگاه های ورودی و خروجی. به عنوان ورودی، صفحه کلید و ماوس و همچنین میکروفون روی هدست را دارم. برای خروجی، مانیتور و برای موسیقی یا تماس، خود هدست وجود دارد. برای سادگی، ماوس و صفحه کلید را با استفاده از یک اتصال سیمی ترسیم می کنم. ماوس من بی سیم است، اما توجه به این نکته مهم است که اگر صفحه کلید و ماوس شما از دانگل استفاده می کنند، معمولاً به بلوتوث متکی نیستند – آنها از فناوری فرکانس رادیویی (RF) برای ارتباط با گیرنده های خود (دانگل) استفاده می کنند. این طرح به هیچ وجه به دانگل بلوتوث متصل نیست.

صفحه کلید من یک صفحه کلید شگفت انگیز AKKO است. متأسفانه، در لینوکس، فقط در حالت سیمی کار می کند، اما من با آن کاملاً خوب هستم. از طرفی هدست مارشال من از طریق بلوتوث وصل می شود. مانیتور من خروجی خود را از واحد پردازش گرافیکی NVIDIA دریافت می کند.

NB! من مارک های چیزهایی را که از آنها استفاده می کنم نه به عنوان تبلیغات، بلکه برای نشان دادن آنچه برای من مفید است ذکر می کنم.

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


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

➀ درک چگونه UI و Desktop Environments روی Debian کار می کنند

➁ نمایش سرورها، پروتکل های ارتباطی نمایشگر و مدیران ویندوز

➂ نصب و پیکربندی BSPWM Windows Manager

➃ نصب مرورگر (مرورگر Brave) و شبیه ساز ترمینال (Alacritty)

➄ درباره گذرگاه دسکتاپ و ارتباطات بین فرآیندی (IPC)

➅ نصب ابزار Status Bar (polybar)، File Manager (thunar)، App Launcher (dmenu)، Notification Daemon (dunst) و Windows Compositor (picom).

موارد زیر بخش فرعی روی پیکربندی دستگاه های صوتی بلوتوث و Wi-Fi تمرکز خواهد کرد.

آخرین مقاله در این سری دبیان به سفارشی سازی نوار وضعیت (Polybar) و پیکربندی کامپوزیتور (picom) اختصاص خواهد داشت. علاوه بر این، من نرم افزار اضافی را نصب خواهم کرد که بخشی جدایی ناپذیر از تنظیمات سیستم من است. در پایان آن مقاله، شما به طور کامل مجهز خواهید شد تا از فایل های پیکربندی من جدا شوید و یک رابط کاربری حتی بهتر از سلیقه خود ایجاد کنید – جایی که فقط تخیل شما محدودیت ها را تعیین می کند!

بیایید شروع کنیم!


➀ درک چگونه UI و Desktop Environments روی Debian کار می کنند

نمی‌دانم با توسعه وب آشنایی دارید یا نه، اما اجازه دهید از آن به عنوان یک مثال انتزاعی برای توضیح نحوه عملکرد Desktop Environments (DE) و نحوه عملکرد رابط کاربری گرافیکی برنامه‌ها در Debian استفاده کنم.

_تصور کنید از یک وب سایت DEV.TO بازدید می کنید و یکی از مقالات من را می خوانید. شما آن را دوست دارید و تصمیم می گیرید به عنوان واکنش به آن یک تک شاخ بدهید. شما روی تک شاخ کلیک می کنید و در لیست واکنش های زیر مقاله من ظاهر می شود. این همان چیزی است که در “سمت خود” می بینید.

اما در پشت صحنه – در سمت سرور – کلیک شما در واقع یک رویداد است. این رویداد یک قطعه کد را در سرور فعال می کند. منطق ممکن است چیزی شبیه به این باشد:

اگر روی “تک شاخ” کلیک شود ← شمارنده واکنش های “تک شاخ” در مقاله من را افزایش دهید (با شناسه منحصر به فرد آن مشخص می شود).
پایگاه داده را به روز کنید ← تعداد جدید تک شاخ ها را برای مقاله “idX” در DB بنویسید.
بنابراین، هر زمان که شخص دیگری مقاله من را باز کند، تعداد به روز شده تک شاخ هایی که قبلاً به آن داده شده است را می بیند که از DB آمار واکشی می شود._

در اینجا توضیح شما اصلاح شده و مرتبط با برنامه های Debian است که لحن و سبک شما را حفظ می کند:

این چگونه با هر برنامه دبیان مرتبط است؟ دقیقا همینطوره برای مثال File Explorer را در نظر بگیرید. شما این برنامه را باز می کنید، محتویات دایرکتوری های خود را کاوش می کنید، فایلی را جستجو می کنید، یا شاید فایلی را از یک دایرکتوری به فهرست دیگر منتقل می کنید. شما همه این کارها را با ماوس از طریق رابط کاربری گرافیکی انجام می دهید، شاید با کشیدن و رها کردن. اما پشت همه اینها دستوراتی در حال اجراست! این دستورات مشابه دستوراتی هستند که می توانید خودتان به راحتی در ترمینال اجرا کنید: ls، mv، cp، find، و غیره.

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

محیط‌های دسک‌تاپ، برای مثال گنوم غنی از ویژگی‌ها، با وجود اینکه پیچیدگی آن‌ها بسیار زیاد است، هنوز دستوراتی دارند. وقتی روی نماد دوبار کلیک می‌کنید و برنامه گنوم پنجره‌ای را روی صفحه با این برنامه باز می‌کند، می‌توانید آن را بزرگ کنید یا آن را جمع کنید یا آن را به گوشه صفحه بکشید – چه جادویی! آیا گنوم «سیگنال‌هایی» به GPU می‌فرستد تا وقتی چیزی تغییر می‌کند، صفحه را واقعاً سریع رندر کند؟ نه در اینجا نمایش شماتیک “طرفین” درگیر در رابط کاربری سیستم شما است.

توضیحات تصویر

درایورهای میان‌افزار و GPU خارج از محدوده این مقاله هستند، توضیح بسیار دقیق در مورد نحوه عملکرد سیستم‌افزار و درایورها در دبیان را می‌توانید اینجا و اینجا پیدا کنید NB! این طرح فقط برای پروتکل ارتباطی X (X11) دقیق است، برای پروتکل Wayland کاملاً متفاوت است، در مورد تفاوت آنها در زیر بخوانید.

GNOME DE چندین مؤلفه کلیدی دارد. مدیر پنجره مسئول عملکرد پنجره های شناور است – به شما امکان می دهد آنها را بکشید، جمع کنید یا گسترش دهید. Compositor از ظاهر این پنجره ها مراقبت می کند و مواردی مانند شفافیت، انیمیشن ها و حاشیه ها را مدیریت می کند.

با این حال، آنچه خارج از GNOME (یا هر DE دیگر) وجود دارد، سرور نمایش است. همه محیط های دسکتاپ به سرور نمایشگر بستگی دارند. این سرور نمایشگر است که تفاوت اساسی بین یک سیستم فقط ترمینال و یک سیستم با رابط گرافیکی ایجاد می کند.


➁ نمایش پروتکل های ارتباطی، نمایش سرورها و مدیران ویندوز

درباره سرورهای نمایش و پروتکل های ارتباطی نمایشگر

وقتی صحبت از نمایش چیزها می شود، دو مورد عمده وجود دارد “فناوری های نمایش” تقریباً توسط تمام سیستم عامل های لینوکس استفاده می شود و همین امر در مورد دبیان نیز صدق می کند. نام آنها X Window System (معروف به X11 یا فقط X) و Wayland است. برای کاهش سردرگمی با اصطلاحات مربوط به موارد X-*: X Window System یک پروتکل ارتباطی صفحه نمایش X است که آخرین نسخه آن 11 است، بنابراین X11 نیز نامیده می شود.

در سیستم پنجره X، خود سرور X به کاربر امکان مدیریت پنجره های باز شده را نمی دهد. در عوض، این کار به برنامه ای به نام مدیر پنجره واگذار می شود.
در مورد Wayland، کار به نمایش سروری به نام compositor یا compositing window manager واگذار می شود. (WindowManager – Debian Wiki)

با تمام این اصطلاحات مربوط به X11 و Wayland، پروتکل های ارتباطی نمایش، سرورهای نمایش، سردرگمی کاملاً وجود دارد. بیایید یک مرورگر را به عنوان مثال در نظر بگیریم تا تفاوت را ببینیم. FYI، مرورگرهای مبتنی بر ترمینال وجود دارد! با این حال، بیایید روی یک مرورگر کلاسیک با ویژگی های رابط کاربری گرافیکی مانند برگه های تعاملی، نوار وضعیت و غیره تمرکز کنیم.

وقتی مرورگر را راه‌اندازی می‌کنید – حتی اگر آن را از ترمینال راه‌اندازی کنید (بله، در لینوکس، نیازی نیست روی نماد کلیک کنید یا برنامه را از منو اجرا کنید؛ می‌توانید آن را به خوبی از ترمینال با یک دستور اجرا کنید. brave-browser) – باید روی صفحه نمایش شما ظاهر شود. بر اساس جایی که کلیک می کنید و کاری که انجام می دهید، تصویر روی صفحه شما بلافاصله تغییر می کند.

بدیهی است که برخی از کدها این فرآیند را مدیریت می‌کنند و ورودی‌های شما را مخابره می‌کنند و تعیین می‌کنند چه چیزی باید به عنوان خروجی نمایش داده شود. به عبارت دیگر، یک وجود دارد نمایش پروتکل ارتباطی. و اینجاست که X11 و Wayland از هم جدا می شوند – آنها پروتکل های کاملاً متفاوتی هستند!

Wayland یک پروتکل ارتباطی است که ارتباط بین سرور نمایشگر و کلاینت‌هایش و همچنین اجرای کتابخانه C از آن پروتکل را مشخص می‌کند. سرور نمایشی که از پروتکل Wayland استفاده می کند، Wayland Compositor نامیده می شود، زیرا علاوه بر این، وظیفه یک مدیر پنجره ترکیبی را نیز انجام می دهد. (منبع)

پروتکل هسته X Window System پروتکل پایه سیستم X Window است که یک سیستم پنجره شبکه ای برای نمایشگرهای بیت مپ است که برای ساخت رابط های کاربری گرافیکی بر روی یونیکس، یونیکس مانند و سایر سیستم عامل ها استفاده می شود. سیستم پنجره X بر اساس مدل مشتری-سرور است: یک سرور واحد سخت افزار ورودی/خروجی مانند صفحه نمایش، صفحه کلید و ماوس را کنترل می کند. همه برنامه های کاربردی به عنوان کلاینت عمل می کنند و از طریق سرور با کاربر و سایر مشتریان تعامل دارند. (منبع)

نکته کلیدی از این دو نقل قول نه تنها این است که پروتکل های Wayland و X Window System متفاوت هستند، بلکه این است که آنها بر روی سرورهای نمایش کاملاً متفاوت اجرا می شوند. سرور X.Org برای اجرا بر روی پروتکل ارتباطی X11 طراحی شده است. در همین حال، در مورد Wayland، سرورهای نمایشگر را Compositors Wayland می نامند و بر اساس پروتکل Wayland اجرا می شوند.

با این حال، برای اینکه به شما یک ایده واضح تر از اینکه چگونه سرورهای نمایش و پروتکل های ارتباطی نمایشگر چیزهای مجزا و مجزا هستند، به شما اجازه دهید وجود XWayland را به شما اطلاع دهم. XWayland مجموعه ای از وصله های اعمال شده بر روی پایگاه کد سرور X.Org است که اجازه می دهد تا یک سرور X برای دویدن در بالا پروتکل وی لند. این وصله ها توسط توسعه دهندگان Wayland توسعه یافته و نگهداری می شوند تا با برنامه های X11 در طول انتقال به Wayland سازگاری داشته باشند.

کمی پیشینه در مورد Wayland: بسیار جوانتر از X11 است که بیش از 40 سال پیش ساخته شد. در حالی که X11 در طول زمان به‌روزرسانی شده است، هنوز با معماری قدیمی، کدهای قدیمی و غیره دست و پنجه نرم می‌کند. از سوی دیگر، Wayland کاملاً خارج از اکوسیستم X11، از جمله سرورهای نمایش X.Org ایجاد شده است، بنابراین هیچ وابستگی ندارد. روی آن فناوری قدیمی

با این حال، Wayland کاملاً جدید نیست – فقط سال گذشته منتشر نشد. وضعیت فعلی آن افزایش پذیرش را نشان می دهد. هر دو محیط دسکتاپ GNOME و KDE Plasma به Wayland منتقل شده اند. دبیان به طور یکپارچه از آن پشتیبانی می کند:

Xorg سرور پیش فرض X Window از Debian 4.0 (etch) است. برای دبیان 10 به بعد، پروتکل رابط انسانی پیش فرض Wayland است. (منبع)

برای مدت طولانی، گلوگاه درایورهای اختصاصی انویدیا بود، اما این مشکل حل شده است – انویدیا مشکلات کمتر و کمتری را برای سیستم‌های مبتنی بر Wayland ایجاد می‌کند که نسخه درایور با آن به‌روزرسانی می‌شود.

سرور نمایش با مشتریان خود از طریق پروتکل سرور نمایشگر، یک پروتکل ارتباطی، ارتباط برقرار می کند. سرور نمایشگر یک جزء کلیدی در هر رابط کاربری گرافیکی، به ویژه سیستم پنجره است.

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

بنابراین، من باید نصب یک سرور نمایش را ادامه دهم. و پس از این همه ستایش از Wayland – و شاید شما آن را در Reddit و دیگر انجمن‌ها دیده باشید – من به سراغ پروتکل ارتباطی X11 و سرور X.Org می‌روم. دلیل؟ نرم افزار کلیدی که قصد دارم استفاده کنم، bspwm، مستلزم آن است.

BSPWM یک مدیر پنجره کاشی کاری است. من نمودار قبلی را به روز می کنم تا نحوه انطباق آن با سیستم را تجسم کنم.

توضیحات تصویر

بنابراین، bspwm در راه‌اندازی من کار مدیریت ویندوز را انجام می‌دهد – وقتی برنامه‌ای را اجرا می‌کنم، پنجره‌ها را برای برنامه‌ها باز کنید و آنها را برای من ترتیب دهد. کاشی کاری یعنی چی؟

در زمینه مدیران پنجره، کاشی کاری به روشی برای سازماندهی و نمایش پنجره های برنامه بر روی یک صفحه به شیوه ای غیر همپوشانی و شبکه مانند اشاره دارد. بر خلاف سنتی انباشته شدن مدیران پنجره (مانند آنهایی که در GNOME، KDE استفاده می شوند)، که در آن پنجره ها می توانند همپوشانی داشته باشند و نیاز به تغییر اندازه یا جابجایی دستی دارند، یک مدیر پنجره کاشی کاری به صورت خودکار پنجره ها را مرتب می کند تا بهترین استفاده را از فضای صفحه نمایش در دسترس داشته باشد.

bspwm پنجره ها را به صورت برگ های یک درخت دوتایی کامل مرتب می کند.

توضیحات تصویر

bspwm بسیار مطابق با “راه دبیان” نرم افزار است – سعی نمی کند عملکردهای زیادی را در خود جذب کند. در عوض، برخی از عملکردها به نرم افزارهای دیگر واگذار می شود. به عنوان مثال، در نمودار بالا، می توانید ببینید picom بالا bspwm. picom یک آهنگساز است که مسئول افزودن جلوه های اضافی به ویندوزهای مدیریت شده است bspwm، مانند شفافیت، انیمیشن ها، و غیره. bspwm می تواند بدون آن کاملاً خوب اجرا شود!

چی bspwm نمی توان بدون آن کار کرد sxhkd نرم افزار این به این دلیل است bspwm هیچ ورودی صفحه کلید یا اشاره گر را به تنهایی کنترل نمی کند. sxhkd برای ترجمه رویدادهای صفحه کلید و اشاره گر به آن مورد نیاز است bspc فراخوان ها bspc برنامه ای است که پیام می فرستد bspwm از طریق سوکت آن


سرور نمایش: Xorg

نصب Xorg به سادگی اجرا است sudo apt install xserver-xorg-core. با این حال، اگر قبلاً درایورهای NVIDIA را با استفاده از nvidia-driver بسته (مورد من)، ممکن است قبلاً نصب شده باشد. در زیر خروجی دستور مورد استفاده برای بررسی اینکه آیا این بسته قبلاً نصب شده است (dpkg -l | grep xserver-xorg*):

توضیحات تصویر

را nvidia-driver بسته کشیده شد xserver-xorg-video-nvidia به عنوان یک وابستگی، که، به نوبه خود، به ارمغان آورد xserver-xorg-core بسته بندی در صورتی که سیستم شما این بسته ها را نصب نکرده باشد، کد زیر است:

dpkg -l | grep xserver-xorg*
#if output is empty:
#the X11 server itself without drivers and utilities:
$ sudo apt install xserver-xorg-core
#alternative for "full" xorg server installation:
#sudo apt install xorg
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه داشته باشید که آن را نخواهید داشت startx اگر فقط خود سرور x11 را نصب کنید، دستور دهید، و بنابراین نمی توانید بلافاصله پس از نصب، نمایش گرافیکی را راه اندازی کنید. startx دستور همراه با بسته است xinit.

$ sudo apt install xinit
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از این اگر اجرا کنم startx، سرور نمایش Xorg شروع می شود! صفحه نمایش من اینگونه تغییر می کند:

توضیحات تصویر

شما می توانید ضعیف نمایش داده شود nvidia-smi خروجی زیرا ترمینال کمی عجیب و غریب است – از تمام فضای موجود استفاده نمی کند. به هر حال، می توانید برخی از رنگ ها را در قسمت ترمینال مشاهده کنید. شبیه ساز ترمینال پیش فرض استفاده شده است xterm. هرچند “پنجره” خودش را دارد! اما هنوز مدیر پنجره ای وجود ندارد که آن را به درستی مدیریت کند. در اینجا دلیلی وجود دارد که نشان می دهد تقصیر سرور Xorg با پیکربندی بدی نیست که اندازه صفحه نمایش من را درک نمی کند: وقتی اجرا می کنم xrandr، من رزولوشن صحیح را برای مانیتور خود می بینم.

توضیحات تصویر


مدیر ویندوز: BSPWM

برای راحتی، برای ادامه با bspwm نصب، به فضای ترمینال خارج از سرور نمایشگر باز می گردم. با این حال، وجود ندارد stopx دستور توقف سرور X با شروع شد startx. بنابراین، من فقط باید فرآیند سرور X را از بین ببرم. وقتی می دوم ps aux | grep X، می توانم PID (شناسه فرآیند) را بازیابی کرده و با kill آن را بکشم:

توضیحات تصویر

kill 1191
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

bspwm: نصب

sudo apt install bspwm
#this will install also sxhkd package
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون مدیر ویندوز شما نصب شده است. با این حال، اگر شما اجرا کنید bspwm در ترمینال، کار نخواهد کرد، و اگر سرور نمایشگر را راه اندازی کنید، به احتمال زیاد صفحه سیاهی خواهید دید. این به این دلیل است که مدیر پنجره وجود دارد اما به درستی پیکربندی نشده است. به هر حال می‌توانید آن را امتحان کنید—این به شما می‌آموزد که چگونه یک جلسه TTY جدید را با استفاده از کلیدهای میانبر باز کنید اگر در آینده مشکلی پیش آمد. برای من، Ctrl+Alt+F_X_ است (F2، F3، F4، F5 ecc – هر کلید F جلسه ترمینال جدیدی را باز می‌کند، یا اگر از قبل استفاده می‌شود، می‌توانم بین آنها جابجا شوم). به این ترتیب کنترل دستگاه خود را از دست نمی دهید و مجبور نیستید از برق اضطراری استفاده کنید.


پیکربندی bspwm: دایرکتوری پیکربندی

بنابراین، بیایید پیکربندی کنیم bspwm و متحد آن sxhkd! این کار از طریق ایجاد فایل های پیکربندی برای آنها انجام می شود. اما کجا؟

فایل پیکربندی پیش فرض $XDG_CONFIG_HOME/bspwm/bspwmrc است: این به سادگی یک اسکریپت پوسته است که bspc را فراخوانی می کند. (منبع: صفحه BSPWM GitHub)

$XDG_CONFIG_HOME یک متغیر محیطی است، بنابراین می توانید مقدار آن را با اجرای echo $XDG_CONFIG_HOME بررسی کنید. من کاملا مطمئن هستم که خروجی به احتمال زیاد خالی خواهد بود. چرا؟ اول از همه، XDG چیست؟

XDG در ابتدا مخفف “X Desktop Group” بود، اما اکنون مخفف “Cross-Desktop Group” است. وقتی نوبت به محیط های دسکتاپ مانند GNOME، XFCE، KDE Plasma و غیره می رسد، در واقع می توانید بیش از یک مورد را روی سیستم خود نصب کنید و می توانید بین آنها جابجا شوید. با این حال، توسعه دهندگان آنها باید تا حدودی هماهنگ باشند – به خصوص در مورد دایرکتوری فایل های پیکربندی – در غیر این صورت، سیستم می تواند به یک آشفتگی تبدیل شود. اینجاست که freedesktop.org برای کمک به شما وارد عمل می شود.

freedesktop.org میزبان توسعه نرم افزار منبع باز و رایگان است که بر قابلیت همکاری و فناوری مشترک برای سیستم های گرافیکی و دسکتاپ منبع باز متمرکز است. ما خودمان دسکتاپ تولید نمی کنیم، اما هدف ما کمک به دیگران برای انجام این کار است. (منبع)

و به عنوان بخشی از این تلاش قابلیت همکاری، سندی به نام XDG Base Directory Specification وجود دارد.

در این مشخصات، جزئیات بیشتری در مورد XDG_CONFIG_HOME $ پیدا خواهید کرد:

$XDG_CONFIG_HOME دایرکتوری پایه ای را تعریف می کند که فایل های پیکربندی خاص کاربر باید در آن ذخیره شوند. اگر $XDG_CONFIG_HOME تنظیم نشده یا خالی باشد، باید از یک پیش‌فرض برابر با $HOME/.config استفاده شود. (منبع)

اگر $XDG_CONFIG_HOME را تنظیم نکرده باشید (یعنی خروجی echo $XDG_CONFIG_HOME خالی است)، bspwm پیکربندی آن را در جستجو خواهد کرد $HOME/.config/bspwm/. دایرکتوری HOME کاربر شما باید به طور پیش فرض تنظیم شود زیرا یکی از متغیرهای استاندارد در محیط های لینوکس است و می توانید با اجرای آن را بررسی کنید echo $HOME. (وقتی می دوید cd، دقیقاً به دلیل این متغیر شما را به فهرست اصلی شما می آورد.)

توضیحات تصویر

می خواهم توجه شما را به دو خروجی آخر از اسکرین شات جلب کنم. کاری که من انجام دادم این است: من به عنوان کاربر اصلی وارد شدم و همانطور که می بینید، کاربر اصلی HOME دایرکتوری متفاوت است!

چرا این مهم است؟ خوب، اگر فایل های پیکربندی BSPWM را در خود قرار دهید کاربر فعلی دایرکتوری اصلی، سایر کاربران به رابط کاربری با پیکربندی زیبا (با استفاده از bspwmفایل های پیکربندی 's and other tools' که بعداً به شما نشان خواهم داد). کاربر ریشه نیز دسترسی نخواهد داشت.

بنابراین، اگر تنظیم نکنید چه اتفاقی می‌افتد $XDG_CONFIG_HOME و فایل های پیکربندی BSPWM و SXHKD را در آن قرار دهید .config در فهرست اصلی کاربر شما (/home//.config)؟ در اینجا اتفاقی خواهد افتاد:

  • هنگامی که به عنوان کاربر پیش فرض خود وارد می شوید و سرور نمایش X را راه اندازی کنید، تنظیمات پیکربندی شده خود را خواهید دید.
  • وقتی به عنوان root وارد می شوید و سرور نمایش را راه اندازی کنید، یک صفحه سیاه خواهید دید.
  • هنگامی که شما به عنوان هر کاربر دیگری وارد شوید، آنها همچنین یک صفحه سیاه می بینند.

راه حل برای جلوگیری از این شرایط – اگر واقعاً به یک پیکربندی مشترک نیاز دارید – این است که فایل های پیکربندی را در جایی قرار دهید خارج از فهرست اصلی هر کاربر.

وقتی صحبت از پیکربندی سرور نمایش X می شود، یک مکان استاندارد برای این وجود دارد: /etc/xdg. با قرار دادن فایل های پیکربندی در آنجا، آنها در سراسر سیستم برای همه کاربران (برای خواندن!؛ کاربری بدون sudo امتیازها نمی توانند آنها را تغییر دهند.

برای نشان دادن در این مقاله، از آن استفاده خواهم کرد /etc/xdg برای پیکربندی های BSPWM و SXHKD. حتی اگر می توان متغیر محیطی XDG_CONFIG_HOME را برای اشاره به این دایرکتوری تنظیم کرد، به دلیل این که بسیاری از برنامه ها سعی می کنند چیزی در آنجا بنویسند ترجیح نمی دهم اگر در حین نصب این متغیر $XDG_CONFIG_HOME شناسایی شود.

خوشبختانه هر دو sxhkd و bspwm هنگام اجرا گزینه “-c” را داشته باشید. این گزینه برای اشاره به مکان “سفارشی” فایل های پیکربندی است.


پیکربندی bspwm: فایل های پیکربندی

پس از نصب bspwm می توانید نمونه های آن را پیدا کنید sxhkd's و bspwmپیکربندی های پیش فرض که می تواند به عنوان نقطه شروع برای پیکربندی های سفارشی شما استفاده شود. هر دو فایل پیکربندی را می توان در آن یافت /usr/share/doc/bspwm/examples.

در اینجا می خواهم چند اصطلاح عامیانه مرتبط با کاری که می خواهم انجام دهم را معرفی کنم. فرآیند سفارشی سازی سیستم عامل لینوکس اغلب نامیده می شودرایزنی لینوکساین اصطلاح به طور گسترده در Reddit استفاده می‌شود، به‌ویژه در یک subreddit که به آن اختصاص داده شده است، که در آن افراد تنظیمات خود را به اشتراک می‌گذارند. اغلب، زمانی که یک راه‌اندازی به‌ویژه جالب است، نظرات دیگران را می‌بینید که درخواست می‌کنند «فایل‌های نقطه‌ای» را به اشتراک بگذارند.

اصطلاح «فایل‌های نقطه‌ای» در واقع به اشتراک‌گذاری پیکربندی‌های مورد استفاده برای دستیابی به یک تنظیمات UI خاص اشاره دارد. با این حال، «فایل‌های نقطه‌ای» (یا به عبارت صحیح‌تر، DotFiles) فقط عامیانه نیست – حتی یک صفحه ویکی دبیان نیز وجود دارد که به DotFiles اختصاص داده شده است.

چرا DotFiles به این نام خوانده می شود؟ قبلاً اشاره کردم، مسیر پیش‌فرض پیکربندی‌های BSPWM $HOME/.config است که یک پوشه است، نه یک فایل. اما نام آن با یک نقطه (.) شروع می شود. اگر پیمایش کنید (cd) را در فهرست اصلی خود قرار دهید و محتویات را با آن فهرست کنید ls، فقط فایل ها و دایرکتوری های معمولی را خواهید دید. با این حال، اگر شما اجرا کنید ls -a، چیزهای بیشتری خواهید دید، به خصوص فایل ها و دایرکتوری هایی را خواهید دید که با (.) شروع می شوند.

برای جلوگیری از طولانی شدن این مقاله، «DotFiles» خود را نیز در GitHub به اشتراک خواهم گذاشت.

بیایید پیکربندی BSPWM را ادامه دهیم. شما باید «نمونه‌هایی» از پیکربندی را در فهرستی که BSPWM آن را جستجو می‌کند کپی کنید. اگر شما خوب هستید، این پیکربندی فقط برای کاربر فعلی شما کار می کند، باید زیر شاخه ها را در آن ایجاد کنید $HOME/.config و فایل های پیکربندی را به روش صحیح در آنجا قرار دهید. من فایل های پیکربندی را در آن نگه خواهم داشت /etc/xdg.

$ cd (this will teleport you to your $HOME directory)
# you can double check
$ pwd 
$ ls -a 
#if you do not see .config directory in the output, you will have to create it
$ mkdir .config
#create a directory for bspwm config
$ mkdir .config/bspwm
#create a SEPARATE directory for sxhkd config
$ mkdir .config/sxhkd
# copy configuration files there:
$ cp /usr/share/doc/bspwm/examples/bspwmrc ./config/bspwm/
$ cp /usr/share/doc/bspwm/examples/sxhkdrc ./config/sxhkd/
#ALternative: I do slightly different - i copy configurations to /etc/xdg
#NB! you do not have to do both, you have to choose ONE source of your configuration files.
$ cd /etc/xdg
$ sudo mkdir bspwm #I can keep files in the same directory, as I will be pointing sxhkd and bspwm to their config files manually
$ sudo cp /usr/share/doc/bspwm/examples/bspwmrc bspwm/
$ sudo cp /usr/share/doc/bspwm/examples/sxhkdrc bspwm/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون، می توانم شروع به اصلاح آنها کنم. من انتخاب کرده ام که پیکربندی BSPWM برای همه کاربران قابل دسترسی باشد، بنابراین آنها را خارج از فهرست اصلی کاربر خود قرار دادم. من باید استفاده کنم sudo– امتیازات بالا – برای اصلاح این فایل‌های موجود در /etc دایرکتوری اگر تنظیمات خود را در آن نگه دارید $HOME/.config، شما نیاز ندارید sudo!

این مثال از bspwmrc پیکربندی:

توضیحات تصویر

من با اصلاح آن شروع می کنم.

$ pwd
/etc/xdg #<--I am here
$ cd bspwm
$ sudo vim bspwmrc
#Let's see what is there:
#----------First Line-----------#
pgrep -x sxhkd > /dev/null || sxhkd &
# this command ensures that sxhkd is running along bspwm
#pgrep -x searches for processes sxhkd, if sxhkd is already running, pgrep exits with a success status
#> /dev/null discards the standard output of pgrep. This means the command doesn’t clutter your terminal with process IDs.
#|| - a logical OR operator. The command after the || only runs if previous command, pgrep, did not find sxhkd process. In such case, it starts sxhkd & in the background (& means run in the background).
#As I will not be keeping configiration files in the default directory, I have to inform sxhkd about where its configuration file is when it is launched:
#pgrep -x sxhkd > /dev/null || sxhkd -c "/etc/xdg/bspwm/sxhkdrc" &
#----------Second Line-----------#
bspc monitor -d I II III ...
# this line sets up "or workspaces", you can perceive them as tabs in the browser. You can navigate between them and have various applications opened. To avoid cluttering, I stop on 5 workspaces. There are Roman numbers by default, but you can name them as you want, 1,2,3 ecc or A,B,C... If you install fonts with icons later, you can use even Icons!
# I just trim everything after V.
bspc monitor -d I II III IV V
#NB! If you have more than one monitors, you can use separate bspc monitor commands to assign different sets of workspaces to each monitor.
#bspc monitor HDMI-1 -d I II III
#bspc monitor XX-1 -d IV V VI

#----------Lines 3-7 -----------#
bspc config ...
#these lines are about default configurations about arrangements of windows, for now i leave them as they are

#----------Lines 8-12 -----------#
bspc rule -a ...
#these lines set some specific rules for programs. I comment them out to keep the syntaxis for later, but I definitely do not need these exact rules:
#bspc rule -a ...
#bspc rule -a ...
#bspc rule -a ...
# ...
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مرحله بعد، من به سمت اصلاح حرکت می کنم sxhkdrc. در این فایل پیکربندی، من باید ترکیبات کلید میانبر را تنظیم کنم که برنامه های باز کردن را برای من مدیریت کند.


➃ نصب مرورگر (مرورگر Brave) و شبیه ساز ترمینال (Alacritty)

برای شروع، مهم ترین برنامه ای که نیاز دارم یک شبیه ساز ترمینال است. من از Alacritty استفاده خواهم کرد. من همچنین به یک مرورگر نیاز دارم و مورد علاقه من Brave Browser است، بنابراین ابتدا باید آنها را نصب کنم.

NB! Alacritty فقط می تواند بر روی یک GPU اجرا شود، بنابراین اگر به دلایلی مشکل دارد، گزینه دیگری مانند Terminator را در نظر بگیرید. یکی دیگر از گزینه های محبوب ترمینال Kitty است.

#the current Alacritty version is 0.14. To get it, you will have to build Alacritty from source.
#this command will install for me alacritty v. 0.11, 
$ sudo apt install alacritty

#to install brave browser, I will follow official installation guide, which included adding PPA to my apt sources list! I do it, because I trust Brave Browser, so there is no reason to not trust their PPA. However, if you do not share my point of view, go for something like Firefox.
$ sudo apt install curl
# the following command will fetch the signing key and store it in /usr/share/keyrings/ 
$ sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
#this command will add a PPA to the sources list from which apt update & upgrade system packages. 
$ echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list
#to inform apt about new source, you have to run this:
$ sudo apt update
#now you can install brave browser from the repository of brave browser
$ sudo apt install brave-browser
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا باید برم sxhkd فایل پیکربندی، sxhkdrc، و میانبرهای کلید میانبر را اضافه کنید که با این دو برنامه برای من پنجره ها را باز می کند!

$ pwd
/etc/xdg #<--I am here
$ cd bspwm

#if you placed config files in $HOME/.config:
#$ cd
#$ cd .config/sxhkd
$ sudo vim sxhkdrc #if you are in $HOME/... no need for sudo!
# I replace urxvt terminal emulator with alacritty
super + Return 
   alacritty
# I add a new shortcut for Brave Browser:
super + b
   brave-browser
#A bit on syntaxis: 
# - "super" is "Windows" key on your keyboard, in Linux it is called super
# - "+" stands for which key you will press together with "super" key
# - "Return" is Enter key
# - "b" is just a letter of my choice, notice, it is minuscle
# - indented command - this command should be exactly the same that is in use when you launch any app from terminal. If for launching apps before you used only Desktop icons, you will have to google a bit to find the exact commands. 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همه چیز تقریباً آماده است! تنها چیزی که باقی می ماند این است که به سرور نمایش X و پروتکل ارتباطی X11 بگویید که کدام ویندوز منیجر را باید راه اندازی کنند! برای انجام این کار، باید یک فایل پیکربندی دیگر ایجاد کنید .xinitrc. این فایل باید در فهرست اصلی شما باشد نه در .config، فقط در $HOME دایرکتوری

# "teleport" to your home directory
$ cd
# check for the existence of .xinitrc file
$ ls -a
#if it is not there (most probably), you will have to create one
$ touch .xinitrc
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

باشه، حالا .xinitrc فایل ایجاد می شود، اما خالی است. در داخل، من باید فقط چند خط اضافه کنم تا به راه اندازی اشاره کنم bspwm مدیر پنجره

این فایل به صورت خودکار توسط startx دستور، که یک جلسه X گرافیکی را شروع می کند.

NB! در محیط های دسکتاپ کلاسیک مانند GNOME، KDE و غیره، فرآیند شروع یک جلسه گرافیکی توسط یک نمایشگر مدیریت می شود. Display Manager یک برنامه گرافیکی رابط کاربری است که با فرم ورود به سیستم می‌بینید که از شما می‌خواهد نام کاربری کاربری که می‌خواهید به عنوان وارد شوید و رمز عبور مربوطه را وارد کنید. به عنوان مثال:

توضیحات تصویر

مدیر نمایش اوبونتو

با این حال، مدیران نمایش همیشه مبتنی بر رابط کاربری گرافیکی نیستند. گاهی اوقات آنها TUI (واسط کاربری متنی) هستند:
توضیحات تصویر

مدیر نمایش Ly

انتخاب بسیار معروف برای تنظیمات رابط کاربری سفارشی LightDM است که یک رابط کاربری گرافیکی مینیمالیستی برای ورود به سیستم در حال حرکت ارائه می دهد. با این حال، مدیر نمایش اختیاری است و یک لایه امنیتی اضافی اضافه نمی کند. شما می توانید به سادگی از ترمینال وارد شوید و سپس از آن استفاده کنید startx دستور شروع یک جلسه گرافیکی X. با این حال، یک چیز وجود دارد که مدیران نمایش به طور خودکار آن را مدیریت می کنند، که باید آن را به صورت دستی پیکربندی کنید…

برای اجرای دستور X11 bspwm چه زمانی startx فرمان راه اندازی شده است فقط exec bspwm. با این حال، برای اینکه همه برنامه های شما با رابط کاربری گرافیکی به درستی کار کنند، باید بازیکن دیگری در این امر دخیل باشد. و این شرکت‌کننده دیگر D-Bus با نام اتوبوس دسکتاپ است.


➄ درباره گذرگاه دسکتاپ و ارتباطات بین فرآیندی (IPC)

D-Bus یک سیستم گذرگاه پیام است، روشی ساده برای صحبت برنامه‌ها با یکدیگر. علاوه بر ارتباطات بین فرآیندی، D-Bus به هماهنگ کردن چرخه حیات فرآیند کمک می کند. کدگذاری یک برنامه یا دیمون “تک نمونه” و راه‌اندازی برنامه‌ها و دیمون‌ها در صورت نیاز در صورت نیاز به خدمات آن‌ها را ساده و قابل اعتماد می‌کند.

D-Bus فی نفسه یک شبح است، به این معنی که فرآیندی است که در پس‌زمینه اجرا می‌شود. در دبیان 12 توسط مدیریت می شود systemd. دیمون D-Bus باید از قبل نصب شده و راه‌اندازی شده باشد. می توانید آن را بررسی کنید systemctl status dbus. با این حال، اگر اجرا کنید، خروجی کاملاً متفاوتی وجود دارد systemctl --user status dbus:

توضیحات تصویر

بنابراین، به طور پیش فرض، D-Bus سیستم در حالی که D-Bus، Message Bus راه‌اندازی می‌شود کاربر اتوبوس پیام کار نمی کند!

اراده شما bspwm راه اندازی کار حتی مثل این؟ بله. آیا می توانید برنامه ها را راه اندازی کنید، بله، به احتمال زیاد. با این حال، در اینجا گزارش مرورگر Brave زمانی که من به سادگی جلسه X را با آن شروع کردم، آمده است exec bspwm:

توضیحات تصویر

ببینید: Brave در حال شکایت است (در پنجره ترمینال سمت چپ، می توانید خطاهای تکراری زیادی را در رابطه با اتوبوس مشاهده کنید: ERRROR:bus.cc: Failed to connect to the bus) اما در حال اجرا برای بسیاری از برنامه‌ها، راه‌اندازی و اجرای D-Bus Message Bus برای جلسه X که در آن اجرا می‌شوند بسیار مهم است، بنابراین به درستی کار نخواهند کرد زیرا از آن برای برقراری ارتباط با برنامه‌های دیگر استفاده می‌کنند!

داشتن گذرگاه پیام D-Bus در حال اجرا برای جلسه، پیکربندی بی اهمیت نیست. همانطور که اشاره کردم، گذرگاه پیام D-Bus سیستم درست از ابتدای فرآیند راه‌اندازی راه‌اندازی می‌شود، زیرا یکی از خدمات بسیار مهم systemd است.

هر جلسه ای که شروع می کنید، وقتی به درستی پیکربندی شود، باید دارای یک DBUS_SESSION_BUS_ADDRESS. هنگامی که شما در یک TTY بوت می شوید (مانند مورد من، بدون محیط GUI)، جلسه شروع می شود و systemd آن را اداره می کند. بنابراین، من این را می بینم:

توضیحات تصویر

من به عنوان کاربر خود وارد شدم، alisa، و به طور پیش فرض، دبیان دارای این است dbus-user-session بسته نصب شده در نتیجه، من آن را دارم DBUS_SESSION_BUS_ADDRESS مجموعه متغیر، که حیاتی است. بدون این متغیر محیطی، برنامه هایی که شروع می کنید از جلسه D-Bus بی اطلاع هستند. بنابراین، هدف داشتن این مجموعه متغیر است (echo $DBUS_SESSION_BUS_ADDRESS نباید خالی باشد!).

وقتی به کاربر اصلی با su -، که هیچ متغیر محیط کاربری را حفظ نمی کند، می توانید ببینید که هیچ آدرس D-Bus وجود ندارد. با این حال، اگر استفاده کنم su بدون -، وضعیت متفاوت است. لطفاً توجه داشته باشید که این یک مثال ضعیف است زیرا چنین روشی برای ورود به سیستم خیلی کامل نیست و معمولاً برای مقاصد دیگر استفاده می شود. In general, systemd user space and D-Bus User Message Bus configuration is quite complicated, so my explanation here may provide misleading information.

هنگامی که یک نمایشگر سرور X را با startx راه اندازی می کنید، یک جلسه گرافیکی را شروع می کنید و رفتار متفاوتی دارد. نیازی به ورود به سیستم ندارد، بنابراین systemd به طور خودکار یک جلسه D-Bus را برای آن شروع نمی کند.

شاید فکر کنید بعد از ورود به جلسه گرافیکی می توانید به صورت دستی اجرا کنید systemctl --user start dbus برای شروع جلسه D-Bus. اما این کار نخواهد کرد زیرا به این سادگی نیست. هنگامی که آن را به صورت دستی راه اندازی می کنید، اجرا می شود و یک سوکت ایجاد می شود. با این حال، systemd برای کاربران متفاوت رفتار می کند، و شما باید مراحل مختلفی را انجام دهید تا به درستی کار کند، تنها با استفاده از اهرم systemd قابلیت ها و dbus-user-session بسته بندی

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

اگر از راهنمایی مانند این پیروی کنید، در نهایت با یک جلسه کاربر D-Bus کاربر در تمام جلسات و کاربران به اشتراک گذاشته شده است. در حالی که این رویکرد کاربردی است، می‌توان آن را غیربهینه و نه دقیقاً «راه دبیان» در نظر گرفت، حتی اگر بسیاری از محیط‌های دسکتاپ این مسیر را انتخاب کنند. برای جزئیات بیشتر می توانید به این ارتباط مراجعه کنید.

با این حال، اگر مایل به تغییر دادن نیستید systemdخدمات و تنظیمات سوکت، حتی در اینجا، دبیان شما را پوشش داده است! هدف این است که گذرگاه پیام کاربر D-Bus را برای یک جلسه گرافیکی BSPWM راه اندازی شود (با exec bspwm). یک ابزار خط فرمان وجود دارد که این مورد را مدیریت می کند: dbus-launch. این ابزار بخشی از Debian است dbus-x11بسته بندی

بسته: dbus-x11
سیستم پیام رسانی بین پردازشی ساده (X11 deps)
D-Bus یک گذرگاه پیام است که برای ارسال پیام بین برنامه ها استفاده می شود. از نظر مفهومی، از نظر پیچیدگی جایی بین سوکت های خام و CORBA قرار می گیرد.
این بسته حاوی ابزار dbus-launch است که به‌طور خودکار یک گذرگاه جلسه D-Bus را در هر نمایشگر X11 برای هر کاربر راه‌اندازی می‌کند. اگر بسته dbus-user-session نیز نصب شده باشد، بر این بسته اولویت دارد. منبع

نصبش میکنم:

$ sudo apt install dbus-x11
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر در گوگل جستجو کرده اید bspwm نصب و پیکربندی، ممکن است با خطی که باید به خط خود اضافه کنید مواجه شده اید .xinitrc برای شروع bspwm هنگامی که جلسه گرافیکی راه اندازی می شود:
exec dbus-launch --exit-with-x11 bspwm. با این حال، آن طور که باید باشد، این کاملاً صحیح نیست exec dbus-launch --exit-with-session bspwm.

من اصلاح می کنم .xinitrc فایل

$ cd
$ vim .xinitrc
 exec dbus-launch --exit-with-session bspwm -c "/etc/xdg/bspwm/bspwmrc"
#if you decided to place the configuration of bspwm in $HOME/.config, you do not need to specify path to configuration file!
# exec dbus-launch --exit-with-session bspwm
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

dbus-launch --exit-with-session bspwm -c "/etc/xdg/bspwm/bspwmrc" برای من خوب کار می کند زیرا من فقط دستور راه اندازی BSPWM را در آن گنجانده ام .xinitrc. تمام برنامه های دیگری که بخشی از جلسه هستند و در پس زمینه اجرا می شوند از پیکربندی BSPWM شروع می شوند.

با این حال، اگر می خواهید آنها را به طور جداگانه شروع کنید، به یک دستور کمی متفاوت نیاز دارید: exec dbus-launch --exit-with-session ~/.xinitrc.

در مورد من، برای اطمینان از مرتب بودن کامل، کمی جلوتر می روم و بررسی D-Bus User Bus را اضافه می کنم:

$ cd
$ vim .xinitr
 if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
    exec dbus-launch --exit-with-session bspwm -c "/etc/xdg/bspwm/bspwmrc" exit
 else
    exec dbus-launch --exit-with-session bspwm -c "/etc/xdg/bspwm/bspwmrc" 
 fi
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نهایت، وقت آن است که آن را امتحان کنید! در ترمینال دستور را اجرا می کنم startx:

توضیحات تصویر

وویلا!

بنابراین، همه چیز با عملکرد پایه آماده است! اکنون، من فقط باید با نصب نرم افزار اضافی ادامه دهم تا تنظیمات رابط کاربری سفارشی خود را تکمیل کنم!


➅ نصب ابزار Status Bar (polybar)، File Manager (thunar)، App Launcher (dmenu)، Notification Daemon (dunst) و Windows Compositor (picom).

نوار وضعیت: پلی بار

اول، من به یک نوار وضعیت نیاز دارم. در زمینه یک محیط دسکتاپ، یک نوار وضعیت به موارد زیر اشاره دارد:

توضیحات تصویر

برای این کار از Polybar استفاده خواهم کرد که با:

sudo apt install polybar
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

توضیحات تصویر

اسناد دقیق در مورد سفارشی سازی وجود دارد: Polybar Wiki. مانند BSPWM و SXHKD، Polybar از طریق یک فایل پیکربندی قابل تنظیم است:

به‌طور پیش‌فرض، پلی‌بار فایل پیکربندی را از ~/.config/polybar/config.ini، /etc/xdg/polybar/config.ini، یا /etc/polybar/config.ini بارگیری می‌کند.
اگر نام نوار را مشخص نکنید و فایل پیکربندی شما فقط شامل یک نوار باشد، پلی بار آن نوار را نمایش می دهد. در غیر این صورت باید به صراحت نام نوار را مشخص کنید. (منبع)

پس از نصب، فایل تنظیمات پیش‌فرض را می‌توانید در این آدرس پیدا کنید /etc/polybar/config.ini. در حال حاضر، پیکربندی پیش فرض را همانطور که هست می گذارم. من قصد دارم آن را در مقاله بعدی تغییر دهم، با تمرکز بر عملکرد اصلی که می خواهم اضافه یا تنظیم کنم. این شامل دکمه های نوار وضعیت برای مدیریت اتصالات Wi-Fi، حجم صدا، اتصالات بلوتوث و نور پس زمینه صفحه نمایش است.

در واقع، من قصد دارم دو نوار وضعیت Polybar داشته باشم – یکی در بالا و دیگری در پایین صفحه. شما می توانید اشیایی مانند آیکون ها یا حتی برچسب های متنی ساده (به عنوان دکمه) در Polybar ایجاد کنید و اسکریپت های پوسته را به آنها وصل کنید. این اسکریپت ها عملکردی را که با فشار دادن دکمه، کلیک ماوس، کلیدهای جهت دار یا حتی چرخ ماوس ایجاد می شود، مشخص می کنند!

دیمون اعلان: dunst

یک شبح اعلان نمایش اعلان‌ها، مانند پیام‌های خطا یا هشدارها را کنترل می‌کند.

توضیحات تصویر

Dunst یک شبح اعلان بسیار سبک و قابل تنظیم است. می‌توان آن را برای نمایش اعلان‌های مفید مختلف، مانند پیام‌های ایمیل، رسانه‌های اجتماعی و موارد دیگر پیکربندی کرد. شما می توانید آن را با:

sudo apt install dunst
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی پیش فرض در / قرار خواهد گرفتetc/xdg/dunst/dunstrc. اگر ترجیح می دهید تمام تنظیمات را در آن نگه دارید $HOME/.config، باید آن را با استفاده از:

$ cd
$ mkdir .config/dunst
$ cp /etc/xdg/dunst/dunstrc $HOME/.config/dunst
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آهنگساز: picom

اگرچه پیکربندی BSPWM امکان کنترل بر روی پنجره ها را فراهم می کند، اما در درجه اول بر نحوه قرارگیری آنها و مکان نمایش پنجره های جدید تمرکز می کند. ظاهر ویندوز، با این حال، توسط یک آهنگساز مدیریت می شود. در مورد من، این Picom خواهد بود.

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

مانند BSPWM، SXHKD و Polybar، Picom نیز می تواند از طریق فایل پیکربندی آن سفارشی شود:

اگر پشتیبانی libconfig در آن کامپایل شده باشد، picom می تواند از یک فایل پیکربندی بخواند. اگر -config استفاده نشود، picom به دنبال یک فایل پیکربندی در $XDG_CONFIG_HOME/picom.conf (~/.config/picom.conf، معمولاً) می‌گردد. $XDG_CONFIG_HOME/picom/picom.conf، سپس $XDG_CONFIG_DIRS/picom.conf (اغلب /etc/xdg/picom.conf)، سپس $XDG_CONFIG_DIRS/picom/picom.conf. (منبع)

نمونه پیکربندی پیش فرض را می توان در اینجا یافت /usr/share/doc/picom/examples/picom.sample.config. من آن را در سایر فایل‌های پیکربندی خود کپی می‌کنم تا مرتب و با هم ذخیره شوند.

$ cd /etc/xdg/bspwm
#alternatively, if you keep all configs in $HOME/.config:
# $ cd
# $ cd .config
# $ mkdir picom
# $ cp /usr/share/doc/picom/examples/picom.sample.config picom/
# $ mv picom/picom.sample.config picom/picom.config
$ sudo cp /usr/share/doc/picom/examples/picom.sample.config .
$ sudo mv picom.sample.config picom.config
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر سه ابزار – Polybar، Dunst و Picom – باید در پس‌زمینه اجرا شوند تا در صورت درخواست راه‌اندازی شوند. برای اطمینان از این امر، من باید فایل پیکربندی BSPWM را تغییر دهم تا نه تنها SXHKD همراه با BSPWM راه اندازی شود، بلکه این افراد نیز راه اندازی شوند.

$ cd /etc/xdg/bspwm
# if you decided to keep configurations in $HOME/.config:
#$ cd 
#$ cd .config/bspwm
$ sudo vim bspwmrc #you do not need sudo if you are in $HOME
#I add this lines after pgrep -x sxhkd....
# to launch polybar:
# terminate in "elegant" way all running polybarS, if there are some (alternative to kill)
polybar-msg cmd quit
# require logging of polybar
echo "---" | tee -a /tmp/polybar.log
# launch polybar in background and start logging. As for now I am using default polybar config, the command polybar will automatically fetch it, if the configuration is placed in one of the places, where polybar searches it (in my case it is in /etc/polybar/config.ini)
polybar 2>&1 | tee -a /tmp/polybar.log & disown

#launching picom
# for picom i specify path to configuration
pgrep -x picom > /dev/null || picom --config /etc/xdg/bspwm/picom.conf &

#launching dunst
pgrep -x dunst > /dev/null || dunst &
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


مدیر فایل: Thunar

مدیر فایل کسی است که شما آن را برای کاوش در رایانه شخصی خود، یافتن فایل ها، انتقال/کپی کردن فایل ها و تعامل با فایل ها از درایوهای قلم USB باز می کنید:

توضیحات تصویر

من از Thunar استفاده می کنم که با آن قابل نصب است

sudo apt install thunar
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه‌انداز برنامه: dmenu

App Launcher ابزاری است که برنامه های نصب شده را نمایش می دهد و به شما امکان می دهد آنها را با کلیک ماوس راه اندازی کنید. علاوه بر این، یک ابزار جستجو برای یافتن سریع برنامه مورد نظر شما فراهم می کند.

در محیط‌های دسکتاپ کلاسیک، یک راه‌انداز برنامه معمولاً چیزی شبیه به این است – برای مثال، راه‌انداز برنامه GNOME:

توضیحات تصویر

من از dmenu استفاده می کنم. این راه‌انداز برنامه در مقایسه با راه‌انداز برنامه GNOME که در بالا نمایش داده شد، بسیار مینیمالیستی‌تر است. همه آیکون ها یا سایر موارد اضافی را نمایش نمی دهد، اما به شما امکان می دهد به طور موثر جستجو کنید و برنامه ها را با یک کلیک راه اندازی کنید.

من این رویکرد مینیمالیستی را ترجیح می دهم زیرا به ندرت از لانچر برنامه استفاده می کنم. بیشتر اوقات، من برنامه ها را از خط فرمان یا با استفاده از کلیدهای SXHKD راه اندازی می کنم، که برای برنامه هایی که اغلب استفاده می کنم پیکربندی می کنم. dmenu با این دستور قابل نصب است:

sudo apt install suckless-tools
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

من باید Thunar و dmenu را به پیکربندی SXHKD اضافه کنم تا کلیدهای میانبر را برای راه اندازی آنها متصل کنم.

$ cd /etc/xdg/bspwm
# if you decided to keep configurations in $HOME/.config:
#$ cd 
#$ cd .config/sxhkd
$ sudo vim sxhkdrc #you do not need sudo if you are in $HOME
#I add this lines only
# file manger
super + f
      thunar
#dmenu is already there, if you kept the default config!
# super + @space
#      dmenu_run
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


اینجا هستیم! اکنون، اگر startx را از ترمینال اجرا کنم، تمام تنظیمات من شروع می شود:

توضیحات تصویر

در بالا: نوار وضعیت Polybar. در سمت راست: Thunar، Brave Browser

توضیحات تصویر

در بالا، نوار وضعیت پلی بار پوشانده شده است: راه‌انداز برنامه -dmenu

VOILA!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا