سامانه پنجره اکس

بندانگشتی|نماد اکس۱۱
[بندانگشتی|یک نمونه از استفاده از پنجره اکس و [کی دی ای پلاسما ۵]]
**سامانهٔ پنجره اکس** (که معمولاً **سیستم پنجره X** یا براساس نسخه اصلی فعلی آن که ۱۱ است، **X11** نیز نامیده می‌شود) یک سامانهٔ نرم‌افزاری و پروتکل تحت شبکه است که اساس قابلیت‌های رابط‌های کاربری گرافیکی (GUI) و دستگاه‌های ورودی پیشرفته را برای رایانه‌های تحت شبکه فراهم می‌کند. این سیستم یک لایه انتزاع سخت‌افزاری ایجاد می‌کند یعنی سایر نرم‌افزارها از مجموعه‌ای از دستورهای عمومی استفاده می‌کنند که استقلال از سخت‌افزار و امکان استفاده مجدد از برنامه‌ها را بر روی هر رایانه‌ای که X را پیاده‌سازی کرده باشد، موجب می‌گردد.

پروژه اکس در دانشگاه ماساچوست (MIT) و در سال ۱۹۸۴ آغاز شد. نسخه فعلی (یعنی X۱۱) در ۱۹۸۷ انتشار یافت. بنیاد X.Org پروژهٔ X را هدایت می‌کند و پیاده‌سازی مرجع کنونی آن، یعنی X.Org Server، به عنوان یک نرم‌افزار آزاد و متن‌باز و تحت گواهی MIT و گواهی‌های آزاد مشابهی در دسترس است.

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

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

## طراحی
اکس از یک مدل سرویس‌گیرنده-سرویس‌دهنده (Client-Server) استفاده می‌کند. سرور اکس برنامه‌ایست که بر روی رایانه‌ای که دارای نمایشگر و کیبورد است نصب می‌شود. سرور اکس درخواست‌ها را از کلاینت‌ها دریافت کرده، پس از پردازش، آنها را بر روی صفحه نمایش (یا دیگر دستگاه‌های خروجی) رسم می‌کند. همچنین سرور اکس اطلاعات را از ماوس و کیبورد و دیگر دستگاه‌های ورودی دریافت کرده، آنها را برای کلاینت‌ها ارسال می‌کند. کلاینت‌ها در حقیقت همان برنامه‌های کاربردی مثل فایرفاکس، لیبره‌آفیس و ... هستند. یک کلاینت درخواست‌هایی مانند «لطفاً پنجره‌ای با مختصات X و Y را در صفحه نمایش رسم کنید» را برای سرور اکس ارسال می‌کند. سرور اکس این درخواست‌ها را گرفته و سپس پنجره را بر روی صفحه نمایش رسم می‌کند. به عنوان مثالی دیگر، سرور اکس اطلاعات را از ماوس دریافت کرده و سپس پیام‌هایی مانند «کاربر در درحال حرکت دادن ماوس در مختصات X و Y است» را برای کلاینت‌ها ارسال می‌کند.

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

## هدف و قابلیت‌ها
بندانگشتی|تصویری از پوسته گنوم که حالت نمای کلی را نشان می دهد.
X Window یک سیستم مستقل از معماری برای رابط‌های کاربری گرافیکی و دستگاه‌های ورودی پیشرفته بر روی شبکه است که امکان اشتراک‌گذاری توان محاسباتی یک رایانه اشتراک‌زمانی را از طریق برنامه‌های کلاینت فراهم می‌سازد. هر کاربر با استفاده از یک پایانه تحت شبکه قابلیت تعامل با نمایشگر را از طریق هر گونه دستگاه ورودی کاربری دارد. با توجه به پشتیبانی عمومی از نرم‌افزارهای X در سیستم‌عامل‌های یونیکس، لینوکس و مکینتاش، معمولاً از X برای اجرای نرم‌افزارهای کلاینت بر روی رایانه‌های شخصی استفاده می‌گردد، حتی در صورتی که نیاز به اشتراک زمانی نباشد.

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

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

