একাধিক মনিটরকে কীভাবে লাইটডিএম-এর সঠিক রেজোলিউশনগুলি বাধ্য করা যায়?


17

আমি বিইউজি দ্বারা আক্রান্ত: https://bugs.launchpad.net/ubuntu/+source/unity-greeter/+bug/874241 অন্যথায়, আমার মতো যদি আপনার কাছে উচ্চতর রেজোলিউশনের দ্বিতীয় মনিটরের সাথে সংযুক্ত একটি ল্যাপটপ থাকে, LIGHTDM এ লগইন পর্যায়ে, উভয় স্ক্রিনে ডিসপ্লেগুলি আয়না করে এবং একাধিক মনিটরের ইউএক্স স্পেসিফিকেশন বইতে উল্লিখিত ডেস্কটপটি (গ্রিটারের সাথে প্রাথমিক পর্দা এবং কেবলমাত্র একটি লোগো সহ গৌণ সহ আমার ক্ষেত্রে একটি সাধারণ রেজোলিউশন (1024X768) অর্পণ করুন) 12.04 এর জন্য)।

এখানে আমার xrandr -q

@L502X:~$ xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1848, maximum 8192 x 8192
LVDS1 connected 1366x768+309+1080 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
   1920x1080      60.0*+
   1600x1200      60.0  
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x960       60.0  
   1280x800       59.8  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        60.0  
DP1 disconnected (normal left inverted right x axis y axis)

আমি প্রতিটি মনিটরের জন্য সঠিক রেজোলিউশন সেট করতে এবং ডেস্কটপটি প্রসারিত করার জন্য লাইটডিএমকে কিছু xrandr কমান্ড কার্যকর করতে জোর করার চেষ্টা করেছি, তাই আমি /usr/share/lightdmxrand.sh নামে একটি সাধারণ স্ক্রিপ্ট তৈরি করেছি :

#!/bin/sh
xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1

এবং এটি চালাতে লাইটডিএমকে বলেছে: /etc/lightdm/lightdm.conf

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-setup-script=/usr/bin/numlockx on
display-setup-script=/usr/share/lightdmxrandr.sh

পুনরায় চালু করা লাইটডিএম: sudo restart lightdm এবং unity ক্য গ্রিটার লগইন স্ক্রিনটি সঠিক ছিল। তাদের যথাযথ সঠিক রেজোলিউশন সহ স্ক্রিনগুলি এবং যদি আমি মাউসটিকে একটি স্ক্রিনে স্থানান্তর করি তবে এটি লগইন বাক্স এবং প্যানেলের সাথে দৃষ্টি নিবদ্ধ করে, অন্যদিকে ফোকাসযুক্ত স্ক্রিনটি কেবল একটি উবুন্টু লোগো প্রদর্শন করে (এমএম ইউএক্স স্পেস বইটিতে যেমন নির্দিষ্ট করা হয়েছে)। ফ্যান্টাস্টিক!

বাহ্যিক মনিটর ল্যাপটপের সাথে সংযুক্ত থাকাকালীন এই কর্মক্ষেত্রটি দুর্দান্ত কাজ করে। লগইন পর্যায়ে এটি সংযুক্ত নেই এমন পরিস্থিতিতে আমি পেয়েছি: একটি নিম্ন গ্রাফিক্স মোডে ত্রুটি (আপনি কম গ্রাফিক্স মোডে চলছেন, আপনার স্ক্রিন, ইনপুট ডিভাইসগুলি ... সনাক্ত করা যায়নি)। সাধারণ, কারণ xrandrএকটি অ সংযুক্ত মনিটরে আউটপুট দেওয়ার চেষ্টা করে।

এখানে প্রশ্নটি হল কীভাবে আমার স্ক্রিপ্টটি এমনভাবে সংশোধন করা উচিত যাতে যখন বাহ্যিক মনিটরটি xrandrকেবলমাত্র ল্যাপটপের স্ক্রিনের সাথে আউটপুট সংযুক্ত থাকে না এবং কোনও বাহ্যিক মনিটর উপেক্ষা করে। উদাহরণ:

