پروتکل اصلی سیستم پنجره اکس
پنجره‌ها

چیزی که در بسیاری از واسط‌های گرافیکی کاربر پنجره نامیده می‌شود، در سامانهٔ پنجره‌ای اکس به آن پنجره سطح بالا می‌گویند. همچنین اصطلاح پنجره برای نامیدن پنجره‌هایی که در درون یک پنجره دیگر جای دارند هم بکار می‌رود. به پنجره‌ای که یک پنجره دیگر را دربرمی‌گیرد، پنجره پدر و به پنجره‌ای که درون یک پنجره دیگر جای گرفته زیرپنجره گفته می‌شود. عناصر گرافیکی همچون دکمه‌ها، منوها، آیکون‌ها و دیگر چیزها، می‌توانند به‌دست زیرپنجره‌ها محقق شوند.
کلاینت می‌تواند از سرور درخواست کند که یک پنجره تازه ساخته شود. همچنین کلاینت می‌تواند درخواست کند که یک زیرپنجره در درون پنجره‌ای که از پیش وجود دارد، ساخته شود. در نتیجه، پنجره‌هایی که به‌دست کلاینت‌ها ساخته می‌شوند، در یک ساختار درختی و به گونهٔ سلسله‌مراتبی، چیده می‌شوند. ریشهٔ این درخت، پنجره ریشه است. پنجره ریشه یک پنجرهٔ ویژه است و در هنگام آغاز به کار سیستم به گونه خودکار به‌دست سرور ساخته می‌شود. همه پنجره‌های دیگر به گونه مستقیم یا غیرمستقیم فرزند پنجره ریشه هستند. پنجره‌های سطح بالا، فرزند مستقیم پنجره ریشه شمرده می‌شوند. از دید ظاهری، پنجره ریشه به بزرگی یک دسکتاپ مجازی است و در پشت همه پنجره‌های دیگر نهفته می‌شود.
تضمینی برای نگهداری همیشگی محتویات و درون‌مایهٔ یک پنجره در کار نیست. درون‌مایهٔ یک پنجره می‌تواند با جابجا شدن پنجره، تغییر اندازه دادن پنجره، گذاشتن پنجره‌های دیگر بر روی آن پنجره، یا ... نابود شده و همه یا بخشی از آن نمایش‌ناپذیر شود. اگر سرور یک انباره پشتیبان از درون‌مایهٔ یک پنجره را نگه نداشته باشد، درون‌مایهٔ یک پنجره ممکن است از دست برود. کلاینت می‌تواند از سرور بخواهد که چنین انباره‌ای را از درون‌مایهٔ یک پنجره نگه‌داری کند، اما سرور تعهد و ضمانتی برای انجام این کار ندارد. در نتیجه، کلاینت‌ها نمی‌توانند چنین بپندارند که سرور یک انباره پشتیبان برای یک پنجره را نگه‌داری می‌کند. اگر بخش نمایان یک پنجره، درون‌مایهٔ نامشخصی داشته باشد، رویدادی برای کلاینت فرستاده می‌شود و او را آگاه می‌کند که درون‌مایهٔ پنجره باید دوباره ترسیم شوند.
هر پنجره‌ای تعدادی صفت دارد. همانند ژئومتری (اندازه پنجره و جای آن بر روی صفحه)، تصویر پس‌زمینه آن، اینکه آیا انباره پشتیبان برای آن نگهداری می‌شود یا نه و صفت‌های دیگر. تعدادی درخواست برای بررسی کردن این صفت‌ها و تغییر دادن آن‌ها در پروتکل تعبیه شده‌است.
پنجره‌ها می‌توانند به گونه InputOutput (هم ورودی داشته باشند و هم خروجی) یا به گونه InputOnly (تنها ورودی) باشند. پنجره‌های InputOutput می‌توانند بر روی صفحه نمایش داده شوند و برای ترسیم کردن بکار برده می‌شوند. پنجره‌های InputOnly هیچگاه بر روی صفحه نمایش نمی‌یابند و آن‌ها تنها برای دریافت ورودی از کاربر بکاربرده می‌شوند.
قاب زینتی و نوار عنوان پنجره‌ها (که می‌تواند شامل شماری دکمه هم باشد) که گرداگرد پنجره‌ها دیده می‌شود، به‌دست برنامه‌ای ویژه به نام مدیر پنجره رسم می‌شود، نه به‌دست کلاینتی که پنجره را ساخته و صاحب آن است. همچنین این مدیر پنجره است که مسئول سرپرستی کردن ورودی مرتبط با این عناصر است. برای نمونه، هنگامی که کاربر با نشانگر ماوس بر روی قاب پنجره کلیک می‌کند و آن را تغییر اندازه می‌دهد، در واقع این مدیر پنجره است که پنجره را کوچک و بزرگ می‌کند و آن را تغییر اندازه می‌دهد. کلاینت‌ها معمولاً بدون توجه و در نظر گرفتن تغییرات انجام شده به‌دست مدیر پنجره، بر روی پنجره‌هایی که ساخته‌اند به فعالیت می‌پردازند. مدیر پنجره‌های ری-پرنتینگ پس از ساختن یک پنجره سطح بالا، پدر این پنجره تازه‌ایجادشده را به پنجره‌ای جز پنجرهٔ ریشه، که برای همین منظور در نظر گرفته شده، تغییر می‌دهند. تقریباً همه مدیر پنجره‌های نوین، ری-پرنتینگ هستند. از دید پروتکل، مدیر پنجره هم تنها یک کلاینت است و با کلاینت‌های دیگر فرقی ندارد.
اطلاعات مربوط به یک پنجره را می‌توان با برنامه xwininfo به‌دست آورد. با فرستادن آرگومان خط فرمانی ‎-tree به این برنامه، می‌توان درخت زیرپنجره‌های یک پنجره را به همراه شناسه‌ها و داده‌های ژئومتری آن پنجره‌ها دید.