برخلاف پروتکل‌های نمایشی اولیه، اکس به جای کار بر روی دستگاه‌های نمایشی پیوسته و جدایی‌ناپذیر، به‌طور خاص برای استفاده بر روی اتصالات شبکه طراحی شده‌است. اکس به شکل شبکه-شفاف است: ماشینی که یک برنامه کاربردی (کلاینت اکس) بر روی آن اجرا می‌شود، می‌تواند از ماشینی که سرور اکس بر روی آن اجرا می‌شود متفاوت باشد و این دو برنامه می‌توانند هر کدام روی ماشین‌های مختلفی با سیستم‌عامل‌های مختلف اجرا شوند.

## اصول اولیه
در ۱۹۸۴، باب شیفلر و جیم گتیس اصول اولیه اکس را به این صورت تدوین کرند:
* *هیچ قابلیت جدیدی اضافه نکنید مگر اینکه برنامه‌نویسی بدون آن قابلیت نتواند برنامه واقعی‌اش را تمام کند. *
* *اهمیت تصمیم‌گیری در این مورد که برنامه چه چیزی قرار نیست باشد، همانقدر مهم است که برنامه چه چیزی قرار است باشد. لازم نیست به همه نیازهای جهان پاسخ دهید. نکته مهم این است که برنامه قابل توسعه باشد تا بعدها بتوان با حفظ سازگاری، آن را پیش برد. *
* *تنها چیزی که از تعمیم دادن بر مبنای یک مثال بدتر است، تعمیم دادن بدون وجود حتی یک مثال است. *
* *اگر مشکل کاملاً درک نشده باشد، بهترین کار این است که هیچ جوابی داده نشود. *
* *اگر می‌توانید ۹۰٪ خواسته‌ها را با ۱۰ درصد کار جواب دهید، از راه حل ساده‌تر استفاده کنید. *
* *تا جایی که ممکن است، پیچیدگی را ایزوله کنید. *
* *به جای خط مشی، مکانیزم ارائه دهید. به طور عام، خط مشی رابط کاربری را به [[کلاینت]]ها بسپارید. *

در طول توسعه اکس.۱۱، قانون اول به این شکل تغییر کرد: *"هیچ قابلیت جدیدی اضافه نکنید مگر اینکه برنامه‌ای واقعی را بشناسید که به آن نیاز داشته باشد."*

## پیدایش
اکس اولین‌بار در ایمیل معرفی شد:

## منابع

* Hania Gajewska, Mark S. Manasse and Joel McCormack, Why X Is Not Our Ideal Window System (PDF), *Software — Practice & Experience* vol 20, issue S2 (October 1990)
* The X-Windows Disaster (*[[کتاب راهنمای یونیکس‌بیزاران]]*)
* Robert W. Scheifler and James Gettys: *X Window System: Core and extension protocols: X version 11, releases 6 and 6.1*, Digital Press 1996, 
* The Evolution of the X Server Architecture (کیث پاکارد, ۱۹۹۹)
* On the Thesis that X is Big/Bloated/Obsolete and Should Be Replaced (Christopher B. Browne)
* Open Source Desktop Technology Road Map (Jim Gettys, 09 December 2003)
* X Marks the Spot: Looking back at X11 Developments of Past Year (Oscar Boykin, *OSNews*, ۲۵ فوریه ۲۰۰۴)
* The Cautionary Tale of XFree86 (from *Make Your Open Source Software GPL-Compatible. Or Else. * by David A. Wheeler, ۱۶ فوریه ۲۰۰۵)

## پیوندهای وابسته
* ویلند

## پیوند به بیرون
* X.Org Foundation وب‌سایت رسمی
* Kenton Lee: Technical X Window System and Motif WWW Sites
* RFC 1198 - FYI on the X Window System

رده:پروتکل‌های لایه کاربرد
رده:واسط‌های برنامه‌نویسی کاربردی
رده:سامانه پنجره‌ای اکس
رده:سامانه‌های پنجره‌ای آزاد
رده:فری‌دسکتاپ.ارگ
رده:نرم‌افزارهای آزاد مرتبط با گرافیک
رده:نرم‌افزارهای دارای اجازه‌نامه ام‌آی‌تی