আমি কীভাবে শেল স্ক্রিপ্ট থেকে আমার স্ক্রিন রেজোলিউশনটি সন্ধান করব?


48

আমি কীভাবে শেল স্ক্রিপ্ট থেকে আমার স্ক্রিন রেজোলিউশনটি সন্ধান করব?

উত্তর:


55
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'

কমান্ডটি xdpyinfoআপনার এক্স সার্ভার সম্পর্কে বিভিন্ন তথ্য প্রদর্শন করে। এটি স্ট্যান্ডার্ড আউটপুটটিতে প্রচুর পরিমাণে লেখায় তবে আমাদের কেবল শব্দটি দিয়ে শুরু হওয়া লাইনের প্রয়োজন হয় dimensions, সুতরাং আমরা ব্যবহার করি grep। পরিশেষে আমরা sedফলাফল পরিষ্কার করতে ব্যবহার করি ।


আপনার আলাদাভাবে x এবং y অক্ষের মাত্রা প্রয়োজন হলে আপনি নিম্নলিখিতটি করতে পারেন। প্রথমে উপরের কমান্ডের ফলাফলটি $( )সিন্ট্যাক্স (অর্থাত্ DIMENSIONS=$(xdpyinfo ...) ব্যবহার করে একটি ভেরিয়েবলের মধ্যে রাখুন । তারপরে sedদুটি পেতে আবার ব্যবহার করুন : WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')এবং HEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
mneri

xdpyinfoকোনও ত্রুটি বার্তা প্রিন্ট করে যদি এটি তথ্য অ্যাক্সেস করতে না পারে, তাই ত্রুটি পুনর্নির্দেশে /dev/null। এই কারণে আপনি একটি ত্রুটি ফেরৎ যোগ করতে চান করতে পারেন: xdpyinfo 2> /dev/null। সুতরাং, পূর্ণ piple ভালো দেখায়: xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'। এটি আপনার স্ক্রিপ্ট আরও শক্ত করে তুলবে।
মেনারি

29

xdpyinfo | grep dimensionsআপনাকে মোট রেজোলিউশন দেবে, যদি আপনার একাধিক মনিটর থাকে তবে এটি তাদের সবার যোগফল হবে। xrandr --currentপ্রতিটি মনিটরের জন্য আপনাকে রেজোলিউশন দেবে।

আমি পূর্ণ স্ক্রিনে না গিয়ে rDesktop এর সর্বাধিক সম্ভাব্য রেজোলিউশন খুঁজতে এই স্নিপেটটি ব্যবহার করি:

Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)

Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)

আউটপুট:

Xaxis = 1280
Yaxis = 1024

মাইনাস উইন্ডোজ সজ্জা (আরও কম):

MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))

আউটপুট:

MaxRes = 1275x999

পূর্ণ স্ক্রিনে না গিয়ে আরডিস্কটপের পক্ষে সর্বোচ্চ রেজোলিউশন।

শেষ আদেশ:

rdesktop -u $User -P -z -5 -g $MaxRes $Host &

এটি এতদূর ভাল কাজ করে তবে আমি যদিও এর পুরোপুরি পরীক্ষা করিনি।

এর সাথে আরও একটি উদাহরণ স্ক্রিনকাস্টের জন্য avconv:

