( লিনাক্স থেকে অভিযোজিত : ssh + স্ক্রিনের মাধ্যমে সেশন শুরু করার সময় wmctrl প্রদর্শন খুলতে পারে না )
প্রদর্শন এবং সত্যতা
এক্স ডিসপ্লের সাথে সংযোগ স্থাপনের জন্য একটি এক্স প্রোগ্রামের জন্য দুটি টুকরো তথ্য প্রয়োজন।
এটা তোলে ডিসপ্লে, যা সাধারণত হয় এর ঠিকানা প্রয়োজন :0
যখন আপনি স্থানীয়ভাবে বা লগইন করেন তাহলেও :10
, :11
ইত্যাদি আপনি দূরবর্তী অবস্থান থেকে লগ ইন যখন (কিন্তু সংখ্যা কত এক্স সংযোগ সক্রিয় উপর নির্ভর করে পরিবর্তন করতে পারেন)। ডিসপ্লেটির ঠিকানাটি সাধারণত DISPLAY
পরিবেশের পরিবর্তনশীলতে প্রদর্শিত হয়।
এটি প্রদর্শনের জন্য পাসওয়ার্ডের প্রয়োজন। এক্স ডিসপ্লে পাসওয়ার্ডগুলিকে ম্যাজিক কুকিজ বলা হয় । ম্যাজিক কুকিজগুলি সরাসরি নির্দিষ্ট করা হয় না: এগুলি সর্বদা এক্স কর্তৃপক্ষের ফাইলগুলিতে সঞ্চিত থাকে যা "ডিসপ্লেতে :42
কুকি রয়েছে 123456
" ফর্মের রেকর্ডের সংগ্রহ । এক্স কর্তৃপক্ষ ফাইলটি সাধারণত XAUTHORITY
পরিবেশের পরিবর্তনশীলতে নির্দেশিত হয় । যদি $XAUTHORITY
সেট না করা থাকে তবে প্রোগ্রামগুলি ব্যবহার করে ~/.Xauthority
।
আপনি আপনার ডেস্কটপে প্রদর্শিত উইন্ডোগুলিতে কাজ করার চেষ্টা করছেন। যদি আপনি একমাত্র ব্যক্তি আপনার ডেস্কটপ মেশিন ব্যবহার করেন তবে সম্ভবত প্রদর্শিত নামটি সম্ভবত :0
। এক্স কর্তৃপক্ষের ফাইলটির অবস্থান সন্ধান করা আরও শক্ত, কারণ দেবিয়ান স্কুিজ বা উবুন্টু 10.04 এর অধীনে জিডিএম স্থাপন করার পরে এটি একটি ফাইল এলোমেলোভাবে উত্পন্ন নাম সহ রয়েছে। (আপনার আগে কোনও সমস্যা হয়নি কারণ gdm এর পূর্ববর্তী সংস্করণগুলি ডিফল্ট সেটিংস ব্যবহার করেছিল, অর্থাৎ কুকিজ এতে সঞ্চিত ছিল ~/.Xauthority
))
ভেরিয়েবলের মান পাওয়া
এখানে মান প্রাপ্ত করার কয়েকটি উপায় রয়েছে DISPLAY
এবং XAUTHORITY
:
আপনি নিয়মিতভাবে আপনার ডেস্কটপ থেকে একটি স্ক্রিন সেশন শুরু করতে পারেন, সম্ভবত আপনার লগইন স্ক্রিপ্টগুলিতে স্বয়ংক্রিয়ভাবে (থেকে ~/.profile
; তবে এটি কেবল এক্স এর অধীনে লগইন করুন: পরীক্ষা DISPLAY
দিয়ে কোনও মান শুরু হলে সেট করা হয় :
(এটি সম্ভবত আপনার সমস্ত ক্ষেত্রে আবশ্যক এনকাউন্টার)). ইন ~/.profile
:
case $DISPLAY in
:*) screen -S local -d -m;;
esac
তারপরে, ssh অধিবেশনে:
screen -d -r local
এছাড়াও আপনি মান বাঁচাতে পারে DISPLAY
এবং XAUTHORITY
একটি ফাইলে ও মূল্যবোধ কথা বলেন। ইন ~/.profile
:
case $DISPLAY in
:*) export | grep -E '(^| )(DISPLAY|XAUTHORITY)=' >~/.local-display-setup.sh;;
esac
Ssh অধিবেশন:
. ~/.local-display-setup.sh
screen
আপনি একটি চলমান প্রক্রিয়া DISPLAY
এবং এর মান সনাক্ত করতে পারে XAUTHORITY
। এটি স্বয়ংক্রিয়ভাবে কঠিন। আপনি যে প্রক্রিয়াটিতে কাজ করতে চান তার সাথে সংযুক্ত একটি প্রক্রিয়ার পিআইডি বের করতে হবে, তারপরে /proc/$pid/environ
( eval export $(</proc/$pid/environ tr \\0 \\n | grep -E '^(DISPLAY|XAUTHORITY)=')
¹) থেকে পরিবেশের ভেরিয়েবলগুলি পান ।
কুকিগুলি অনুলিপি করা হচ্ছে
আরেকটি পদ্ধতির ( অ্যারোমাস্টারের পরামর্শ অনুসারে ) $XAUTHORITY
ssh সেশনের মান অর্জনের চেষ্টা না করা , বরং এক্স সেশনটির কুকিগুলিতে অনুলিপি করা ~/.Xauthority
। যেহেতু আপনি লগইন করে প্রতিবার কুকিজ তৈরি হয় তাই আপনি বাসি মান রাখলে সমস্যা হয় না ~/.Xauthority
।
সুরক্ষা সমস্যা হতে পারে যদি আপনার হোম ডিরেক্টরিটি এনএফএস বা অন্যান্য নেটওয়ার্ক ফাইল সিস্টেমে অ্যাক্সেসযোগ্য হয় যা দূরবর্তী প্রশাসকদের এর সামগ্রীগুলি দেখতে দেয়। আপনি যদি এখনও টি টিসিপি সংযোগগুলি সক্ষম না করেন (ডিবিয়ান সেগুলি ডিফল্টরূপে বন্ধ করে দেয়) তবে তাদের কোনওভাবেই আপনার মেশিনের সাথে সংযোগ স্থাপন করা দরকার। সুতরাং বেশিরভাগ লোকের ক্ষেত্রে, এটি হয় প্রযোজ্য নয় (কোনও এনএফএস নেই) বা কোনও সমস্যা নয় (এক্স টিসিপি সংযোগ নেই)।
আপনি যখন আপনার ডেস্কটপ এক্স সেশনে লগইন করবেন তখন কুকিগুলি অনুলিপি করতে, নিম্নলিখিত লাইনগুলিতে ~/.xprofile
বা ~/.profile
(অথবা আপনি লগ ইন করার পরে পড়া হয় এমন কিছু অন্যান্য স্ক্রিপ্ট) যুক্ত করুন:
case $DISPLAY:$XAUTHORITY in
:*:?*)
# DISPLAY is set and points to a local display, and XAUTHORITY is
# set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac
¹ বস্তুত এই উদ্ধৃতি সঠিক, কিন্তু এই নির্দিষ্ট ইনস্ট্যান্সের মধ্যে অভাব আছে $DISPLAY
এবং $XAUTHORITY
কোন শেল metacharacter থাকবে না।