If (xrandr -q | grep 'HDMI1 connected') != NULL (HDMI1 is connected )
then xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
else xrandr --output LVDS1 --mode 1366x768 (or do nothing - because the resolution of the laptop screen is correct when no external monitor is connected)

আগাম ধন্যবাদ.

উত্তর:


18

দ্রষ্টব্য: আমি এই উত্তরটি এখানেও পোস্ট করেছি

আমি একটি খুব সাধারণ কাজের সন্ধান পেয়েছি যা 13.04 এ চালানো আমার পক্ষে পুরোপুরি কাজ করে। 24 "বাহ্যিক স্ক্রিন সহ একটি ল্যাপটপে যা স্থায়ীভাবে সংযুক্ত নয়।

আমি শুধু এখান থেকে অনুলিপি করব

  1. প্রবেশ করুন
  2. আপনি কীভাবে লগইন স্ক্রিনে কনফিগার করতে চান তা আপনার মনিটরের কনফিগার করতে এক্সরেন্ডার বা ডিসপ্লে নিয়ন্ত্রণ নিয়ন্ত্রণ ইউটিলিটি ব্যবহার করুন
  3. sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/

যেহেতু আমি ইতিমধ্যে আমার মনিটরগুলি সঠিকভাবে কনফিগার করেছি আমাকে কেবল পদক্ষেপ 3 করতে হয়েছিল।


9

আমি নীচের এই ছোট্ট প্রাথমিক স্ক্রিপ্টটি পরিচালনা করেছি যা আমার প্রশ্নের উত্তর দেয়। এখন, বাহ্যিক মনিটর সংযুক্ত আছে কি না, লাইটডিএম গ্রিটার পর্যায়ে সঠিক রেজোলিউশন ব্যবহার করে। তবুও, এই একই স্ক্রিপ্টটি জেনেরিক হওয়ার জন্য এমনভাবে সংশোধন করা দরকার যে ব্যবহারকারীকে তার ল্যাপটপ এবং মনিটরের পর্দার ম্যানুয়ালি রেজোলিউশন নির্দিষ্ট করার দরকার নেই।

 (Parse the output of `XRAND -q` command, 
identify the connected devices, 
grab their first/maximum resolutions 
and use `XRANDR --output` to display them). 

সুতরাং কারও কাছে যদি আরও ভাল সমাধান বা আরও জেনেরিক স্ক্রিপ্ট থাকে তবে সে সেই ব্যক্তি।

লিপি:

    #!/bin/bash
    # V-1.0 by Hanynowsky - April 2012. 
    # I am a very basic script that works around bug 874241 repprted in launchpad.

    XCOM0=`xrandr -q | grep 'HDMI1 connected'`
    XCOM1=`xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1`
    XCOM2=`xrandr --output LVDS1 --mode 1366x768`
    # if the external monitor is connected, then we tell XRANDR to set up an extended desktop
    if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
    # if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
    else echo $XCOM2
    fi
    exit 0;

2

অনেক ধন্যবাদ হ্যান্নোভস্কি! আপনার উত্তর সন্ধান করা আমাকে এক টন কাজ বাঁচিয়েছে (সম্প্রতি 12.04 আপগ্রেড করা হয়েছে)। তবে আমার ক্ষেত্রে এটি সম্পূর্ণ সমাধান দেয় নি তাই আমি যা শিখেছি তা যুক্ত করতে চাই। আমার সেটআপটি একটি স্যামসুং এস 22 এ 300 বি অন্তর্নির্মিত 1280x800 প্রদর্শন এবং একটি মোবাইল GM965 / GL960 ইন্টিগ্রেটেড গ্রাফিক্স কন্ট্রোলারের সাথে একটি ভাইও ভিজিএন-সিআর 120 ই এর ভিজিএ বন্দরে প্লাগ ইন করা হয়েছিল।