avconv -f x11grab -r 15 -s `xrandr --current | grep  '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4

এটা বলে>xdpyinfo: Unable to open display "".
করতে ক্রা

আপনি কীভাবে পরিবর্তিত হওয়ার জন্য উপলব্ধ মোডগুলি আবিষ্কার করবেন?
সিএমসিডিগ্রাগনকাই

যদি আপনার উইন্ডো সজ্জা (ইত্যাদি) জন্য বিয়োগ করার প্রয়োজন না হয় তবে আপনি এটি ওয়ান-লাইনারে করতে পারেন rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
c24w

এটি একাধিক মনিটরের জন্য যোগফল নয়। এটি একটি বাউন্ডিং বাক্সের মাত্রা যা সমস্ত মনিটর ধারণ করে।
ডেনিস উইলিয়ামসন

xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1যদি আপনি কোনও স্ক্রিন নির্দিষ্ট করতে চান (একাধিক মনিটরের সেটআপ সহ) ( SCREENএটি 1-ইনডেক্সড)
সাপুসভিন

5

আপনি xrandr -qকমান্ডটি ব্যবহার করতে পারেন । এটি থেকে আপনি প্রয়োজনে একটি শেল স্ক্রিপ্ট তৈরি করতে পারেন।

কমান্ড সম্পর্কে আরও তথ্যের জন্য যেতে এখানে বা টাইপ মানুষ xrandr


2
#############################################
## আমি ভিডিও রেকর্ডিং প্রোগ্রামের সাথে এটি ব্যবহার করি।
# উইন্ডোর আকার - রুট বিকল্প - স্ক্রিনের রুট উইন্ডো সম্পর্কিত তথ্য
প্রতিধ্বনি $ (xwininfo -root | গ্রেপ 'জ্যামিতি' | awk '{মুদ্রণ $ 2;}')
# আউটপুট (গুলি): 1024x768 + 0 + 0
# উচ্চতা এক্স প্রস্থ + এক্স + ওয়াই অবস্থান।
######################
## সহায়িকা ##
man xwininfo

আমি xwininfo -root|sed '/Height/!d;s/.* //'উচ্চতা এবং xwininfo -root|sed '/Width/!d;s/.* //'প্রস্থ জন্য ব্যবহৃত ।
মিষ্টান্ন

1

xdpyinfoকিছু বিশ্লেষণ সহ এটি করবে। এটি আপনাকে প্রচুর তথ্য দেয় যা এরপরে আপনাকে স্ক্রীন নম্বর এবং এর দিকগুলি খনন করতে হবে


1

@ ব্যবহারকারী 31752 এবং @ এলিজার-ই-ভার্গাসের উত্তরগুলির সংমিশ্রণে দুটি সম্ভাব্য বিকল্প উত্পাদিত হয়েছে

একটি সহজ রেজেক্স:

$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900

বা কাটা ব্যবহার:

$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900

ব্যবহারের grep '*' | uniq@ ইলীয়েষর-ই-ভার্গাস থেকে xrandr আউটপুট (উদা। "1440x900 59.90 * + + 59.89") একটি ভিন্ন লাইন পেতে, যখন, grep 'সংযুক্ত' একটি সহজ এক (উদা পেতে। "LVDS1 সংযুক্ত 1440x900 + + 0 টি + 0 ..... ")।

@ ইউজার ৩3175৫২ দ্বারা রেজেক্সের ব্যবহারটি দুর্দান্ত, তাই আমি যে রেখাটি ব্যবহার করছি তার জন্য একটি সহজ রেজেেক্স প্রয়োজন, বা সরল কাট কমান্ডের মতো প্রতিস্থাপন করা যেতে পারে।

উদাহরণস্বরূপ xrandr আউটপুট

$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
   1440x900      59.90*+  59.89  
   1360x768      59.80    59.96  
   1152x864      60.00  
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

এলিজার ই ভার্গাসের উত্তরগুলির পরিবর্তে কেউ এই আদেশগুলি ব্যবহার করার কোনও কারণ আছে কি ?
স্কট

আপনার উত্তরে দয়া করে তথ্যটি সম্পাদনা করুন।
স্কট


0

মনিটরের স্ক্রিন ডেটা পড়া

ভিসা স্ট্যান্ডার্ডটি কীভাবে মনিটরের স্ক্রিন রেজোলিউশন পড়তে পারে তার একটি পদ্ধতি সরবরাহ করে।

বর্ধিত প্রদর্শন শনাক্তকরণ ডেটা (EDID ): এই স্ট্যান্ডার্ডটি প্রদর্শনগুলির সর্বোত্তম ব্যবহারের অনুমতি দিয়ে কনফিগারেশন তথ্য বহন করতে ডেটা ফর্ম্যাটগুলি সংজ্ঞায়িত করে।

একটি মনিটর সাধারণত একাধিক রেজোলিউশন এবং রিফ্রেশরেট সমর্থন করে। অবশ্যই কেউ সর্বাধিক (শারীরিক) একটিকে পছন্দ করবে।

এই মনিটরের ডেটা পড়তে, এই সমাধানগুলির মধ্যে একটি ব্যবহার করে দেখুন:

  • edid-ডিকোড

    ইনস্টল না থাকলে টাইপ করুন

    sudo apt install edid-decode
    

    তারপরে edidফাইলটি পড়ুন

    edid-decode /sys/class/drm/card0-eDP-1/edid
    
  • পাঠযোগ্য edid

    সাথে ইনস্টল করুন

    sudo apt install read-edid 
    

    তারপরে আই 2 সি এর মাধ্যমে স্ক্রিন মনিটরের ডেটা পড়ুন এবং পার্স করুন

    sudo get-edid | parse-edid
    
  • এডিড ডেটা হেক্সডাম্প

    যদি এডিড-সরঞ্জামগুলি ইনস্টল না করা থাকে তবে আপনি edidহেক্স-ফাইলটি ডাম্প করতে পারেন , যেমন:

    hd /sys/class/drm/card0-eDP-1/edid
    

    এই হেক্স ফাইলটি এনক্রিপ্ট করার জন্য উইকিতে একবার দেখুন বা এডিডের বিশদটি ডাউনলোড করুন ।

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