X Window System protocols and architecture
કમ્પ્યુટિંગમાં, X વિન્ડો સિસ્ટમ (સામાન્ય રીતેઃ X11, અથવા X) એ બીટમેપ ડિસ્પ્લે માટે નેટવર્ક-પારદર્શક વિન્ડો સિસ્ટમ છે. આ લેખ X11 ના પ્રોટોકોલ અને તકનીકી માળખાની વિગતો આપે છે. ક્લાયન્ટ-સર્વર મોડેલ અને નેટવર્ક પારદર્શિતા X ક્લાયન્ટ-સર્વર મોડેલનો ઉપયોગ કરે છે. એક્સ સર્વર પ્રોગ્રામ ગ્રાફિકલ ડિસ્પ્લે સાથે કમ્પ્યુટર પર ચાલે છે અને વિવિધ ક્લાયન્ટ પ્રોગ્રામ્સ સાથે વાતચીત કરે છે. X સર્વર વપરાશકર્તા અને ક્લાયન્ટ પ્રોગ્રામ્સ માટે મધ્યસ્થી તરીકે કામ કરે છે, ક્લાયન્ટ પ્રોગ્રામ્સમાંથી ગ્રાફિકલ આઉટપુટ (વિંડોઝ) માટે TCP પોર્ટ 6000 પર વિનંતીઓ સ્વીકારે છે અને તેમને વપરાશકર્તા (ડિસ્પ્લે) પર પ્રદર્શિત કરે છે, અને વપરાશકર્તા ઇનપુટ (કીબોર્ડ, માઉસ) પ્રાપ્ત કરે છે અને તેને ક્લાયન્ટ પ્રોગ્રામ્સમાં પ્રસારિત કરે છે. X માં, સર્વર વપરાશકર્તાના કમ્પ્યુટર પર ચાલે છે, જ્યારે ગ્રાહકો દૂરસ્થ મશીનો પર ચલાવી શકે છે. આ પરિભાષા ક્લાયન્ટ-સર્વર પ્રણાલીઓની સામાન્ય કલ્પનાને ઉલટાવી દે છે, જ્યાં ક્લાયન્ટ સામાન્ય રીતે વપરાશકર્તાના સ્થાનિક કમ્પ્યુટર પર ચાલે છે અને સર્વર દૂરસ્થ કમ્પ્યુટર પર ચાલે છે. એક્સ વિન્ડો પરિભાષા એ પરિપ્રેક્ષ્ય લે છે કે એક્સ વિન્ડો પ્રોગ્રામ તમામ પ્રવૃત્તિના કેન્દ્રમાં છે, એટલે કે. X વિન્ડો પ્રોગ્રામ એપ્લિકેશનોની વિનંતીઓ અને વપરાશકર્તાના માઉસ અને કીબોર્ડ ઇનપુટને સ્વીકારે છે અને તેનો જવાબ આપે છે. તેથી, એપ્લિકેશન્સ (દૂરસ્થ કમ્પ્યુટર્સ પર) ને X વિન્ડો સર્વર પ્રોગ્રામના ક્લાયન્ટ્સ તરીકે જોવામાં આવે છે. સર્વર અને ક્લાયન્ટ વચ્ચેનો સંચાર પ્રોટોકોલ નેટવર્ક-પારદર્શક રીતે ચાલે છેઃ ક્લાયન્ટ અને સર્વર એક જ મશીન પર અથવા અલગ-અલગ મશીનો પર ચાલી શકે છે, સંભવતઃ વિવિધ આર્કિટેક્ચર અને ઓપરેટિંગ સિસ્ટમ્સ સાથે. ક્લાયન્ટ અને સર્વર એન્ક્રિપ્ટેડ જોડાણ પર જોડાણને ટનલ કરીને ઇન્ટરનેટ પર સુરક્ષિત રીતે વાતચીત કરી શકે છે. ડિઝાઇન સિદ્ધાંતો બોબ સ્કિફલર અને જિમ ગેટ્ટીઝે X ના પ્રારંભિક સિદ્ધાંતોને નીચે પ્રમાણે નિર્ધારિત કર્યા છે (સ્કિફલર/ગેટ્ટીઝ 1996 માં સૂચિબદ્ધ કર્યા મુજબ): નવી કાર્યક્ષમતા ઉમેરશો નહીં જ્યાં સુધી કોઈ અમલીકરણકર્તા તેના વિના વાસ્તવિક એપ્લિકેશન પૂર્ણ કરી શકતો નથી. સિસ્ટમ શું નથી તે નક્કી કરવું તેટલું જ મહત્વપૂર્ણ છે કે તે શું છે તે નક્કી કરવું. વિશ્વની તમામ જરૂરિયાતો પૂરી ન કરો; તેના બદલે, સિસ્ટમને વિસ્તૃત બનાવો જેથી વધારાની જરૂરિયાતો ઉપરની તરફ સુસંગત રીતે પૂરી કરી શકાય. એક ઉદાહરણમાંથી સામાન્યીકરણ કરતાં વધુ ખરાબ વસ્તુ કોઈ પણ ઉદાહરણમાંથી સામાન્યીકરણ નથી. જો કોઈ સમસ્યાને સંપૂર્ણ રીતે સમજી ન શકાય, તો તેનો કોઈ ઉકેલ ન આપવો એ કદાચ શ્રેષ્ઠ છે. જો તમે કામના 10 ટકા માટે ઇચ્છિત અસરના 90 ટકા મેળવી શકો છો, તો સરળ ઉકેલનો ઉપયોગ કરો. (વધુ ખરાબ વધુ સારું છે તે પણ જુઓ.) શક્ય તેટલું જટિલતાને અલગ કરો. નીતિને બદલે તંત્ર પ્રદાન કરો. ખાસ કરીને, વપરાશકર્તા ઈન્ટરફેસ નીતિને ગ્રાહકોના હાથમાં મૂકો. X11 ની રચના દરમિયાન પ્રથમ સિદ્ધાંતમાં ફેરફાર કરવામાં આવ્યો હતોઃ જ્યાં સુધી તમને કોઈ વાસ્તવિક એપ્લિકેશનની જરૂર ન હોય ત્યાં સુધી નવી કાર્યક્ષમતા ઉમેરશો નહીં. ત્યારથી X એ મોટાભાગે આ સિદ્ધાંતોનું પાલન કર્યું છે. X.Org ફાઉન્ડેશન અમલીકરણના વિસ્તરણ અને સુધારણાને ધ્યાનમાં રાખીને સંદર્ભ અમલીકરણ વિકસાવે છે, જ્યારે તેને મૂળ 1987 પ્રોટોકોલ સાથે લગભગ સંપૂર્ણપણે સુસંગત રાખે છે. સર્વર અને ક્લાયન્ટ્સ વચ્ચે મુખ્ય પ્રોટોકોલ સંચાર નેટવર્ક ચેનલ પર પેકેટોની આપ-લે કરીને કરવામાં આવે છે. ગ્રાહક જોડાણ સ્થાપિત કરે છે, પ્રથમ પેકેટ મોકલે છે. સર્વર જોડાણની સ્વીકૃતિ અથવા અસ્વીકાર દર્શાવતું પેકેટ મોકલીને અથવા વધુ પ્રમાણીકરણ માટેની વિનંતી સાથે જવાબ આપે છે. જો જોડાણ સ્વીકારવામાં આવે, તો સ્વીકૃતિ પેકેટમાં ગ્રાહકને સર્વર સાથેની અનુગામી ક્રિયાપ્રતિક્રિયામાં ઉપયોગ કરવા માટે ડેટા હોય છે. જોડાણ સ્થાપિત થયા પછી, ક્લાયન્ટ અને સર્વર ચેનલ પર ચાર અલગ અલગ પ્રકારના પેકેટોની આપ-લે કરે છેઃ વિનંતીઃ ક્લાયન્ટ સર્વર પાસેથી માહિતીની વિનંતી કરે છે અથવા તેને ક્રિયા કરવા માટે વિનંતી કરે છે. જવાબઃ સર્વર વિનંતીનો જવાબ આપે છે. બધી વિનંતીઓ જવાબો ઉત્પન્ન કરતી નથી. ઘટનાઃ સર્વર ક્લાયન્ટને ઇવેન્ટ મોકલે છે, દા. ત., કીબોર્ડ અથવા માઉસ ઇનપુટ, અથવા વિન્ડોને ખસેડવામાં આવે છે, તેનું કદ બદલવામાં આવે છે અથવા ખુલ્લી કરવામાં આવે છે. ભૂલઃ જો વિનંતી અમાન્ય હોય તો સર્વર ભૂલ પેકેટ મોકલે છે. વિનંતીઓ કતારમાં હોવાથી, વિનંતી દ્વારા પેદા થયેલ ભૂલ પેકેટો તરત જ મોકલવામાં નહીં આવે. X સર્વર મૂળભૂત સેવાઓનો સમૂહ પ્રદાન કરે છે. ક્લાયન્ટ પ્રોગ્રામ્સ સર્વર સાથે ક્રિયાપ્રતિક્રિયા કરીને વધુ જટિલ કાર્યક્ષમતાને અનુભવે છે. વિન્ડોઝ જેને અન્ય ગ્રાફિકલ વપરાશકર્તા ઇન્ટરફેસો સામાન્ય રીતે વિન્ડો કહે છે તે X વિન્ડો સિસ્ટમમાં ટોચના સ્તરની વિન્ડો છે. વિન્ડો શબ્દનો ઉપયોગ અન્ય વિન્ડોની અંદર આવેલી વિન્ડો માટે પણ થાય છે, એટલે કે પેરેન્ટ વિન્ડોની સબવિન્ડો. બટનો, મેનુઓ, ચિહ્નો વગેરે જેવા ગ્રાફિકલ ઘટકો. બધા બારીઓનો ઉપયોગ કરીને સાકાર થાય છે. વિન્ડો માત્ર પેરેન્ટ વિન્ડોની સબવિન્ડો તરીકે બનાવી શકાય છે. આ કારણે બારીઓ વૃક્ષમાં અધિક્રમિક રીતે ગોઠવવામાં આવે છે. X સર્વર આપમેળે વૃક્ષનું મૂળ બનાવે છે, જેને રુટ વિન્ડો કહેવાય છે. ટોચના સ્તરની બારીઓ બરાબર રુટ બારીની સીધી પેટા બારીઓ છે. દેખીતી રીતે, રુટ વિંડો સ્ક્રીન જેટલી મોટી છે, અને અન્ય તમામ બારીઓની પાછળ આવેલી છે. ઓળખકર્તાઓ X સર્વર વિન્ડોઝ, ફોન્ટ્સ વગેરે વિશેનો તમામ ડેટા સંગ્રહિત કરે છે. ક્લાયન્ટ આ ઓબ્જેક્ટ્સના ઓળખકર્તાઓને જાણે છે-પૂર્ણાંકો તે સર્વર સાથે ક્રિયાપ્રતિક્રિયા કરતી વખતે તેમના નામો તરીકે ઉપયોગ કરી શકે છે. ઉદાહરણ તરીકે, જો કોઈ ક્લાયન્ટ વિંડો બનાવવાની ઇચ્છા રાખે છે, તો તે સર્વરને એક બનાવવાની વિનંતી કરે છે અને (સફળતાના કિસ્સામાં) બદલામાં નવી બનાવેલી વિંડો સાથે સંકળાયેલ સર્વરને ઓળખકર્તા મળે છે. ઓળખકર્તાનો ઉપયોગ પછીથી ગ્રાહક દ્વારા વિનંતી કરવા માટે કરી શકાય છે, ઉદાહરણ તરીકે, વિંડોમાં દોરવા માટેની સ્ટ્રિંગ. ઓળખકર્તાઓ સર્વર માટે અનન્ય છે, માત્ર ક્લાયન્ટ માટે જ નહીં; ઉદાહરણ તરીકે, કોઈ પણ બે બારીઓ સમાન ઓળખકર્તા ધરાવતી નથી, ભલે તે બે અલગ ક્લાયન્ટ્સ દ્વારા બનાવવામાં આવી હોય. ક્લાયન્ટ તેના ઓળખકર્તાને આપેલ કોઈપણ ઓબ્જેક્ટને ઍક્સેસ કરી શકે છે, પછી ભલે અન્ય ક્લાયન્ટે ઓબ્જેક્ટ બનાવ્યું હોય. વિશેષતાઓ અને ગુણધર્મો દરેક વિંડોમાં વિશેષતાઓનો પૂર્વવ્યાખ્યાયિત સમૂહ અને ગુણધર્મોનો સમૂહ હોય છે, જે તમામ X સર્વરમાં સંગ્રહિત હોય છે અને યોગ્ય વિનંતીઓ દ્વારા ગ્રાહકો માટે સુલભ હોય છે. વિશેષતાઓ વિંડો વિશેની માહિતી છે, જેમ કે તેનું કદ, સ્થિતિ, પૃષ્ઠભૂમિ રંગ વગેરે. ગુણધર્મો એ માહિતીના ટુકડા છે જે વિન્ડો સાથે જોડાયેલા હોય છે. વિશેષતાઓથી વિપરીત, X વિન્ડો કોર પ્રોટોકોલના સ્તરે ગુણધર્મોનો કોઈ અર્થ નથી. ક્લાયન્ટ મનસ્વી માહિતીને બારીની મિલકતમાં સંગ્રહિત કરી શકે છે. મિલકતને નામ, પ્રકાર અને મૂલ્ય દ્વારા વર્ગીકૃત કરવામાં આવે છે. ગુણધર્મો અનિવાર્ય પ્રોગ્રામિંગ ભાષાઓમાં ચલ જેવા હોય છે, જેમાં એપ્લિકેશન આપેલ નામ અને આપેલ પ્રકાર સાથે નવી મિલકત બનાવી શકે છે અને તેમાં મૂલ્ય સંગ્રહિત કરી શકે છે. ગુણધર્મો બારીઓ સાથે સંકળાયેલા છેઃ એક જ નામની બે મિલકતો બે જુદી જુદી બારીઓ પર અસ્તિત્વ ધરાવે છે જ્યારે વિવિધ પ્રકારો અને મૂલ્યો ધરાવે છે. ગુણધર્મોનો ઉપયોગ મોટાભાગે આંતર-ગ્રાહક સંચાર માટે થાય છે. ઉદાહરણ તરીકે, WM _ NAME નામની મિલકત વિન્ડો માટેનું નામ સંગ્રહિત કરે છે; વિન્ડો મેનેજરો સામાન્ય રીતે આ મિલકતને વાંચે છે અને તેની ટોચ પર વિન્ડોનું નામ પ્રદર્શિત કરે છે. એક્સપ્રોપ પ્રોગ્રામ વિંડોના ગુણધર્મો પ્રદર્શિત કરી શકે છે. ખાસ કરીને, xprop-root રુટ વિંડોના ગુણધર્મો દર્શાવે છે, જેમાં X સંસાધનો (કાર્યક્રમોના પરિમાણો) નો સમાવેશ થાય છે. ઇવેન્ટ્સ એ પેકેટો છે જે સર્વર દ્વારા ક્લાયન્ટને સંદેશાવ્યવહાર કરવા માટે મોકલવામાં આવે છે કે કંઈક થયું છે જે ક્લાયન્ટને રસ હોઈ શકે છે. ક્લાયન્ટ સર્વરને અન્ય ક્લાયન્ટને ઇવેન્ટ મોકલવાની વિનંતી કરી શકે છે; આનો ઉપયોગ ક્લાયન્ટ્સ વચ્ચેના સંદેશાવ્યવહાર માટે થાય છે. ઉદાહરણ તરીકે, જ્યારે કોઈ ક્લાયન્ટ હાલમાં પસંદ કરેલા લખાણની વિનંતી કરે છે, ત્યારે ક્લાયન્ટને એક ઇવેન્ટ મોકલવામાં આવે છે જે હાલમાં પસંદગી ધરાવતી વિંડોને સંભાળી રહી છે. કેટલીક પરિસ્થિતિઓમાં બારીની સામગ્રી "નષ્ટ" થઈ શકે છે (ઉદાહરણ તરીકે, જો બારી ઢંકાયેલી હોય તો). જ્યારે પણ નાશ પામેલી સામગ્રીનો વિસ્તાર દૃશ્યમાન કરવામાં આવે છે, ત્યારે સર્વર ક્લાયન્ટને સૂચિત કરવા માટે એક એક્સપોઝ ઇવેન્ટ જનરેટ કરે છે કે વિંડોનો એક ભાગ દોરવો પડશે. અન્ય ઇવેન્ટ્સ ક્લાયન્ટ્સને કીબોર્ડ અથવા માઉસ ઇનપુટ, નવી વિંડોઝ વગેરેની રચનાની જાણ કરવા માટે કામ કરી શકે છે. અમુક પ્રકારની ઇવેન્ટ્સ હંમેશા ક્લાયન્ટને મોકલવામાં આવે છે, પરંતુ મોટાભાગના પ્રકારની ઇવેન્ટ્સ ત્યારે જ મોકલવામાં આવે છે જ્યારે ક્લાયન્ટે અગાઉ તેમાં રસ દર્શાવ્યો હોય, કારણ કે ક્લાયન્ટ્સને અમુક પ્રકારની ઇવેન્ટ્સમાં જ રસ હોઈ શકે છે. ઉદાહરણ તરીકે, ક્લાયન્ટને કીબોર્ડ-સંબંધિત ઇવેન્ટમાં રસ હોઈ શકે છે પરંતુ માઉસ-સંબંધિત ઇવેન્ટ્સમાં નહીં. રંગ સ્થિતિઓ એક્સ વિન્ડો સિસ્ટમ જે રીતે રંગોને સંભાળે છે તે કેટલીકવાર વપરાશકર્તાઓને મૂંઝવણમાં મૂકી શકે છે, અને ઐતિહાસિક રીતે વિવિધ સ્થિતિઓને ટેકો આપવામાં આવ્યો છે. મોટાભાગની આધુનિક એપ્લિકેશનો સંપૂર્ણ રંગનો ઉપયોગ કરે છે (24-બીટ રંગ, લાલ, લીલો અને વાદળી દરેક માટે 8 બિટ્સ), પરંતુ જૂની અથવા નિષ્ણાત એપ્લિકેશનોને અલગ રંગ મોડની જરૂર પડી શકે છે. ઘણી વ્યાવસાયિક નિષ્ણાત એપ્લિકેશનો સ્યુડોકલરનો ઉપયોગ કરે છે. X11 પ્રોટોકોલ વાસ્તવમાં મોટાભાગના ગ્રાફિક કામગીરીમાં એક જ રંગનું પ્રતિનિધિત્વ કરવા માટે એક જ 32-બીટ સહી વગરના પૂર્ણાંકનો ઉપયોગ કરે છે-જેને પિક્સેલ વેલ્યુ કહેવાય છે. પ્રાથમિક રંગોની તીવ્રતાને સ્થાનાંતરિત કરતી વખતે, દરેક રંગ ઘટક માટે 16 બીટ પૂર્ણાંકનો ઉપયોગ થાય છે. રંગોની નીચેની રજૂઆતો અસ્તિત્વ ધરાવે છે; તે બધાને ચોક્કસ ઉપકરણ પર ટેકો આપી શકાતો નથી. ડાયરેક્ટકલરઃ પિક્સેલ મૂલ્ય અલગ લાલ, લીલો અને વાદળી પેટાક્ષેત્રોમાં વિઘટિત થાય છે. દરેક પેટાક્ષેત્ર એક અલગ રંગ નકશાને અનુક્રમિત કરે છે. તમામ રંગીન નકશામાં પ્રવેશો બદલી શકાય છે. ટ્રુકલરઃ ડાયરેક્ટકલર જેવું જ છે, સિવાય કે કલરમેપની એન્ટ્રીઓ હાર્ડવેર દ્વારા પૂર્વવ્યાખ્યાયિત હોય છે અને તેને બદલી શકાતી નથી. લાક્ષણિક રીતે, લાલ, લીલો અને વાદળી રંગના દરેક નકશા તીવ્રતાના (નજીકના) રેખીય રેમ્પ પ્રદાન કરે છે. ગ્રેસ્કેલઃ એક પિક્સેલ મૂલ્ય અનુક્રમણિકા એક જ રંગીન નકશાને દર્શાવે છે જેમાં મોનોક્રોમ તીવ્રતા હોય છે. રંગીન નકશાની એન્ટ્રીઓ બદલી શકાય છે. સ્ટેટિકગ્રેઃ ગ્રેસ્કેલ જેવું જ, સિવાય કે રંગીન નકશાની એન્ટ્રીઓ હાર્ડવેર દ્વારા પૂર્વવ્યાખ્યાયિત હોય છે અને તેને બદલી શકાતી નથી. સ્યુડોકલર (ચંકી): એક પિક્સેલ મૂલ્ય એક જ રંગીન નકશાને અનુક્રમિત કરે છે જેમાં રંગની તીવ્રતા હોય છે. રંગીન નકશાની એન્ટ્રીઓ બદલી શકાય છે. સ્ટેટિક કલરઃ સ્યુડોકલર જેવું જ છે, સિવાય કે કલરમેપની એન્ટ્રીઓ હાર્ડવેર દ્વારા પૂર્વવ્યાખ્યાયિત હોય છે અને તેને બદલી શકાતી નથી. Xlib અને અન્ય ક્લાયન્ટ લાઈબ્રેરીઓ મોટાભાગના ક્લાયન્ટ પ્રોગ્રામ્સ Xlib ક્લાયન્ટ લાઈબ્રેરી દ્વારા સર્વર સાથે વાતચીત કરે છે. Xlib ઉપરાંત, XCB લાઈબ્રેરી X પ્રોટોકોલ સાથે વધુ નજીકથી કામ કરે છે. ખાસ કરીને, મોટાભાગના ગ્રાહકો Xaw, Motif, GTK + અથવા Qt જેવી લાઈબ્રેરીઓનો ઉપયોગ કરે છે જે સર્વર સાથે ક્રિયાપ્રતિક્રિયા કરવા માટે Xlib નો ઉપયોગ કરે છે. ક્યુટીએ 5.0 પ્રકાશન સાથે એક્સલિબથી એક્સસીબી પર સ્વિચ કર્યું, પરંતુ ક્લાયન્ટ પ્રોગ્રામ્સ આ ફેરફારથી લગભગ સંપૂર્ણપણે અસરગ્રસ્ત ન હતા. ઇન્ટર-ક્લાયન્ટ કોમ્યુનિકેશન X વિન્ડો કોર પ્રોટોકોલ ક્લાયન્ટ્સ વચ્ચે કોમ્યુનિકેશન માટે મિકેનિઝમ્સ પ્રદાન કરે છેઃ વિન્ડો ગુણધર્મો અને ઇવેન્ટ્સ, ખાસ કરીને ક્લાયન્ટ-ટુ-ક્લાયન્ટ મેસેજ ઇવેન્ટ્સ. જો કે, તે આવી ક્રિયાપ્રતિક્રિયાઓ માટે કોઈ પ્રોટોકોલનો ઉલ્લેખ કરતું નથી. તેના બદલે, આંતર-ગ્રાહક સંચાર સંમેલનોનો એક અલગ સમૂહ આ પ્રોટોકોલનું સંચાલન કરે છે. ઇન્ટર-ક્લાયન્ટ કોમ્યુનિકેશન કન્વેન્શન મેન્યુઅલ વિન્ડો મેનેજર સાથે પસંદગીઓ અને એપ્લિકેશનોની ક્રિયાપ્રતિક્રિયા દ્વારા ડેટાના વિનિમય માટેના પ્રોટોકોલને સ્પષ્ટ કરે છે. કેટલાક લોકોએ આ સ્પષ્ટીકરણને મુશ્કેલ અને ગૂંચવણભર્યું માન્યું છે; એપ્લિકેશન દેખાવ અને લાગણી અને સંદેશાવ્યવહારની સુસંગતતા સામાન્ય રીતે આપેલ ડેસ્કટોપ વાતાવરણમાં પ્રોગ્રામિંગ દ્વારા સંબોધવામાં આવે છે. ઇન્ટર-ક્લાયન્ટ એક્સચેન્જ પ્રોટોકોલ (ICE) ગ્રાહકો વચ્ચે ક્રિયાપ્રતિક્રિયા માટે પ્રોટોકોલ બનાવવા માટેનું માળખું સ્પષ્ટ કરે છે, જેથી પ્રોગ્રામરો તેની ટોચ પર ચોક્કસ પ્રોટોકોલ બનાવી શકે. ખાસ કરીને, X સત્ર વ્યવસ્થાપન પ્રોટોકોલ (XSMP) એ ICE પર આધારિત એક પ્રોટોકોલ છે જે સત્ર વ્યવસ્થાપક સાથેની એપ્લિકેશનો વચ્ચેની ક્રિયાપ્રતિક્રિયાને નિયંત્રિત કરે છે, જે એક પ્રોગ્રામ છે જે ઇન્ટરેક્ટિવ સત્રના અંતે ડેસ્કટોપની સ્થિતિને સંગ્રહિત કરવાની અને તે જ વપરાશકર્તા સાથે અન્ય સત્ર ફરીથી શરૂ થાય ત્યારે તેને પુનઃપ્રાપ્ત કરવાની કાળજી લે છે. ફ્રીડેસ્કટોપ સ્પષ્ટીકરણોમાં ડ્રેગ-એન્ડ-ડ્રોપ કન્વેન્શન Xdnd (તેને પસંદ કરીને અને બીજી વિંડોમાં ખેંચીને ડેટાને સ્થાનાંતરિત કરવા માટે વપરાય છે) અને એમ્બેડેડ એપ્લિકેશન કન્વેન્શન Xembed (જે વિગતો આપે છે કે એપ્લિકેશન અન્ય એપ્લિકેશનના સબવિન્ડોમાં કેવી રીતે ચલાવી શકે છે) સહિત નવી પરંપરાઓનો સમાવેશ થાય છે. પસંદગીઓ, કટ બફર્સ અને ડ્રેગ-એન્ડ-ડ્રોપ X વિન્ડો સિસ્ટમમાં પસંદગીઓ, કટ બફર્સ અને ડ્રેગ-એન્ડ-ડ્રોપની પદ્ધતિઓ વપરાશકર્તાને એક વિંડોમાંથી બીજી વિંડોમાં ડેટા ટ્રાન્સફર કરવાની મંજૂરી આપે છે. પસંદગીઓ અને કટ બફરનો ઉપયોગ (સામાન્ય રીતે) ત્યારે થાય છે જ્યારે વપરાશકર્તા વિંડોમાં લખાણ અથવા અન્ય કોઈ ડેટા પસંદ કરે છે અને અલગ વિંડોમાં પેસ્ટ કરે છે. ડ્રેગ-એન્ડ-ડ્રોપનો ઉપયોગ ત્યારે થાય છે જ્યારે વપરાશકર્તા વિંડોમાં કંઈક પસંદ કરે છે, પછી પસંદગી પર ક્લિક કરે છે અને તેને બીજી વિંડોમાં ખેંચે છે. બે જુદી જુદી એપ્લિકેશનો બે બારીઓને સંભાળી શકે છે, તેથી ડેટા ટ્રાન્સફર માટે ક્રિયાપ્રતિક્રિયા કરવા માટે સમાન X સર્વર સાથે જોડાયેલા જુદા જુદા ક્લાયન્ટ્સની જરૂર પડે છે. X વિન્ડો કોર પ્રોટોકોલમાં અમુક પ્રકારની વિનંતીઓ અને ઇવેન્ટ્સનો સમાવેશ થાય છે જે પસંદગી વિનિમય માટે વિશિષ્ટ હોય છે, પરંતુ સ્થાનાંતરણ મુખ્યત્વે સામાન્ય ક્લાયન્ટ-ટુ-ક્લાયન્ટ ઇવેન્ટ મોકલવા અને વિંડો ગુણધર્મોનો ઉપયોગ કરીને કરવામાં આવે છે, જે પસંદગી સ્થાનાંતરણ માટે વિશિષ્ટ નથી. વપરાશકર્તાઓ ગ્રાહકો વચ્ચે વિવિધ પ્રકારનાં ડેટાને સ્થાનાંતરિત કરી શકે છેઃ તે સામાન્ય રીતે લખાણ હોય છે, પરંતુ તે પિક્સમેપ, સંખ્યા, વસ્તુઓની સૂચિ વગેરે પણ હોઈ શકે છે. પસંદગીઓ અને ખેંચો અને છોડો એ સક્રિય પદ્ધતિઓ છેઃ વપરાશકર્તા વિંડોમાં ડેટા પસંદ કરે તે પછી, વિંડોને સંભાળતા ક્લાયન્ટે તે ડેટાને વિનંતી કરતી એપ્લિકેશનમાં સ્થાનાંતરિત કરવા માટે પ્રોટોકોલને સક્રિય રીતે સમર્થન આપવું આવશ્યક છે. કટ બફર, તેનાથી વિપરીત, એક નિષ્ક્રિય પદ્ધતિ પ્રદાન કરે છેઃ જ્યારે વપરાશકર્તા કોઈ લખાણ પસંદ કરે છે, ત્યારે તેની સામગ્રીને કટ બફરમાં સ્થાનાંતરિત કરવામાં આવે છે, જ્યાં તે રહે છે, ભલે વિન્ડોને સંભાળતી એપ્લિકેશન સમાપ્ત થાય અને વિન્ડો નાશ પામે. વિન્ડો મેનેજર એ એક પ્રોગ્રામ છે જે વિન્ડોઝ અને ગ્રાફિકલ યુઝર ઇન્ટરફેસના અન્ય ગ્રાફિકલ તત્વોના સામાન્ય દેખાવને નિયંત્રિત કરે છે. વિવિધ સ્થાપનોમાં X વિન્ડો સિસ્ટમના દેખાવમાં તફાવતો મુખ્યત્વે વિવિધ વિન્ડો મેનેજરોના ઉપયોગ અથવા વિન્ડો મેનેજરના વિવિધ રૂપરેખાંકનોમાંથી ઉદ્ભવે છે. વિન્ડો મેનેજર બારીઓની સ્થિતિ નક્કી કરવા, તેમની આસપાસ સુશોભન સરહદ મૂકવા, ચિહ્નોને સંભાળવા, બારીઓની બહાર માઉસ ક્લિકને સંભાળવા ("બેકગ્રાઉન્ડ" પર), ચોક્કસ કીસ્ટ્રોકને સંભાળવા વગેરેની કાળજી લે છે. એક્સ સર્વરના દૃષ્ટિકોણથી, વિન્ડો મેનેજર અન્ય કોઈપણ ક્લાયન્ટની જેમ જ ક્લાયન્ટ તરીકે કામ કરે છે. વિંડોની આસપાસની પ્રારંભિક સ્થિતિ અને સુશોભન સરહદો વિંડો મેનેજર દ્વારા નીચેની વિનંતીઓનો ઉપયોગ કરીને નિયંત્રિત કરવામાં આવે છેઃ એપ્લિકેશન સર્વરને આપેલ વિંડોના મેપિંગ (દર્શાવતી) સબવિન્ડોની વિનંતીઓને સંતોષવા માટે વિનંતી કરી શકે છે, અને તેના બદલે ઇવેન્ટ મોકલી શકાય છે; એપ્લિકેશન વિંડોના પેરેન્ટને બદલવાની વિનંતી કરી શકે છે. વિન્ડો મેનેજર ટોચના સ્તરની વિન્ડો (રુટ વિન્ડોના બાળકો) નું મેપિંગ કરવા માટેની કોઈપણ વિનંતીને અટકાવવા માટે પ્રથમ વિનંતીનો ઉપયોગ કરે છે. જ્યારે પણ અન્ય એપ્લિકેશન ટોચના સ્તરની વિંડોના મેપિંગની વિનંતી કરે છે, ત્યારે સર્વર તે કરતું નથી પરંતુ તેના બદલે વિંડો મેનેજરને ઇવેન્ટ મોકલે છે. મોટાભાગના વિન્ડો મેનેજરો વિન્ડોને રિપેરન્ટ કરે છેઃ તેઓ એક મોટી ટોપ-લેવલ વિન્ડો બનાવે છે (જેને ફ્રેમ વિન્ડો કહેવાય છે) અને તેના બાળક તરીકે મૂળ વિન્ડોને રિપેરન્ટ કરે છે. ગ્રાફિકલી રીતે, આ મૂળ વિન્ડોને ફ્રેમ વિન્ડોની અંદર મૂકવાને અનુરૂપ છે. ફ્રેમ વિંડોની જે જગ્યા મૂળ વિંડો દ્વારા લેવામાં આવતી નથી તેનો ઉપયોગ વિંડોની આસપાસની સુશોભન ફ્રેમ ("સરહદ" અને "શીર્ષક પટ્ટી") માટે થાય છે. વિન્ડો વ્યવસ્થાપક ફ્રેમ વિંડોમાં માઉસ ક્લિકનું સંચાલન કરે છે. આ, ઉદાહરણ તરીકે, વપરાશકર્તાને સરહદ પર અથવા શીર્ષક પટ્ટી પર ક્લિક કરીને અને ખેંચીને વિંડોને ખસેડવા અથવા તેનું કદ બદલવાની મંજૂરી આપે છે. વિન્ડો મેનેજર ગ્રાફિકલ યુઝર ઇન્ટરફેસના ચિહ્નો અને સંબંધિત દ્રશ્ય તત્વોને પણ સંભાળે છે. એક્સ વિન્ડો કોર પ્રોટોકોલના સ્તરે ચિહ્નો અસ્તિત્વમાં નથી. તેઓ વિન્ડો મેનેજર દ્વારા અમલમાં મૂકવામાં આવે છે. ઉદાહરણ તરીકે, જ્યારે પણ વિન્ડોને "આઇકોનિફાઇડ" કરવાની હોય, ત્યારે FVWM વિન્ડો મેનેજર વિન્ડોને અનમેપ કરે છે, અને ચિહ્નના નામ માટે એક વિન્ડો બનાવે છે અને સંભવતઃ ચિહ્નની છબી માટે બીજી વિંડો બનાવે છે. તેથી ચિહ્નોનો અર્થ અને સંચાલન સંપૂર્ણપણે વિન્ડો મેનેજર દ્વારા નક્કી કરવામાં આવે છેઃ Wm2 જેવા કેટલાક વિન્ડો મેનેજરો ચિહ્નોનો અમલ બિલકુલ કરતા નથી. સત્ર વ્યવસ્થાપક મોટે ભાગે, સત્રની સ્થિતિ એ આપેલ સમયે "ડેસ્કટોપની સ્થિતિ" છેઃ તેમની વર્તમાન સામગ્રી સાથે વિન્ડોઝનો સમૂહ. વધુ ચોક્કસપણે, તે આ વિન્ડોઝ અને માહિતીનું સંચાલન કરતી એપ્લિકેશનોનો સમૂહ છે જે આ એપ્લિકેશનોને જો જરૂરી હોય તો તેમની સંચાલિત વિંડોઝની સ્થિતિને પુનઃસ્થાપિત કરવાની મંજૂરી આપે છે. X સત્ર વ્યવસ્થાપક તરીકે ઓળખાતો પ્રોગ્રામ સત્રોની સ્થિતિને સાચવે છે અને પુનઃસ્થાપિત કરે છે. સૌથી વધુ ઓળખી શકાય તેવું, સત્ર વ્યવસ્થાપકનો ઉપયોગ વપરાશકર્તાને ઇન્ટરેક્ટિવ સત્રમાંથી લૉગ આઉટ કરવાની મંજૂરી આપે છે પરંતુ ફરીથી લૉગ ઇન કરતી વખતે તે જ સ્થિતિમાં બરાબર તે જ વિંડોઝ શોધવાની મંજૂરી આપે છે. આ કામ કરવા માટે, સત્ર વ્યવસ્થાપક કાર્યક્રમ લૉગઆઉટ પર ચાલી રહેલી એપ્લિકેશનોના નામોને સંગ્રહિત કરે છે અને તેમને લોગિન પર ફરીથી શરૂ કરે છે. એપ્લિકેશનોની સ્થિતિને પણ પુનઃસ્થાપિત કરવા માટે (જે વિંડોઝની સામગ્રીને પુનઃસ્થાપિત કરવા માટે જરૂરી છે), એપ્લિકેશનો સત્ર વ્યવસ્થાપકની વિનંતી પર તેમના અમલની સ્થિતિને સાચવવા માટે સક્ષમ હોવા જોઈએ અને જ્યારે તેઓ ફરીથી શરૂ કરે ત્યારે તેને ફરીથી લોડ કરવા માટે સક્ષમ હોવા જોઈએ. X વિન્ડો સિસ્ટમમાં xsm નામના મૂળભૂત સત્ર વ્યવસ્થાપકનો સમાવેશ થાય છે. વિકાસકર્તાઓએ ચોક્કસ ડેસ્કટોપ સિસ્ટમો માટે અન્ય સત્ર સંચાલકો લખ્યા છે. મુખ્ય ઉદાહરણોમાં, અને KDE, Xfce અને GNOME માટે અનુક્રમે સમાવેશ થાય છે. X ડિસ્પ્લે મેનેજર X ડિસ્પ્લે મેનેજર તરીકે ઓળખાતો પ્રોગ્રામ X વિન્ડો સિસ્ટમમાં ગ્રાફિકલ લોગિન પ્રોમ્પ્ટ દર્શાવે છે. વધુ સામાન્ય રીતે, ડિસ્પ્લે મેનેજર સ્થાનિક કમ્પ્યુટર પર એક અથવા વધુ X સર્વર ચલાવે છે અથવા દૂરસ્થ કમ્પ્યુટર પર ચાલતા X સર્વરમાંથી આવતા જોડાણોને સ્વીકારે છે. સ્થાનિક સર્વર ડિસ્પ્લે મેનેજર દ્વારા શરૂ કરવામાં આવે છે, જે પછી વપરાશકર્તાને લૉગિન સ્ક્રીન રજૂ કરવા માટે તેમની સાથે જોડાય છે. દૂરસ્થ સર્વર ડિસ્પ્લે મેનેજરથી સ્વતંત્ર રીતે શરૂ થાય છે અને તેની સાથે જોડાય છે. આ પરિસ્થિતિમાં, ડિસ્પ્લે મેનેજર ગ્રાફિકલ ટેલનેટ સર્વરની જેમ કામ કરે છેઃ એક X સર્વર ડિસ્પ્લે મેનેજર સાથે જોડાઈ શકે છે, જે સત્ર શરૂ કરે છે; આ સત્રનો ઉપયોગ કરતી એપ્લિકેશનો ડિસ્પ્લે મેનેજરના સમાન કમ્પ્યુટર પર ચાલે છે પરંતુ કમ્પ્યુટર પર ઇનપુટ અને આઉટપુટ હોય છે જ્યાં X સર્વર ચાલે છે (જે વપરાશકર્તાની સામે અથવા દૂરસ્થ કમ્પ્યુટર હોઈ શકે છે). એક્સ વિન્ડો સિસ્ટમ મૂળભૂત પૂરા પાડવામાં આવેલ પ્રદર્શન વ્યવસ્થાપક તરીકે એક્સડીએમ સાથે જહાજો ધરાવે છે. અન્ય પ્રદર્શન વ્યવસ્થાપકોમાં જી. ડી. એમ. (જી. એન. ઓ. એમ. ઈ.), કે. ડી. એમ./એસ. ડી. ડી. એમ. (કે. ડી. ઈ.), ડબલ્યુ. ડી. એમ. (વિન્ડો મેકરમાં ઉપયોગમાં લેવાતા વિંગ્સ વિજેટ સેટનો ઉપયોગ કરીને) અને પ્રવેશ (એનલાઇટનમેન્ટ v. 17 માં ઉપયોગમાં લેવાતા આર્કિટેક્ચરનો ઉપયોગ કરીને) નો સમાવેશ થાય છે. વપરાશકર્તા ઈન્ટરફેસ ઘટકો X માટે પ્રારંભિક વિજેટ ટૂલકિટમાં Xaw (એથેના વિજેટ સેટ, 1983), OLIT (ઓપન લુક ઇન્ટ્રિન્સિક્સ ટૂલકિટ, 1988), XVવ્યૂ (1988), મોટિફ (1980) અને Tk નો સમાવેશ થાય છે. OLIT અને XVવ્યૂ સનના વારસાગત ઓપનવિન્ડોઝ ડેસ્કટોપ પર્યાવરણ માટે બેઝ ટૂલકીટ્સ તરીકે કાર્ય કરે છે. મોટિફ કોમન ડેસ્કટોપ એન્વાયર્નમેન્ટ (સી. ડી. ઈ.) માટે બેઝ ટૂલકિટ પ્રદાન કરે છે, જે સોલારિસ, એ. આઈ. એક્સ. અને એચ. પી.-યુ. એક્સ. જેવી વ્યાપારી યુનિક્સ સિસ્ટમો પર વપરાતું ડેસ્કટોપ એન્વાયર્નમેન્ટ છે. (સોલારિસ 10માં સી. ડી. ઈ. અને જી. એન. ઓ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. એમ. તાજેતરમાં વિકસાવવામાં આવેલી ટૂલકીટોમાં ક્યુટી (1991-, કેડીઇ દ્વારા ઉપયોગમાં લેવાતી), જીટીકે + (1997-, GNOME દ્વારા ઉપયોગમાં લેવાતી), ડબલ્યુએક્સવિડગેટ્સ (1992-), એફએલટીકે (1998-), ફોક્સ (1997-) અને એફપીજીયુઆઈ (2005-વર્તમાન) નો સમાવેશ થાય છે. એક્સ્ટેન્શન્સ સ્કિફલર અને ગેટ્ટીઝે એક્સ સર્વરને સરળ પરંતુ એક્સ્ટેન્સિબલ બનાવવા માટે ડિઝાઇન કર્યું હતું. જેમ કે, ઘણી કાર્યક્ષમતા હવે પ્રોટોકોલના વિસ્તરણમાં રહે છે. પ્રોટોકોલ સ્તરે, દરેક એક્સ્ટેંશનને નવી વિનંતી/ઘટના/ભૂલ પેકેટ પ્રકારો સોંપી શકાય છે. એક્સ્ટેંશન સુવિધાઓ ક્લાયન્ટ એપ્લિકેશન્સ દ્વારા એક્સ્ટેંશન લાઈબ્રેરીઓ દ્વારા એક્સેસ કરવામાં આવે છે. સર્વર ડિઝાઇનમાં મોડ્યુલરિટીના અભાવને કારણે વર્તમાન X સર્વર અમલીકરણમાં એક્સ્ટેન્શન્સ ઉમેરવાનું કથિત રીતે મુશ્કેલ છે. એક્સ. એમ. એલ. પ્રોટોકોલ વર્ણનોમાંથી એક્સ્ટેંશનની ક્લાયન્ટ અને સર્વર બંને બાજુઓને સ્વચાલિત બનાવવી એ એક્સ. સી. બી. પ્રોજેક્ટનું લાંબા ગાળાનું લક્ષ્ય છે. નીચેનું કોષ્ટક વિકસાવવામાં આવેલા એક્સ્ટેન્શન્સની આંશિક સૂચિ પ્રદાન કરે છે, જે પરિચયની પુનરાવૃત્તિ દ્વારા આશરે સૉર્ટ કરવામાં આવે છેઃ અપ્રચલિત એક્સ્ટેન્શન્સ પણ જુઓ Xlib ઇન્ટ્રિન્સિક્સ (Xt) X વિન્ડો સિસ્ટમ કોર પ્રોટોકોલ X લોજિકલ ફોન્ટ વર્ણન નોંધો સંદર્ભો archive.org ની 1990 ની આવૃત્તિ છે. રોબર્ટ ડબ્લ્યુ. સ્કિફલર અને જેમ્સ ગેટ્ટીઝઃ એક્સ વિન્ડો સિસ્ટમઃ કોર અને એક્સ્ટેંશન પ્રોટોકોલ, એક્સ વર્ઝન 11, રિલીઝ 6 અને 6.1, ડિજિટલ પ્રેસ 1996, એક્સ વિન્ડોઝનો પરિચય [sic] બાહ્ય લિંક્સ X.Org ફાઉન્ડેશન X.Org ફાઉન્ડેશન વિકિ એક્સ વિન્ડો સિસ્ટમ ઇન્ટર્નલ્સ એક્સ વિન્ડો અને મોટિફ એક્સ11 એક્સ્ટેંશન ટ્યુટોરિયલ પ્રોટોકોલ અને આર્કિટેક્ચર એપ્લિકેશન લેયર પ્રોટોકોલ રિમોટ ડેસ્કટોપ પ્રોટોકોલ એક્સ વિન્ડો એક્સ્ટેંશન