সংক্ষেপে যা আমি পেয়েছি তা হ'ল:

  • ডিসপ্লে সিস্টেম সেটিংটি ব্যবহার করে আমি সর্বাধিক রেজোলিউশনটি বাহ্যিক স্যামসাং ডিসপ্লেতে সেট করতে পেরেছিলাম 1024x768।
  • এটি দৃশ্যত কারণেই হয়েছিল কারণ আমার ভিজিএ নিয়ন্ত্রণকারী ইডিআইডি সমর্থন করে না। কোনও কারণে উইন্ডোজ ভিস্তা এবং উইন্ডোজ both (ভিন্ন ল্যাপটপে) উভয়ই এই পরিস্থিতিটি পরিচালনা করতে পারে এবং পুরো আকারের রেজোলিউশন সরবরাহ করতে পারে।

এই সীমাবদ্ধ সর্বাধিক রেজোলিউশনটি কার্যকর করতে আমি নিম্নলিখিতগুলি করেছি:

  • --Newmode এবং --addmode এর সাহায্যে এক্সরেন্ডার আহ্বান করতে আপনার স্ক্রিপ্টে লাইন যুক্ত হয়েছে
  • সিভিটি 1920x1080 এর জন্য - নিউমোড মডেলিন তৈরি করার চেষ্টা করেছিল, তবে দুর্ভাগ্যক্রমে এটি আমার সেটআপের জন্য কার্যকর হয়নি।
  • এইচডিএমআই পোর্ট সহ একটি ল্যাপটপ ধার নিয়েছে, স্যামসাং প্লাগ ইন করে এটি বুট করেছে এবং /var/log/Xorg.0.log এর বাইরে 1920x1080 56.2 kHz এর মডলাইনটি ধরেছে
  • আমার সেটআপের জন্য আপনার স্ক্রিপ্টটি সংশোধন করার সাথে সেই মডলাইনটি প্লাগ করেছেন (যেমন এইচডিএমআই 1-> ভিজিএ 1, সঠিক ল্যাপটপ রেজোলিউশন ইত্যাদি)

এই ALMOST কাজ করেছিল তবে লগনের পরে বাহ্যিক মনিটরটি একটি দুর্দান্ত 1920x1080 থেকে 1024x768 এ পুনরায় সেট করা হয়েছিল। দেখা গেল যে এটি একটি অবিরাম ব্যবহারকারীর সেটিং এবং এটি প্রদর্শনযোগ্য ... সিস্টেম সেটিং (গিয়ার মেনু থেকে) এখন উপলভ্য 1920x1080 এ ব্যবহার করে সহজেই ঠিক করা হয়েছিল। এখন যখন আমি বাহ্যিক মনিটরের সাথে সংযুক্ত সমস্ত কিছু প্রত্যাশিতভাবে কাজ করি।

একটি অতিরিক্ত ত্রুটি: যদি এই স্ক্রিপ্টটি দু'বার চালিত হয় (উদাহরণস্বরূপ টার্মিনাল থেকে) xrandr --newmode লাইনটি একটি "BadName (নামযুক্ত রঙ বা ফন্টের অস্তিত্ব নেই)" ত্রুটি পেয়েছে, তবে /programming/ 851704 / xrandr- ত্রুটি-ব্যাড-নাম-রঙ-বা-ফন্ট-না-উপস্থিত রয়েছে এটি ব্যাখ্যা করেছে এবং এটি সৌম্য বলে মনে হচ্ছে। হ্যান্নোভস্কির নির্দেশনা অনুযায়ী ভার্চুয়াল ম্যানুয়ালি চালানোতে স্ক্রিপ্টটি হালকা dd.conf আপ করা হলে কোনও সমস্যা হওয়া উচিত নয়।

আমি উপরের জন্য অভিযোজিত পরিবর্তনগুলি সরবরাহ করছি (কোনও EDID কার্যকারিতা সহ ভিজিএ) এটি অন্য কাউকে সহায়তা করবে এই আশায়। পূর্ববর্তী উত্তরে উল্লিখিত হিসাবে আপনাকে এটি আপনার নিজের সেটআপের জন্য মানিয়ে নিতে হবে। সঠিক মোডলাইনটি পেতে আমার কাছে কোনও ভাল পরামর্শ নেই, তবে অন্য কেউ দয়া করে চিপ করুন।

