X Window System protocols and architecture
কম্পিউটিংয়ে, এক্স উইন্ডো সিস্টেম (সাধারণতঃ এক্স11, বা এক্স) বিটম্যাপ প্রদর্শনের জন্য একটি নেটওয়ার্ক-স্বচ্ছ উইন্ডো সিস্টেম। এই নিবন্ধটি এক্স11-এর প্রটোকল এবং প্রযুক্তিগত কাঠামোর বিশদ বিবরণ দেয়। ক্লায়েন্ট-সার্ভার মডেল এবং নেটওয়ার্ক স্বচ্ছতা এক্স একটি ক্লায়েন্ট-সার্ভার মডেল ব্যবহার করে। একটি এক্স সার্ভার প্রোগ্রাম একটি গ্রাফিকাল ডিসপ্লে সহ একটি কম্পিউটারে চলে এবং বিভিন্ন ক্লায়েন্ট প্রোগ্রামের সাথে যোগাযোগ করে। এক্স সার্ভার ব্যবহারকারী এবং ক্লায়েন্ট প্রোগ্রামগুলির জন্য একটি মধ্যস্থতাকারী হিসাবে কাজ করে, ক্লায়েন্ট প্রোগ্রামগুলি থেকে গ্রাফিকাল আউটপুট (উইন্ডোজ)-এর জন্য টিসিপি পোর্ট 6000-এ অনুরোধগুলি গ্রহণ করে এবং সেগুলি ব্যবহারকারীর কাছে প্রদর্শন করে (প্রদর্শন), এবং ব্যবহারকারীর ইনপুট (কীবোর্ড, মাউস) গ্রহণ করে এবং ক্লায়েন্ট প্রোগ্রামগুলিতে প্রেরণ করে। এক্স-এ, সার্ভার ব্যবহারকারীর কম্পিউটারে চলে, যেখানে ক্লায়েন্টরা দূরবর্তী মেশিনে চলতে পারে। এই পরিভাষাটি ক্লায়েন্ট-সার্ভার সিস্টেমের সাধারণ ধারণাকে বিপরীত করে, যেখানে ক্লায়েন্ট সাধারণত ব্যবহারকারীর স্থানীয় কম্পিউটারে চলে এবং সার্ভার দূরবর্তী কম্পিউটারে চলে। এক্স উইন্ডো পরিভাষাটি এই দৃষ্টিভঙ্গি গ্রহণ করে যে এক্স উইন্ডো প্রোগ্রামটি সমস্ত ক্রিয়াকলাপের কেন্দ্রে রয়েছে, অর্থাৎ। এক্স উইন্ডো প্রোগ্রাম অ্যাপ্লিকেশন এবং ব্যবহারকারীর মাউস এবং কীবোর্ড ইনপুট থেকে অনুরোধগুলি গ্রহণ করে এবং সাড়া দেয়। অতএব, অ্যাপ্লিকেশনগুলিকে (দূরবর্তী কম্পিউটারে) এক্স উইন্ডো সার্ভার প্রোগ্রামের ক্লায়েন্ট হিসাবে দেখা হয়। সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগ প্রোটোকল নেটওয়ার্ক-স্বচ্ছভাবে চলেঃ ক্লায়েন্ট এবং সার্ভার একই মেশিনে বা বিভিন্ন মেশিনে চলতে পারে, সম্ভবত বিভিন্ন আর্কিটেকচার এবং অপারেটিং সিস্টেমের সাথে। একজন ক্লায়েন্ট এবং সার্ভার একটি এনক্রিপ্ট করা সংযোগের মাধ্যমে সংযোগটি টানেল করে ইন্টারনেটের মাধ্যমে নিরাপদে যোগাযোগ করতে পারে। ডিজাইনের নীতি বব স্কিফলার এবং জিম গেটিস এক্স-এর প্রাথমিক নীতিগুলি নিম্নরূপ নির্ধারণ করেছেন (স্কিফলার/গেটিস 1996-এ তালিকাভুক্ত হিসাবে): নতুন কার্যকারিতা যোগ করবেন না যদি না কোনও প্রয়োগকারী এটি ছাড়া একটি বাস্তব অ্যাপ্লিকেশন সম্পূর্ণ করতে না পারে। একটি ব্যবস্থা কী নয় তা নির্ধারণ করা ততটাই গুরুত্বপূর্ণ যতটা এটি কী তা নির্ধারণ করা। বিশ্বের সমস্ত চাহিদা পূরণ করবেন না; বরং, ব্যবস্থাটিকে সম্প্রসারণযোগ্য করে তুলুন যাতে অতিরিক্ত চাহিদা ঊর্ধ্বমুখীভাবে সামঞ্জস্যপূর্ণ পদ্ধতিতে পূরণ করা যায়। একটি উদাহরণ থেকে সাধারণীকরণের চেয়ে খারাপ জিনিসটি হল কোনও উদাহরণ ছাড়াই সাধারণীকরণ করা। যদি কোনও সমস্যা পুরোপুরি বোঝা না যায়, তাহলে কোনও সমাধান না দেওয়াই সম্ভবত সর্বোত্তম। আপনি যদি 10 শতাংশ কাজের জন্য কাঙ্ক্ষিত প্রভাবের 90 শতাংশ পেতে পারেন, তাহলে সহজ সমাধানটি ব্যবহার করুন। (আরও দেখুন, আরও খারাপ হলে ভালো হয়।) যতটা সম্ভব জটিলতাকে আলাদা করুন। নীতির পরিবর্তে ব্যবস্থা প্রদান করুন। বিশেষ করে, ক্লায়েন্টদের হাতে ইউজার ইন্টারফেস নীতি রাখুন। প্রথম নীতিটি এক্স11-এর নকশার সময় সংশোধন করা হয়েছিলঃ নতুন কার্যকারিতা যোগ করবেন না যদি না আপনি এমন কোনও বাস্তব অ্যাপ্লিকেশন সম্পর্কে জানেন যার প্রয়োজন হবে। তখন থেকে এক্স মূলত এই নীতিগুলি বজায় রেখেছে। X.Org ফাউন্ডেশন 1987 সালের মূল প্রটোকলের সাথে প্রায় সম্পূর্ণ সামঞ্জস্য রেখে বাস্তবায়নের সম্প্রসারণ ও উন্নতির লক্ষ্যে রেফারেন্স বাস্তবায়নের বিকাশ ঘটায়। সার্ভার এবং ক্লায়েন্টদের মধ্যে মূল প্রোটোকল যোগাযোগ একটি নেটওয়ার্ক চ্যানেলে প্যাকেট বিনিময় করে করা হয়। ক্লায়েন্ট সংযোগ স্থাপন করে, প্রথম প্যাকেট পাঠায়। সার্ভার সংযোগের গ্রহণযোগ্যতা বা প্রত্যাখ্যানের কথা উল্লেখ করে বা আরও প্রমাণীকরণের অনুরোধ সহ একটি প্যাকেট ফেরত পাঠিয়ে উত্তর দেয়। যদি সংযোগটি গৃহীত হয়, তবে গ্রহণযোগ্যতার প্যাকেটটিতে ক্লায়েন্টের সার্ভারের সাথে পরবর্তী মিথস্ক্রিয়ায় ব্যবহার করার জন্য ডেটা থাকে। সংযোগ স্থাপন হওয়ার পরে, ক্লায়েন্ট এবং সার্ভার চ্যানেলে চারটি ভিন্ন ধরনের প্যাকেট বিনিময় করেঃ অনুরোধঃ ক্লায়েন্ট সার্ভারের কাছ থেকে তথ্যের অনুরোধ করে বা কোনও কাজ করার জন্য অনুরোধ করে। উত্তরঃ সার্ভার একটি অনুরোধে সাড়া দেয়। সমস্ত অনুরোধ উত্তর তৈরি করে না। ইভেন্টঃ সার্ভার ক্লায়েন্টকে একটি ইভেন্ট পাঠায়, যেমন, কীবোর্ড বা মাউস ইনপুট, বা একটি উইন্ডো সরানো, আকার পরিবর্তন করা বা উন্মুক্ত করা হচ্ছে। ত্রুটিঃ কোনও অনুরোধ অবৈধ হলে সার্ভার একটি ত্রুটি প্যাকেট পাঠায়। যেহেতু অনুরোধগুলি সারিবদ্ধ থাকে, তাই অনুরোধ দ্বারা উত্পন্ন ত্রুটির প্যাকেটগুলি অবিলম্বে পাঠানো নাও হতে পারে। এক্স সার্ভার মৌলিক পরিষেবাগুলির একটি সেট সরবরাহ করে। ক্লায়েন্ট প্রোগ্রামগুলি সার্ভারের সাথে মিথস্ক্রিয়া করে আরও জটিল কার্যকারিতা উপলব্ধি করে। অন্যান্য গ্রাফিক্যাল ইউজার ইন্টারফেস সাধারণত যাকে উইন্ডো বলে, তা হল এক্স উইন্ডো সিস্টেমের একটি শীর্ষ-স্তরের উইন্ডো। উইন্ডো শব্দটি অন্য উইন্ডোর মধ্যে থাকা উইন্ডোগুলির জন্যও ব্যবহৃত হয়, অর্থাৎ একটি প্যারেন্ট উইন্ডোর সাব-উইন্ডো। গ্রাফিক্যাল উপাদান যেমন বোতাম, মেনু, আইকন ইত্যাদি। সবগুলিই উইন্ডোজ ব্যবহার করে বাস্তবায়িত হয়। একটি উইন্ডো শুধুমাত্র একটি প্যারেন্ট উইন্ডোর সাব-উইন্ডো হিসাবে তৈরি করা যেতে পারে। এর ফলে জানালাগুলি একটি গাছে ক্রমানুসারে সাজানো হয়। এক্স সার্ভার স্বয়ংক্রিয়ভাবে গাছের মূল তৈরি করে, যাকে রুট উইন্ডো বলা হয়। শীর্ষ-স্তরের উইন্ডোগুলি মূল উইন্ডোটির সরাসরি সাব-উইন্ডো। দৃশ্যমানভাবে, মূল জানালাটি পর্দার মতোই বড় এবং অন্যান্য সমস্ত জানালার পিছনে অবস্থিত। শনাক্তকারী এক্স সার্ভার উইন্ডোজ, ফন্ট ইত্যাদি সম্পর্কে সমস্ত তথ্য সংরক্ষণ করে। ক্লায়েন্ট এই বস্তুগুলির শনাক্তকারীগুলি জানে-সার্ভারের সাথে মিথস্ক্রিয়া করার সময় এটি তাদের নাম হিসাবে ব্যবহার করতে পারে। উদাহরণস্বরূপ, যদি কোনও ক্লায়েন্ট একটি উইন্ডো তৈরি করতে চায়, তবে এটি সার্ভারকে একটি তৈরি করার জন্য অনুরোধ করে এবং (সাফল্যের ক্ষেত্রে) বিনিময়ে নতুন তৈরি উইন্ডোটির সাথে যুক্ত সার্ভারকে একটি শনাক্তকারী পায়। সনাক্তকারীটি পরে ক্লায়েন্ট দ্বারা অনুরোধ করার জন্য ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ, উইন্ডোতে একটি স্ট্রিং আঁকতে হবে। আইডেন্টিফায়ারগুলি সার্ভারের জন্য অনন্য, শুধুমাত্র ক্লায়েন্টের জন্য নয়; উদাহরণস্বরূপ, কোনও দুটি উইন্ডোর একই আইডেন্টিফায়ার নেই, এমনকি দুটি ভিন্ন ক্লায়েন্ট দ্বারা তৈরি হলেও। একজন ক্লায়েন্ট তার সনাক্তকারী দেওয়া যে কোনও বস্তু অ্যাক্সেস করতে পারে, এমনকি যদি অন্য কোনও ক্লায়েন্ট বস্তুটি তৈরি করে। বৈশিষ্ট্য এবং বৈশিষ্ট্য প্রতিটি উইন্ডোতে বৈশিষ্ট্যগুলির একটি পূর্বনির্ধারিত সেট এবং বৈশিষ্ট্যগুলির একটি সেট থাকে, যা সমস্ত এক্স সার্ভারে সংরক্ষণ করা থাকে এবং উপযুক্ত অনুরোধের মাধ্যমে ক্লায়েন্টদের কাছে অ্যাক্সেসযোগ্য। বৈশিষ্ট্যগুলি হল উইন্ডো সম্পর্কে তথ্য, যেমন এর আকার, অবস্থান, পটভূমির রঙ ইত্যাদি। বৈশিষ্ট্য হল তথ্যের টুকরো যা একটি উইন্ডোর সাথে সংযুক্ত থাকে। বৈশিষ্ট্যগুলির বিপরীতে, এক্স উইন্ডো কোর প্রোটোকলের স্তরে বৈশিষ্ট্যগুলির কোনও অর্থ নেই। একজন ক্লায়েন্ট উইন্ডোর একটি সম্পত্তিতে নির্বিচারে তথ্য সংরক্ষণ করতে পারে। একটি সম্পত্তি একটি নাম, একটি প্রকার এবং একটি মান দ্বারা চিহ্নিত করা হয়। বৈশিষ্ট্যগুলি অপরিহার্য প্রোগ্রামিং ভাষাগুলিতে ভেরিয়েবলের অনুরূপ, যাতে অ্যাপ্লিকেশনটি একটি প্রদত্ত নাম এবং একটি প্রদত্ত ধরনের একটি নতুন সম্পত্তি তৈরি করতে পারে এবং এতে একটি মান সংরক্ষণ করতে পারে। বৈশিষ্ট্যগুলি উইন্ডোজের সাথে যুক্তঃ একই নামের দুটি বৈশিষ্ট্য দুটি ভিন্ন উইন্ডোতে বিভিন্ন প্রকার এবং মান সহ বিদ্যমান থাকতে পারে। বৈশিষ্ট্যগুলি বেশিরভাগ আন্তঃ-ক্লায়েন্ট যোগাযোগের জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, WM _ NAME নামক সম্পত্তি উইন্ডোটির নাম সংরক্ষণ করে; উইন্ডো ম্যানেজাররা সাধারণত এই বৈশিষ্ট্যটি পড়েন এবং এর শীর্ষে উইন্ডোটির নাম প্রদর্শন করেন। এক্সপ্রপ প্রোগ্রাম একটি উইন্ডোর বৈশিষ্ট্য প্রদর্শন করতে পারে। বিশেষ করে, এক্সপ্রপ-রুট রুট উইন্ডোর বৈশিষ্ট্যগুলি দেখায়, যার মধ্যে এক্স রিসোর্স (প্রোগ্রামের পরামিতি) অন্তর্ভুক্ত রয়েছে। ইভেন্টগুলি হল প্যাকেট যা সার্ভার দ্বারা ক্লায়েন্টকে পাঠানো হয় যাতে বলা যায় যে এমন কিছু ঘটেছে যা ক্লায়েন্টকে আগ্রহী করতে পারে। একজন ক্লায়েন্ট সার্ভারকে অন্য ক্লায়েন্টের কাছে একটি ইভেন্ট পাঠানোর জন্য অনুরোধ করতে পারে; এটি ক্লায়েন্টদের মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যখন কোনও ক্লায়েন্ট বর্তমানে নির্বাচিত পাঠ্যের জন্য অনুরোধ করে, তখন একটি ইভেন্ট ক্লায়েন্টের কাছে পাঠানো হয় যা বর্তমানে নির্বাচন ধারণকারী উইন্ডোটি পরিচালনা করছে। একটি উইন্ডোর বিষয়বস্তু কিছু পরিস্থিতিতে "ধ্বংস" হতে পারে (উদাহরণস্বরূপ, যদি উইন্ডোটি ঢেকে থাকে)। যখনই ধ্বংসপ্রাপ্ত বিষয়বস্তুর একটি এলাকা দৃশ্যমান করা হয়, তখন সার্ভার একটি এক্সপোজ ইভেন্ট তৈরি করে ক্লায়েন্টকে অবহিত করে যে উইন্ডোটির একটি অংশ আঁকতে হবে। অন্যান্য ইভেন্টগুলি ক্লায়েন্টদের কীবোর্ড বা মাউস ইনপুট, নতুন উইন্ডো তৈরি ইত্যাদি সম্পর্কে অবহিত করতে পারে। কিছু ধরণের ইভেন্ট সর্বদা একজন ক্লায়েন্টের কাছে পাঠানো হয়, তবে বেশিরভাগ ধরণের ইভেন্ট কেবল তখনই পাঠানো হয় যদি ক্লায়েন্ট আগে তাদের প্রতি আগ্রহ প্রকাশ করে, কারণ ক্লায়েন্টরা কেবল কোনও ধরণের ইভেন্টে আগ্রহী হতে পারে। উদাহরণস্বরূপ, একজন ক্লায়েন্ট কীবোর্ড-সম্পর্কিত ইভেন্টে আগ্রহী হতে পারে তবে মাউস-সম্পর্কিত ইভেন্টে নয়। এক্স উইন্ডো সিস্টেম যেভাবে রঙ পরিচালনা করে তা কখনও কখনও ব্যবহারকারীদের বিভ্রান্ত করতে পারে এবং ঐতিহাসিকভাবে বেশ কয়েকটি ভিন্ন মোড সমর্থিত হয়েছে। বেশিরভাগ আধুনিক অ্যাপ্লিকেশনগুলি পূর্ণ রঙ (24-বিট রঙ, লাল, সবুজ এবং নীল প্রতিটি জন্য 8 বিট) ব্যবহার করে, তবে পুরানো বা বিশেষজ্ঞ অ্যাপ্লিকেশনগুলির জন্য একটি ভিন্ন রঙের মোডের প্রয়োজন হতে পারে। অনেক বাণিজ্যিক বিশেষজ্ঞ অ্যাপ্লিকেশন সিউডো কালার ব্যবহার করে। এক্স11 প্রোটোকল আসলে একটি একক 32-বিট স্বাক্ষরহীন পূর্ণসংখ্যা ব্যবহার করে-যাকে পিক্সেল ভ্যালু বলা হয়-বেশিরভাগ গ্রাফিক ক্রিয়াকলাপে একটি একক রঙ উপস্থাপন করার জন্য। প্রাথমিক রঙের তীব্রতা স্থানান্তর করার সময়, প্রতিটি রঙের উপাদানের জন্য একটি 16 বিট পূর্ণসংখ্যা ব্যবহার করা হয়। রঙের নিম্নলিখিত উপস্থাপনা বিদ্যমান; তাদের সব একটি নির্দিষ্ট ডিভাইসে সমর্থিত হতে পারে না। ডাইরেক্টকলারঃ একটি পিক্সেল মানকে পৃথক লাল, সবুজ এবং নীল উপক্ষেত্রে বিভক্ত করা হয়। প্রতিটি সাবফিল্ড একটি পৃথক কালার ম্যাপ সূচিবদ্ধ করে। সমস্ত কালার ম্যাপের এন্ট্রি পরিবর্তন করা যেতে পারে। ট্রুকলারঃ ডাইরেক্টকলারের মতোই, ব্যতীত কালার ম্যাপ এন্ট্রিগুলি হার্ডওয়্যার দ্বারা পূর্বনির্ধারিত এবং পরিবর্তন করা যায় না। সাধারণত, লাল, সবুজ এবং নীল রঙের প্রতিটি রং তীব্রতার একটি (কাছাকাছি) রৈখিক র্যাম্প সরবরাহ করে। গ্রেস্কেলঃ একটি পিক্সেল মান একটি একক কালার ম্যাপকে সূচিবদ্ধ করে যার মধ্যে একরঙা তীব্রতা থাকে। কালার ম্যাপ এন্ট্রি পরিবর্তন করা যেতে পারে। স্ট্যাটিকগ্রেঃ গ্রেস্কেলের মতোই, ব্যতীত কালার ম্যাপ এন্ট্রিগুলি হার্ডওয়্যার দ্বারা পূর্বনির্ধারিত এবং পরিবর্তন করা যায় না। ছদ্ম রঙ (চাঙ্কি): একটি পিক্সেল মান একটি একক কালার ম্যাপকে সূচিবদ্ধ করে যার মধ্যে রঙের তীব্রতা থাকে। কালার ম্যাপ এন্ট্রি পরিবর্তন করা যেতে পারে। স্ট্যাটিক কালারঃ সিউডো কালারের মতোই, ব্যতীত কালার ম্যাপ এন্ট্রিগুলি হার্ডওয়্যার দ্বারা পূর্বনির্ধারিত এবং পরিবর্তন করা যায় না। এক্সলিব এবং অন্যান্য ক্লায়েন্ট লাইব্রেরি বেশিরভাগ ক্লায়েন্ট প্রোগ্রাম এক্সলিব ক্লায়েন্ট লাইব্রেরির মাধ্যমে সার্ভারের সাথে যোগাযোগ করে। এক্সলিবের পাশাপাশি, এক্সসিবি লাইব্রেরি এক্স প্রোটোকলের সাথে আরও ঘনিষ্ঠভাবে কাজ করে। বিশেষত, বেশিরভাগ ক্লায়েন্ট এক্সও, মোটিফ, জিটিকে + বা কিউটির মতো লাইব্রেরি ব্যবহার করে যা সার্ভারের সাথে যোগাযোগের জন্য এক্সলিব ব্যবহার করে। কিউটি 5.0 রিলিজের সাথে এক্সলিব থেকে এক্সসিবিতে পরিবর্তিত হয়েছিল, তবে ক্লায়েন্ট প্রোগ্রামগুলি এই পরিবর্তনের দ্বারা প্রায় সম্পূর্ণরূপে প্রভাবিত হয়নি। আন্তঃ-ক্লায়েন্ট যোগাযোগ এক্স উইন্ডো মূল প্রোটোকল ক্লায়েন্টদের মধ্যে যোগাযোগের জন্য প্রক্রিয়া প্রদান করেঃ উইন্ডো বৈশিষ্ট্য এবং ইভেন্ট, বিশেষ করে ক্লায়েন্ট-থেকে-ক্লায়েন্ট বার্তা ইভেন্ট। তবে, এটি এই ধরনের মিথস্ক্রিয়ার জন্য কোনও প্রোটোকল নির্দিষ্ট করে না। পরিবর্তে, আন্তঃ-ক্লায়েন্ট যোগাযোগ সম্মেলনের একটি পৃথক সেট এই প্রোটোকলগুলি পরিচালনা করে। ইন্টার-ক্লায়েন্ট কমিউনিকেশন কনভেনশন ম্যানুয়াল নির্বাচন এবং উইণ্ডো ম্যানেজারের সাথে অ্যাপ্লিকেশনগুলির মিথস্ক্রিয়ার মাধ্যমে ডেটা বিনিময়ের জন্য প্রোটোকল নির্দিষ্ট করে। কেউ কেউ এই নির্দিষ্টকরণটিকে কঠিন এবং বিভ্রান্তিকর বলে মনে করেছেন; অ্যাপ্লিকেশন চেহারা এবং অনুভূতি এবং যোগাযোগের ধারাবাহিকতা সাধারণত একটি প্রদত্ত ডেস্কটপ পরিবেশে প্রোগ্রামিং দ্বারা সম্বোধন করা হয়। ইন্টার-ক্লায়েন্ট এক্সচেঞ্জ প্রোটোকল (আই. সি. ই) ক্লায়েন্টদের মধ্যে মিথস্ক্রিয়ার জন্য প্রোটোকল তৈরির জন্য একটি কাঠামো নির্দিষ্ট করে, যাতে প্রোগ্রামাররা এর উপরে একটি নির্দিষ্ট প্রোটোকল তৈরি করতে পারে। বিশেষত, এক্স সেশন ম্যানেজমেন্ট প্রোটোকল (এক্স. এস. এম. পি) হল আই. সি. ই-এর উপর ভিত্তি করে তৈরি একটি প্রোটোকল যা সেশন ম্যানেজারের সাথে অ্যাপ্লিকেশনগুলির মধ্যে মিথস্ক্রিয়া পরিচালনা করে, যা এমন একটি প্রোগ্রাম যা একটি ইন্টারেক্টিভ সেশনের শেষে ডেস্কটপের অবস্থা সংরক্ষণ করে এবং একই ব্যবহারকারীর সাথে অন্য অধিবেশন আবার শুরু হলে এটি পুনরুদ্ধার করার যত্ন নেয়। ফ্রিডেস্কটপ নির্দিষ্টকরণের মধ্যে রয়েছে নতুন নিয়মাবলী, যার মধ্যে রয়েছে ড্র্যাগ-অ্যান্ড-ড্রপ কনভেনশন এক্সডিএনডি (এটি নির্বাচন করে এবং অন্য উইন্ডোতে টেনে নিয়ে ডেটা স্থানান্তর করার জন্য ব্যবহৃত হয়) এবং এমবেডেড অ্যাপ্লিকেশন কনভেনশন জেম্বেড (যা একটি অ্যাপ্লিকেশন কীভাবে অন্য অ্যাপ্লিকেশনটির সাব-উইন্ডোতে চলতে পারে তার বিশদ বিবরণ দেয়)। এক্স উইন্ডো সিস্টেমে নির্বাচন, কাট বাফার এবং ড্র্যাগ-অ্যান্ড-ড্রপের পদ্ধতিগুলি ব্যবহারকারীকে এক উইন্ডো থেকে অন্য উইন্ডোতে ডেটা স্থানান্তর করার অনুমতি দেয়। নির্বাচন এবং কাট বাফার ব্যবহার করা হয় (সাধারণত) যখন কোনও ব্যবহারকারী কোনও উইন্ডোতে পাঠ্য বা অন্য কোনও ডেটা নির্বাচন করে এবং অন্য উইন্ডোতে পেস্ট করে। ড্র্যাগ-অ্যান্ড-ড্রপ ব্যবহার করা হয় যখন কোনও ব্যবহারকারী কোনও উইন্ডোতে কিছু নির্বাচন করে, তারপর সিলেকশনে ক্লিক করে অন্য উইন্ডোতে টেনে নিয়ে যায়। যেহেতু দুটি ভিন্ন অ্যাপ্লিকেশন দুটি উইন্ডো পরিচালনা করতে পারে, তাই তথ্য স্থানান্তরের জন্য একই এক্স সার্ভারের সাথে সংযুক্ত বিভিন্ন ক্লায়েন্টের প্রয়োজন হয়। এক্স উইন্ডো কোর প্রোটোকলে কিছু ধরণের অনুরোধ এবং ইভেন্ট রয়েছে যা নির্বাচন বিনিময়ের জন্য নির্দিষ্ট, তবে স্থানান্তরটি মূলত সাধারণ ক্লায়েন্ট-টু-ক্লায়েন্ট ইভেন্ট প্রেরণ এবং উইন্ডো বৈশিষ্ট্য ব্যবহার করে করা হয়, যা নির্বাচন স্থানান্তরের জন্য নির্দিষ্ট নয়। ব্যবহারকারীরা ক্লায়েন্টদের মধ্যে বিভিন্ন ধরনের তথ্য স্থানান্তর করতে পারেনঃ এটি সাধারণত পাঠ্য, তবে এটি একটি পিক্সম্যাপ, একটি সংখ্যা, বস্তুর তালিকা ইত্যাদিও হতে পারে। নির্বাচন এবং ড্র্যাগ-অ্যান্ড-ড্রপ সক্রিয় প্রক্রিয়াঃ ব্যবহারকারী একটি উইন্ডোতে ডেটা নির্বাচন করার পরে, উইন্ডো পরিচালনাকারী ক্লায়েন্টকে অনুরোধ করা অ্যাপ্লিকেশনটিতে সেই ডেটা স্থানান্তর করার জন্য একটি প্রোটোকলকে সক্রিয়ভাবে সমর্থন করতে হবে। অন্যদিকে, কাট বাফারগুলি একটি নিষ্ক্রিয় প্রক্রিয়া প্রদান করেঃ ব্যবহারকারী যখন কিছু পাঠ্য নির্বাচন করেন, তখন এর বিষয়বস্তু একটি কাট বাফার-এ স্থানান্তরিত হয়, যেখানে উইন্ডোটি পরিচালনাকারী অ্যাপ্লিকেশনটি শেষ হয়ে গেলে এবং উইন্ডোটি ধ্বংস হয়ে গেলেও এটি থেকে যায়। উইণ্ডো ম্যানেজার একটি প্রোগ্রাম যা উইন্ডোগুলির সাধারণ চেহারা এবং গ্রাফিকাল ইউজার ইন্টারফেসের অন্যান্য গ্রাফিকাল উপাদানগুলিকে নিয়ন্ত্রণ করে। বিভিন্ন ইনস্টলেশনে এক্স উইন্ডো সিস্টেমের চেহারায় পার্থক্য মূলত বিভিন্ন উইন্ডো ম্যানেজারের ব্যবহার বা উইন্ডো ম্যানেজারের বিভিন্ন কনফিগারেশন থেকে উদ্ভূত হয়। উইন্ডো ম্যানেজার উইন্ডোগুলির অবস্থান নির্ধারণ, তাদের চারপাশে আলংকারিক সীমানা স্থাপন, আইকন পরিচালনা, উইন্ডোর বাইরে মাউস ক্লিক পরিচালনা ("পটভূমিতে"), নির্দিষ্ট কীস্ট্রোক পরিচালনা ইত্যাদির যত্ন নেয়। এক্স সার্ভারের দৃষ্টিকোণ থেকে, উইণ্ডো ম্যানেজার অন্য যে কোনও ক্লায়েন্টের মতো ক্লায়েন্ট হিসাবে কাজ করে। উইন্ডোগুলির চারপাশে প্রাথমিক অবস্থান এবং আলংকারিক সীমানা নিম্নলিখিত অনুরোধগুলি ব্যবহার করে উইণ্ডো ম্যানেজার দ্বারা পরিচালিত হয়ঃ একটি অ্যাপ্লিকেশন সার্ভারকে একটি প্রদত্ত উইন্ডোর ম্যাপিং (দেখানো) সাব-উইন্ডোগুলির অনুরোধগুলি সন্তুষ্ট না করার জন্য অনুরোধ করতে পারে এবং পরিবর্তে একটি ইভেন্ট পাঠাতে পারে; একটি অ্যাপ্লিকেশন একটি উইন্ডোর প্যারেন্ট পরিবর্তন করার অনুরোধ করতে পারে। উইন্ডো ম্যানেজার শীর্ষ-স্তরের উইন্ডোগুলির (মূল উইন্ডোর শিশুরা) ম্যাপিংয়ের জন্য যে কোনও অনুরোধ আটকানোর জন্য প্রথম অনুরোধটি ব্যবহার করে। যখনই অন্য কোনও অ্যাপ্লিকেশন কোনও শীর্ষ-স্তরের উইন্ডোর ম্যাপিংয়ের অনুরোধ করে, তখন সার্ভার তা করে না বরং পরিবর্তে উইন্ডো ম্যানেজারের কাছে একটি ইভেন্ট পাঠায়। বেশিরভাগ উইণ্ডো ম্যানেজার উইন্ডোটির পুনর্ব্যবহার করেঃ তারা একটি বৃহত্তর শীর্ষ-স্তরের উইন্ডো তৈরি করে (ফ্রেম উইন্ডো নামে পরিচিত) এবং শিশু হিসাবে মূল উইন্ডোটির পুনর্ব্যবহার করে। গ্রাফিকভাবে, এটি ফ্রেম উইন্ডোর ভিতরে মূল উইন্ডোটি রাখার সাথে মিলে যায়। ফ্রেম উইন্ডোর যে স্থানটি মূল উইন্ডো দ্বারা নেওয়া হয় না তা উইন্ডোটির চারপাশে আলংকারিক ফ্রেমের জন্য ব্যবহার করা হয় ("বর্ডার" এবং "টাইটেল বার")। উইণ্ডো ম্যানেজার ফ্রেম উইন্ডোতে মাউস ক্লিক পরিচালনা করে। এটি, উদাহরণস্বরূপ, একজন ব্যবহারকারীকে সীমানায় বা শিরোনাম বারে ক্লিক করে এবং টেনে উইন্ডোটি সরাতে বা আকার পরিবর্তন করতে দেয়। উইণ্ডো ম্যানেজার গ্রাফিক্যাল ইউজার ইন্টারফেসের আইকন এবং সম্পর্কিত ভিজ্যুয়াল উপাদানগুলিও পরিচালনা করে। এক্স উইন্ডো কোর প্রোটোকলের স্তরে আইকনগুলির অস্তিত্ব নেই। এগুলি উইণ্ডো ম্যানেজার দ্বারা বাস্তবায়িত হয়। উদাহরণস্বরূপ, যখনই কোনও উইন্ডোটিকে "আইকনিফাইড" করতে হয়, এফভিডব্লিউএম উইন্ডো ম্যানেজার উইন্ডোটিকে আনম্যাপ করে এবং আইকনের নামের জন্য একটি উইন্ডো তৈরি করে এবং সম্ভবত আইকন চিত্রের জন্য অন্য একটি উইন্ডো তৈরি করে। আইকনগুলির অর্থ এবং পরিচালনা সম্পূর্ণরূপে উইন্ডো ম্যানেজার দ্বারা নির্ধারিত হয়ঃ কিছু উইন্ডো ম্যানেজার যেমন ডাব্লুএম 2 আইকনগুলি মোটেও প্রয়োগ করে না। মোটামুটিভাবে, একটি অধিবেশনের অবস্থা হল একটি নির্দিষ্ট সময়ে "ডেস্কটপের অবস্থা": তাদের বর্তমান বিষয়বস্তু সহ উইন্ডোগুলির একটি সেট। আরও সুনির্দিষ্টভাবে, এটি এই উইন্ডোগুলি পরিচালনাকারী অ্যাপ্লিকেশনগুলির সেট এবং তথ্য যা প্রয়োজন হলে এই অ্যাপ্লিকেশনগুলিকে তাদের পরিচালিত উইন্ডোগুলির অবস্থা পুনরুদ্ধার করতে দেয়। এক্স সেশন ম্যানেজার নামে পরিচিত একটি প্রোগ্রাম সেশনের অবস্থা সংরক্ষণ এবং পুনরুদ্ধার করে। সর্বাধিক স্বীকৃতভাবে, একটি সেশন ম্যানেজার ব্যবহার করে একজন ব্যবহারকারীকে একটি ইন্টারেক্টিভ সেশন থেকে লগ আউট করার অনুমতি দেয় তবে আবার লগ ইন করার সময় একই অবস্থায় ঠিক একই উইন্ডো খুঁজে পেতে পারে। এটি কাজ করার জন্য, সেশন ম্যানেজার প্রোগ্রামটি লগআউটের সময় চলমান অ্যাপ্লিকেশনগুলির নাম সংরক্ষণ করে এবং লগইন করার সময় সেগুলি আবার শুরু করে। অ্যাপ্লিকেশনগুলির অবস্থাও পুনরুদ্ধার করার জন্য (যা উইন্ডোজের বিষয়বস্তু পুনরুদ্ধার করার জন্য প্রয়োজন), অ্যাপ্লিকেশনগুলিকে অবশ্যই সেশন ম্যানেজারের অনুরোধে তাদের কার্যকারিতার অবস্থা সংরক্ষণ করতে এবং আবার শুরু করার সময় এটি আবার লোড করতে সক্ষম হতে হবে। এক্স উইন্ডো সিস্টেমে এক্স. এস. এম নামে একটি ডিফল্ট সেশন ম্যানেজার রয়েছে। ডেভেলপাররা নির্দিষ্ট ডেস্কটপ সিস্টেমের জন্য অন্যান্য সেশন ম্যানেজারদের লিখেছেন। প্রধান উদাহরণগুলির মধ্যে রয়েছে যথাক্রমে কে. ডি. ই, এক্স. এফ. সি. ই এবং জি. এন. ও. এম। এক্স ডিসপ্লে ম্যানেজার এক্স ডিসপ্লে ম্যানেজার নামে পরিচিত প্রোগ্রামটি এক্স উইন্ডো সিস্টেমে গ্রাফিকাল লগইন প্রম্পট দেখায়। আরও সাধারণভাবে, একজন ডিসপ্লে ম্যানেজার স্থানীয় কম্পিউটারে এক বা একাধিক এক্স সার্ভার চালায় বা দূরবর্তী কম্পিউটারে চলমান এক্স সার্ভার থেকে আগত সংযোগগুলি গ্রহণ করে। স্থানীয় সার্ভারগুলি ডিসপ্লে ম্যানেজার দ্বারা শুরু করা হয়, যা ব্যবহারকারীকে লগইন স্ক্রিনটি উপস্থাপন করার জন্য তাদের সাথে সংযোগ স্থাপন করে। রিমোট সার্ভারগুলি ডিসপ্লে ম্যানেজারের কাছ থেকে স্বাধীনভাবে শুরু হয় এবং এর সাথে সংযুক্ত হয়। এই পরিস্থিতিতে, ডিসপ্লে ম্যানেজার একটি গ্রাফিকাল টেলনেট সার্ভারের মতো কাজ করেঃ একটি এক্স সার্ভার ডিসপ্লে ম্যানেজারের সাথে সংযোগ স্থাপন করতে পারে, যা একটি সেশন শুরু করে; যে অ্যাপ্লিকেশনগুলি এই সেশনটি ব্যবহার করে সেগুলি ডিসপ্লে ম্যানেজারের একই কম্পিউটারে চলে তবে কম্পিউটারে ইনপুট এবং আউটপুট থাকে যেখানে এক্স সার্ভার চলে (যা ব্যবহারকারীর সামনে কম্পিউটার বা দূরবর্তী হতে পারে)। এক্স উইন্ডো সিস্টেমটি প্রাথমিক সরবরাহকৃত ডিসপ্লে ম্যানেজার হিসাবে এক্সডিএম সহ জাহাজগুলি। অন্যান্য প্রদর্শন ব্যবস্থাপকদের মধ্যে রয়েছে জি. ডি. এম (জি. এন. ও. এম), কে. ডি. এম/এস. ডি. ডি. এম (কে. ডি. ই), ডব্লিউ. ডি. এম (উইণ্ডো মেকারে ব্যবহৃত উইংস উইজেট সেট ব্যবহার করে) এবং প্রবেশদ্বার (এনলাইটেনমেন্ট v. 17-এ ব্যবহৃত স্থাপত্য ব্যবহার করে)। এক্স-এর জন্য ইউজার ইন্টারফেস উপাদানগুলির মধ্যে রয়েছে এক্সও (অ্যাথেনা উইজেট সেট, 1983), ওএলআইটি (ওপেন লুক ইন্ট্রিন্সিক্স টুলকিট, 1988), এক্সভিউ (1988), মোটিফ (1980) এবং টাক। ওএলআইটি এবং এক্সভিউ সানের ঐতিহ্যবাহী ওপেনউইন্ডোজ ডেস্কটপ পরিবেশের জন্য মূল টুলকিট হিসাবে কাজ করে। মোটিফ কমন ডেস্কটপ এনভায়রনমেন্ট (সিডিই)-এর জন্য বেস টুলকিট সরবরাহ করে, যা সোলারিস, এআইএক্স এবং এইচপি-ইউএক্স-এর মতো বাণিজ্যিক ইউনিক্স সিস্টেমে ব্যবহৃত ডেস্কটপ পরিবেশ। (সোলারিস 10-এ সিডিই এবং জিনোম উভয়ই অন্তর্ভুক্ত রয়েছে, পরেরটি পছন্দের ডেস্কটপ পরিবেশ সহ।) আরও সম্প্রতি বিকশিত টুলকিটগুলির মধ্যে রয়েছে কিউটি (1991-, কেডিই দ্বারা ব্যবহৃত), জিটিকে + (1997-, জিনোম দ্বারা ব্যবহৃত), ডব্লিউএক্সউইজেট (1992-), এফএলটিকে (1998-), ফক্স (1997-) এবং এফপিজিইউআই (2005-বর্তমান)। এক্সটেনশন স্কিফলার এবং গেটিস এক্স সার্ভারটিকে সহজ কিন্তু এক্সটেনসিবল হিসাবে ডিজাইন করেছেন। যেমন, অনেক কার্যকারিতা এখন প্রোটোকলের এক্সটেনশনে থাকে। প্রটোকল স্তরে, প্রতিটি এক্সটেনশনকে নতুন অনুরোধ/ইভেন্ট/ত্রুটি প্যাকেটের ধরন বরাদ্দ করা যেতে পারে। এক্সটেনশন বৈশিষ্ট্যগুলি ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা এক্সটেনশন লাইব্রেরির মাধ্যমে অ্যাক্সেস করা হয়। সার্ভারের নকশায় মডুলারিটির অভাবের কারণে বর্তমান এক্স সার্ভার বাস্তবায়নে এক্সটেনশন যুক্ত করা কঠিন বলে জানা গেছে। এক্স. এম. এল প্রটোকল বর্ণনা থেকে এক্সটেনশনের ক্লায়েন্ট এবং সার্ভার উভয় দিকই স্বয়ংক্রিয়ভাবে তৈরি করা এক্স. সি. বি প্রকল্পের একটি দীর্ঘমেয়াদী লক্ষ্য। নিম্নলিখিত টেবিলটি প্রবর্তনের পুনরাবৃত্তি দ্বারা মোটামুটিভাবে সাজানো এক্সটেনশনগুলির একটি আংশিক ক্যাটালগ সরবরাহ করেঃ অপ্রচলিত এক্সটেনশনগুলি আরও দেখুন এক্সলিব ইন্ট্রিন্সিক্স (এক্সটি) এক্স উইন্ডো সিস্টেম কোর প্রোটোকল এক্স লজিক্যাল ফন্ট বিবরণ নোটস রেফারেন্স archive.org-এর 1990 সংস্করণ রয়েছে। রবার্ট ডব্লিউ স্কিফলার এবং জেমস গেটিসঃ এক্স উইন্ডো সিস্টেমঃ কোর এবং এক্সটেনশন প্রোটোকল, এক্স সংস্করণ 11, রিলিজ 6 এবং 6.1, ডিজিটাল প্রেস 1996, এক্স উইন্ডোজের ভূমিকা [sic] বাহ্যিক লিঙ্ক X.Org ফাউন্ডেশন X.Org ফাউন্ডেশন উইকি এক্স উইন্ডো সিস্টেম অভ্যন্তরীণ কেন্টন লি 'র এক্স উইন্ডো এবং মোটিফ এক্স11 এক্সটেনশন টিউটোরিয়াল প্রোটোকল এবং আর্কিটেকচার অ্যাপ্লিকেশন লেয়ার প্রোটোকল রিমোট ডেস্কটপ প্রোটোকল এক্স উইন্ডো এক্সটেনশন