original in en Guido Socher
en to ar Taha Zerrouki
غيدو يهوى لينكس ليس لأنه يهتم بفهم كيفية عمل أنظمة التشغيل فحسب، بل للناس المهتمين بتصميمه أيضا..
المستجدون في لينكس يعتقدون أن واجهة X الرسومية ليست سوى نوافذ مثل الوندوز تعمل فيها التطبيقات . بعضهم تفطنوا أن لديهم مكاتب عديدة أو هذا ما يبدو . واجهة لينكس (X11) أكثر من ذلك، إنها نظام و نوافذ و شبكة. و سنرى معا من فوائدها الجمة.
في وا جهة X ، كل تطبيق يقرأ متغير البيئة للعرض DISPLAY، ليحدد شاشة الحاسوب التي سيعرض عليها. هذا و زد عليه قدرات الشبكة على الواجهة يجعلك تجري تطبيقا عن بعد. فتستفيد من طاقة المعالج السريع في حاسوب آخر، بينما تعرض كل ما تريد أمامك على شاشتك، حتى لا تكاد تشعر أنك تعمل على حاسوبين اثنين.
ما الفائدة من ذلك؟ التطبيقات الرسومية الشبكية كثيرة. تعمل بها الشركات على أجهزة قد تتباعد آلاف الأميال، و أنت كذلك و كأنك في ذات الموقع.
ربما لديك حاسوبان أحدهما معالجه سريع، سرعته 1 جيغا هرتز، و آخر بنتيوم قديم لا تتجاوز سرعته 133 ميغا هرتز، ربما تريد أن تستفيد من سرعة السريع دون أن تجلس بين يديه، أو ربما شقيقتك الصغرى تجلس مكانك أمامه، لكن هذا لا يمنعك من الاستفادة منه.
اعلم أن معظم التطبيقات - gimp،xterm ، konquerer، netscape، ...- زبائن شبكية لدى خادم X. خادم X يرسم و يلون و يأمر الأجهزة بما يلزم، و يستقبل منها حركة الفأرة و كتابة لوحة المفاتيح.
فالتطبيق الزبون- netscape مثلا - يتعامل مع الخادم فيطلب منه أن يرسم له أو يكتب، و يحصل منه على ما نحود به الفأرة و لوحة المفاتيح.
تذكر، لابد لك من إذْن، و إلا لاستطاع أي كان أن يستغل حاسوب أي كان. البرنامجان xhost و xauth يعنيان بذلك، إذ يحددان الصلاحيات، فيأذنان و يمنعان.
- xhost ، به تسمح لأي شخص - من حاسوب معين - أن يرسم على شاشتك. مثلا : هب أنك أمام جهاز يسمى فيلوسوفوس، و ترغب أن تسمح لأي برنامج من جهاز آخر يدعى موفيتُكس أن يعرض ما يريد على شاشة فيلوسوفوس. عليك إذن بالأمر - اكتبه في سطر الأوامر في فيلوسوفوس- :
xhost +movietux
- xauth : كعكة للإذن ، أكثر تطور، إذ بها تأذن لأفراد بعينهم، فهي بذلك آكثر أمنا من xhost.
الإذن يستعمل كعكة محفوظة في الملف Xauthority. في المجلد الشخصي للمأذون له. فحين يتصل حاسوب به كعكة صالحة في هذا الملف فيؤذن له بالدخول و الرسم.
و حتى ترسل الكعكة (تنسخها) من الحاسوب الذي بين يديك (فيلوسوفوس) إلى الحاسوب التي تريد أن تاذن له ( لتجري فيه البرنامج، موفيتكس)، جرب احدى الطريقيتن:
xauth extract -
philosophus:0.0 | ssh movietux /usr/X11R6/bin/xauth merge
أو
scp ~/.Xauthority movietux:
عند انطلاق البرنامج (
الزبون ) يجري ما يأتي :
يتفحص الزبون نتغير البيئة للعرض DISPLAY ليتعرف على الخادم الذي سيتعامل معه.
يتأكد الخادم إن كان للزبون الإذن بالعرض على شاشة الخادم، فإن نعم، يرسم له ما يريد، وإلا فلا.
صيغة متغير البيئة للعرض DISPLAY هي :
bash:export DISPLAY=hostname:displaynumber.screennumber
tcsh:setenv DISPLAY hostname:displaynumber.screennumber
لن أتحدث عن displaynumber و لا عن screennumber، فهما عادة 0:0 .
مثلا هي في bash :
export DISPLAY=philosophus:0.0
بعد كل ما رأيناه نظريا، جرب حظك عمليا بهذا المثال، كل ما نريده أن نجلس أمام فيلوسوفوس و أجر تطبيقا عن بعد على موفيتكس.
أخبر خادم X أنك
تأذن لموفيتكس أن تعرض على شاشتك.:
xhost +movietux
أدخل عن بعد إلى
المضيف موفيتكس :
slogin -l username movietux
لقد دخلت إلى
موفيتكس، و كل ما ستأمر سينفذ
على موفيتكس:
export DISPLAY=philosophus:0.0
أجر برنامجا و ليكن
:
netscape &
إن كانت موفيتكس أسرع، فستلاحظ أن برنامجك يسرع عما عليه إن عمل على فيلوسوفوس - الحاسوب الذي بين يديك-. بيد انك لن تعرف إن كان البرنامج يعمل هنا أو هناك، ما دمت تعمل بالفأرة و لوحة المفاتيح دون أدنى فرق، ما أروع ذلك؟
إجراء التطبيق بعيدا سهل، مع ذلك أود لو جعلت الأوامر اللازمة لتعديل متغير البيئة للعرض DISPLAY عملا آليا:
إن استعملت ssh للدخول البعيد فسيتعدل DISPLAY تلقائيا، العديد من برامج الدخول البعيد تدعم DISPLAY لكن ssh أكثرها شيوعا.
إن استعملت slogin أو
أوامر أخرى استعن بمخطوطتي في
المضيف البعيد: :
بالنسبة إلى tcsh :
# take your display with you at remote
login:
# Put it into your ~/.login file
set whoami=`who -ml`
set remhost=`expr "$whoami" : '.*(\(.*\))'`
if ( "$remhost" != "" ) then
setenv DISPLAY "$remhost":0.0
endif
المخطوطة تحصل على اسم الحاسوب البعيد بالأمر"who -ml" ، فتحصل على مثل هذا :