FreeBSD برای ارائه یک رابط گرافیکی از X11 استفاده میکند. در این مقاله به بررسی یکی از پیادهسازیهای X11 به نام Xorg میپردازیم که Xserver پیش فرض در FreeBSD است. (نگران نباشید، این اصطلاحات به زودی تشریح میشوند)
درک X
مفهوم X، برای کسانی که برای بار اول از آن استفاده میکنند میتواند کمی عجیب وغریب باشد. بخصوص اشخاصی که قبلاً با سیستمعاملهایی مثل Microsoft Windows یا Mac OS کار کردهاند.
X اولین سیستم پنجره ای نیست که برای UNIX نوشته شد؛ اما محبوب ترین آنهاست. تیم توسعه X ، قبل از آن، بر روی یک سیستم پنجرهای دیگر به نام W (که از Window میآید) کار میکردند. در الفبای لاتین، X حرف بعد از W است.
X با اسامی مختلفی مانند X،X11، X window System و … شناخته میشود.
تعریف XClient و XServer
X از همان ابتدا برای کار در شبکه طراحی شد؛ به همین دلیل یک مدل Client/Server را برگزید.
Xserver بر روی رایانه ای که مانیتور و کیبورد و ماوس دارد، اجرا می شود. کار این برنامه مدیریت صفحه نمایش، کنترل ماوس و کیبورد و دیگر دستگاهای ورودی و خروجی (مثلاً touchpad و video projector و …) است.
هر برنامهای که با کتابخانههای X نوشته شده باشد یک Xclient نامیده می شود. مثلاً فایرفاکس، گیمپ، pidgin و … نمونههایی از یک Xclient هستند. یک Xclient پیغام هایی مانند “ لطفاً پنجره ای را با این مختصات در صفحه نمایش رسم کن“ را به یک Xserver می فرستد. Xserver هم در پاسخ، پیغام هایی مانند “کاربر بر روی دکمه Ok کلیک کرده“ یا “کاربر ماوس خود را در مختصات X و Y حرکت می دهد“ را برای Xclient ارسال می کند.
در یک سیستم خانگی یا یک شبکه اداری کوچک ممکن است هر دو این برنامهها بر روی یک کامپیوتر نصب شده باشند. با این حال این امکان وجود دارد تا این برنامهها بر روی کامپیوترهای مجزایی نصب شوند. مثلاً فایرفاکس بر روی یک کامپیوتر و X.Org بر روی یک کامپیوتر دیگر نصب شده باشد. این بدین معنی است که “پردازش“ در یک سیستم و “نمایش“ در سیستم دیگری صورت می گیرد. معمولاً Xserver بر روی کامپیوتری که قدرت پردازش کمی دارد نصب شده و Xclient هم بر روی کامپیوتری با قدرت پردازش بالا نصب می شود. در این حالت ارتباط بین Xserver و Xclient از طریق شبکه برقرار می شود.
معمولاً این مسأله کاربران را کمی گیج می کند چون کلمات server و client در معنای درست خود به کار برده نشده و وارونه شده اند. این مهم است که به خاطر داشته باشید که Xserver بر روی کامپیوتری که مانیتور و کیبورد دارد نصب میشود و Xclient هم برنامهای است که دستور نمایش پنجره ها را برای Xserver فرستاده تا Xserver آنها را برای کاربر نمایش دهد.
هیچ اجباری نیست تا این برنامهها بر روی سیستم عامل های مشابهی اجرا شوند. مثلاً فایرفاکس (Xclient) می تواند بر روی کامپیوتری که سیستم عامل FreeBSD بر روی آن نصب است، اجرا شود و در سیستم دیگری که دارای سیستم عامل Microsoft Windows است نمایش یابد. (پیاده سازی دیگری از X11 برای Microsoft Windows و با نام Xming وجود دارد)
مدیر پنجره
فلسفه طراحی X شبیه فلسفه طراحی UNIX است. ابزارها، نه سیاست. یعنی X سعی نمیکند که نحوه انجام دادن کارها را دیکته کند. در عوض ابزارها برای کاربر ایجاد شدهاند و این وظیفه کاربر است که تصمیم بگیرد چگونه از این ابزارها استفاده کند.
این فلسفه به X نیز گسترش یافته است. بنابراین X تعیین نمیکند که:
- پنجرهها باید بر روی صفحه نمایش چگونه باشند.
- چگونه باید آنها را با ماوس جابهجا کرد.
- از چه کلیدهایی باید برای جابهجا شدن بین پنجرهها استفاده کرد (مثلا alt+⇆ Tab در Microoft Windows).
- نوار عنوان هر پنجره باید چگونه باشد.
- آیا دکمه بستن پنجره باید بر روی آن وجود داشته باشد؟
- و … .
در عوض این وظایف به برنامهای به نام Window Manager یا مدیر پنجره محول شده است. مدیر پنجرههای متفاوتی برای X وجود دارد که: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker و … از آن جمله اند.
هر مدیر پنجره ظاهر و حس متفاوتی را فراهم میکند. برخی از میزکارهای مجازی پشتیبانی میکنند، برخی اجازه میدهند تا کاربر کلیدهایی را برای مدیریت میزکار تعریف کند، بعضی ها یک دکمه ‘’’Start’’’ یا چیزی شبیه آن دارند، بعضی از آنها قابلیت نصب theme های جدید دارند که کاربر میتواند ظاهر میزکارش را به کلی عوض کند. این Window Managerها به همراه برخی چیزهای دیگر در دایرکتوری x11-wm در درخت پورت ها موجود هستند.
به علاوه، KDE و Gnome مدیر پنجرههایِ مخصوص به خود را دارند که با آنها ادغام شده است.
نحوه پیکربندی هر مدیر پنجره متفاوت است. بعضی از فایلهای متنی برای پیکربندی خود استفاده میکنند و برخی دیگر ابزارهایی گرافیکی برای را این کار تدارک دیدهاند.
Widgetها
به تمام اشیائی که می توان بر روی آنها کلیک کرد یا به نوعی آنها را دستکاری کرد، widget گفته میشود. مانند: دکمهها، آیکون ها، چک باکسها، لیستها، دکمههای رادیویی و … .
این اشیا در سیستمعاملهایی مثل Microsoft Windows و Mac OS ثابت هستند و همه برنامه ها از widget های یکسانی استفاده میکنند. اما در X شکل وشمایل خاصی برای این اشیا در نظر گرفته نشده و هر برنامه می تواند widget های مخصوص به خود را داشته باشد.
در نتیجه توقع نداشته باشید که همه برنامههای X ظاهر یکسان و ثابتی داشته باشند.
نصب X11
همان طور که گفته شد، Xorg پیادهسازی پیش فرض از X11 در FreeBSD است. نسخه ۷٫۵٫۲ از این برنامه در مجموعه پورت های FreeBSD وجود دارد که از طریق دستورات زیر می توانید اقدام به نصب آن نمایید:
# cd /usr/ports/x11/xorg # make install clean
کامپایل Xorg ممکن است مدت زیادی طول بکشد. به همین دلیل شاید ترجیح دهید که آن را از بستههای باینری نصب کنید. بسته های باینری از طریق دستور pkg_add قابل نصب هستند. در هنگام استفاده از این دستور، احتیاجی به مشخص کردن نسخه برنامه نیست. آخرین نسخه از برنامه مورد نظر به صورت خودکار دانلود میشود.
بنابراین، با دستور زیر میتوانید Xorg را از بستههای باینری نصب کنید:
# pkg_add -r xorg
تبریک میگوییم! شما موفق شدید Xorg را نصب کنید! حالا نوبت به پیکربندی آن میرسد.
پیکربندی Xorg
اغلب اوقات، برنامه Xorg میتواند خودش را به صورت خودکار پیکربندی کند و لازم نیست شما وارد جزئیات پیکربندی شوید.
Xorg از HAL برای شناسایی صفحهکلید و ماوس استفاده میکند. اگر Xorg را نصب کردهاید، برنامههای HAL و DBUS هم به صورت خودکار نصب شدهاند. چون از وابستگیهای Xorg هستند. کافی است آنها را فعال کنید. برای فعال کردن، این خطوط را به فایل /etc/rc.conf اضافه کنید:
hald_enable="YES" dbus_enable="YES"
قبل از اینکه جلوتر برویم، این سرویس ها باید اجرا شوند. بنابراین بعد از اضافه کردن خطوط بالا سیستم خود را reboot کنید.
در اغلب موارد احتیاج به تنظیمات اضافهتری نیست و Xorg با دستور زیر قبل اجراست:
% startx
به این ترتیب Xorg به صورت خودکار پیکربندی شده و در اغلب هم موارد به خوبی کار میکند. با این حال اگر بعد از اجرای دستور بالا محیط گرافیکی بالا نیامد، یعنی مشکلی در پیکربندی خودکار پیش آمده و شما مجبور هستید Xorg را به صورت دستی پیکربندی کنید. پیکربندی Xorg یک کار چند مرحلهای است. در مرحله اول، شما احتیاج به فایل پیکربندی دارید. دستور زیر را به عنوان کاربر ریشه اجرا کنید:
# Xorg -configure
با اجرای دستور بالا، فایل پیکربندی در مسیر /root/xorg.conf.new ایجاد میشود. این فایل را با یک ویرایشگر متن باز کرده و مقادیر مورد نظر خود را در آن وارد کنید. باید بگوییم که بررسی کامل این فایل از حوصله این مقاله خارج است و در جایی دیگر بررسی میشود. بعد از اعمال تغییرات مورد نظر خود، فایل را ذخیره کرده و از ویرایشگر خارج شوید.
حالا باید این فایل را تست کنید تا مطمئن شوید که مشکلی نداشته و همه چیز به خوبی کار می کند. کافی است دستور زیر را با کاربر ریشه اجرا کنید:
Xorg -config xorg.conf.new -retro
فایل اصلی پیکربندی Xorg در مسیر /etc/X11/xorg.conf قرار داشته و برنامه Xorg تنظیمات خود را از این فایل میخواند. بنابراین شما باید فایل پیکربندی که درست کردهاید را در این مسیر قرار دهید. این کار با اجرای دستور زیر انجام خواهد شد:
# cp /root/xorg.conf.new /etc/X11/xorg.conf