#!/bin/bash
# Modified for Vaio with 1920x1080 external on VGA
XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1="xrandr --output VGA1 --primary --mode 1920x1080 --output LVDS1 --mode 1280x800 --left-of VGA1"
XCOM2="xrandr --output LVDS1 --mode 1280x800"
NEWMODE="xrandr --newmode "1920x1080" 148.50  1920 2448 2492 2640  1080 1084 1089 1125 +hsync +vsync"
ADDMODE="xrandr --addmode VGA1 1920x1080"

# Always add this mode in case we need it (better would be to test first)
eval $NEWMODE
eval $ADDMODE

if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ];
then
        # if the external monitor is connected, then we tell XRANDR to set up an extended desktop
        eval $XCOM1
else
        # if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
        eval $XCOM2
fi
exit 0;

দ্রষ্টব্য: আমি নিশ্চিত নই যে এভালটি প্রয়োজনীয় কিনা (বনাম মূলতে প্রতিধ্বনি)। আমার ডিসপ্লেগুলি আবিষ্কার করে ... সেটিংসটি বাহ্যিক ডিসপ্লেটিকে একটি নিম্ন রেজোলিউশনে পুনরায় সেট করে যাচ্ছিল তা আবিষ্কার করার আগে আমি এটি এনে দিয়েছি।


আপনি ওয়াল্টার উইটেলকে স্বাগত জানাই এবং আপনার মূল্যবান অবদানের জন্য আপনাকে ধন্যবাদ। আমার একবার সময় পেলে আমি যদি সম্ভব হয় তবে আরও জেনেরিক স্ক্রিপ্ট বের করার চেষ্টা করতাম; তবে আমি সন্দেহ করি যে এক্সআরএএনআরডিআর ব্যবহার করে কোনও নন ইডিআইডি মনিটরের জন্য সঠিক মোডলাইনটি বের করা সম্ভব হবে doubt যাইহোক, দেখা যাক।
হ্যান্নোভস্কি

1

আমি দেখতে পেয়েছি যে রেজোলিউশনটি স্পষ্টভাবে জানাতে --mode ব্যবহার করার পরিবর্তে, - আউটো আপনার পক্ষে সেরা রেজোলিউশনটি বেছে নেবে (আমি বিশ্বাস করি বৃহত্তম বৃহত্তম)।

#!/bin/bash

XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1=`xrandr --output LVDS1 --primary --auto --output VGA1 --auto --right-of LVDS1`
XCOM2=`xrandr --output LVDS1 --primary --auto`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi

exit 0;

1
আপনার লিপি দুর্দান্ত কাজ করে! এই বাগের সাথে আক্রান্ত যে কোনও ব্যক্তিকে কেবল এই স্ক্রিপ্টে তাদের ডিসপ্লেগুলির সঠিক রেজোলিউশন রাখতে হবে এবং লাইটডিএম পুনরায় চালু করতে হবে: সুডো পুনরায় আরম্ভ করুন লাইটডিএম সবই! সবকিছু দুর্দান্ত কাজ করে! : আমি এখানে এই সমস্যাটি সম্পর্কে আমার প্রশ্ন পোস্ট করেছেন askubuntu.com/questions/181112/...
conscientist

0

আপনি যদি লাইটডিএমের জিটিকে গ্রিটার ব্যবহার করছেন তবে আপনি xrandr -qআপনার মনিটরের নামগুলি অনুসন্ধান করতে ছুটে যেতে পারেন তারপরে ফাইলটির অভ্যন্তরের মন্তব্যে বর্ণিত হিসাবে /etc/lightdm/lightdm-gtk-greeterসম্পত্তিটি সম্পাদনা এবং সেট করতে পারেন active-monitor। এই সম্পত্তিটি #cursorমনিটরের জন্য একাধিক, আদেশযুক্ত মানগুলি নিতে পারে যা বর্তমানে মাউস কার্সারটি দেখায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.