আমি যখন আমার থিঙ্কপ্যাডকে ডক বা আন-ডক করি তখন নীচের নিয়মটি আমার স্ক্রিপ্টকে কল করে:
# /lib/udev/rules.d/81-thinkpad-dock.rules
KERNEL=="dock.0", ATTR{docked}=="0", RUN+="/usr/bin/think-dock-hook off"
KERNEL=="dock.0", ATTR{docked}=="1", RUN+="/usr/bin/think-dock-hook on"
এটিকেই বলা হবে স্ক্রিপ্ট:
# /usr/bin/think-dock-hook
# Find the user who is currently logged in on the primary screen.
user="$(who -u | grep -F '(:0)' | head -n 1 | awk '{print $1}')"
su -c "bash -x /usr/bin/think-dock $setto" "$user" >> /root/think-dock.log 2>&1 &
এবং তখন যে স্ক্রিপ্ট বলা হয় এটি দিয়ে কিছু করে xrandr
।
জিনিসটি হ'ল আমি think-dock on
আমার ব্যবহারকারী হিসাবে চালাতে পারি ( mu
) এবং এটি কাজ করে। আমি sudo -i
চালাতে পারি think-dock-hook on
এবং এটিও কাজ করে। তবে আমি যখন udev
এটি চালাতে দেই, এটি থেকে নিম্নলিখিত ত্রুটিটি পাওয়া যায় xrandr
:
# output of bash -x think-dock on
+ xrandr --output LVDS1 --auto
Can't open display
এখন আমি যদি xrandr
আমার sudo -i
শেল থেকে কল করি তবে আমি পেলাম:
No protocol specified
No protocol specified
Can't open display :0
তবে, আমি যদি su -c xrandr mu
আমার sudo -i
শেল থেকে করি তবে আমি প্রত্যাশিত আউটপুট পাব get
সুতরাং আমি সত্যিই বুঝতে পারি না, স্ক্রিপ্টটি udev
ব্যর্থ হয়েছিল।
যে
—
মার্টিন উয়েডিং
DISPLAY
ভাল মনে হয়। আমার who
প্রদর্শন (:0)
যদিও। সুতরাং আমি মনে করি না যে গ্রেপ সেভাবে ভাল হবে।
ঠিক আছে,
—
মার্টিন উয়েডিং
DISPLAY
সামনে রেখে bash
, এখন মনে হচ্ছে এটি কাজ করছে। ধন্যবাদ!
গ্রেট! আমার
—
পর
who
ছিল 0.0
, তবে যাই হোক। যেহেতু এটি কাজ করেছে, আমি DISPLAY
উত্তর হিসাবে অংশটি যুক্ত করব ; দয়া করে এটি গ্রহণ করুন। ধন্যবাদ!
grep -F '(:0)'
হওয়া উচিতgrep -F '(:0.0)'
; একটি স্টিকিং চেষ্টাDISPLAY=:0.0
সামনে/usr/bin/think-dock