linux - যবহ - লিনাক্সে একটি VNC সেশনের রেজল্যুশন পরিবর্তন করা




লিনাক্সের সুবিধা (10)

আমি কাজ করে একটি Linux ওয়ার্কস্টেশন সংযোগ করতে VNC ব্যবহার করি। কর্মক্ষেত্রে আমার একটি 20 "মনিটর রয়েছে যা 1600x1200 এ চালায়, যখন বাড়িতে আমি 1440x900 এর রেজোলিউশনের সাথে আমার ল্যাপটপ ব্যবহার করি। 1440x900 এ চালানোর জন্য আমি ভিএনসিএসভারকে সেট করি তবে আমার মনিটরের অনেক জায়গা থেকে আমি মিস করি। এটি 1600x1200 এ চালানোর জন্য এটি ল্যাপটপের স্ক্রীনে মাপসই করা হয় না এবং আমাকে সর্বদা এটি স্ক্রোল করতে হবে।

ফ্লাই এ কোন ভিএনসি সেশনের আকার পরিবর্তন করার কোন ভাল উপায় আছে?

আমার VNC সার্ভার RealVNC E4.x (আমি সঠিক সংস্করণটি মনে রাখি না) SuSE64 এ চলছে।


অন্যদিকে, যদি একটি এক্স-সার্ভার থেকে অন্য এক্সটেনশান উইন্ডোতে সরানোর একটি উপায় থাকে তবে এটি সমস্যাটি সমাধান করতে পারে।

আমার মনে হয় আপনি দুটি পৃথক এক্স-সার্ভারের মধ্যে উইন্ডোগুলি সরাতে xmove ব্যবহার করতে পারেন। কাজেই যদি এটি কাজ করে, তবে অন্তত এই রেজোলিউশনটি পরিবর্তন না করেই আপনি যা চান তা করার জন্য এটি আপনাকে একটি উপায় দিতে হবে।


@ সোমবার দ্বারা সমাধান Xvnc TigerVNC 1.1.0 এ আমার জন্য কাজ করেছে, তাই আমি এটি একটি একক ব্যাশ ফাংশন vncsize xy এ সংহত করেছি । এটি ব্যবহার করুন: 1400 1000 vncsize । এটি অনুমান করে যে xrandr VNC আউটপুট নামটি ডিফল্ট হিসাবে রিপোর্ট করে।

function vncsize {
    local x=$1 y=$2
    local mode
    if mode=$(cvt "$x" "$y" 2>/dev/null)
    then
        if [[ $mode =~ "Modeline (.*)$" ]]
        then
            local newMode=${BASH_REMATCH[1]//\"/}
            local modeName=${newMode%% *}
            local newSize=( ${modeName//[\"x_]/ } )
            xrandr --newmode $newMode
            xrandr --addmode default "$modeName"
            xrandr --size "${newSize[0]}x${newSize[1]}" &&
                return 0
        else
            echo "Unable to parse modeline for ($x $y) from $mode"
            return 2
        fi
    else
        echo "\`$x $y' is not a valid X Y pair"
        return 1
    fi
}

আমি আমার লিনাক্স সার্ভারে টাইগার ভিএনসি চালাচ্ছি , যার মৌলিক রান্ডার সমর্থন রয়েছে। আমি শুধু Vrcserver কোন -Randr বা একাধিক-জ্যামিতি বিকল্প ছাড়া শুরু।

যখন আমি একটি ট্রার্মিনালে xrandr চালাচ্ছি, এটি সমস্ত উপলব্ধ স্ক্রিন রেজুলেশন প্রদর্শন করে:

bash> xrandr
 SZ:    Pixels          Physical       Refresh
 0   1920 x 1200   ( 271mm x 203mm )   60
 1   1920 x 1080   ( 271mm x 203mm )   60
 2   1600 x 1200   ( 271mm x 203mm )   60
 3   1680 x 1050   ( 271mm x 203mm )   60
 4   1400 x 1050   ( 271mm x 203mm )   60
 5   1360 x 768    ( 271mm x 203mm )   60
 6   1280 x 1024   ( 271mm x 203mm )   60
 7   1280 x 960    ( 271mm x 203mm )   60
 8   1280 x 800    ( 271mm x 203mm )   60
 9   1280 x 720    ( 271mm x 203mm )   60
*10  1024 x 768    ( 271mm x 203mm )  *60
 11   800 x 600    ( 271mm x 203mm )   60
 12   640 x 480    ( 271mm x 203mm )   60
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none

আমি তখন সহজেই অন্য রেজোলিউশন (1360x768 এ ফি সুইচ) তে স্যুইচ করতে পারি:

bash> xrandr -s 5

আমি ক্লায়েন্ট হিসাবে TightVnc ভিউয়ার ব্যবহার করছি এবং এটি স্বয়ংক্রিয়ভাবে নতুন রেজোলিউশনের সাথে মানিয়ে নেয়।


আমি একটি সহজ ধারণা, এই মত কিছু আছে:

#!/bin/sh

echo `xrandr --current | grep current | awk '{print $8}'` >> RES1
echo `xrandr --current | grep current | awk '{print $10}'` >> RES2
cat RES2 | sed -i 's/,//g' RES2

P1RES=$(cat RES1)
P2RES=$(cat RES2)
rm RES1 RES2
echo "$P1RES"'x'"$P2RES" >> RES
RES=$(cat RES)

# Play The Game

# Finish The Game with Lower Resolution

xrandr -s $RES

আচ্ছা, লিনাক্স এবং সিমিলার এসএর অধীনে সকল ডিসপ্লে ডিভাইসের জন্য আমার আরও ভাল সমাধান দরকার


আমি মনে করি যে আপনার উইন্ডো ম্যানেজার উপর নির্ভর করে।

আমি একটি উইন্ডোজ ব্যবহারকারী, তাই এটি একটি ভুল অনুমান হতে পারে, কিন্তু: লিনাক্স মেশিনগুলিতে চলমান X-Server নামক কিছু নেই - অন্তত এমন যেগুলি VNC- এর জন্য আকর্ষণীয় লক্ষ্য হতে পারে - যা আপনি " এক্স-ক্লায়েন্টদের মধ্যে "?

VNC কেবল স্ক্রীনের সমস্ত কিছু নেয় এবং "আপনার নেটওয়ার্কের মাধ্যমে এটি টানেল" করে। আমি সম্পূর্ণ ভুল না হলে "X" প্রোটোকল আপনাকে আপনার ক্লায়েন্টের ডেস্কটপ রেজল্যুশন ব্যবহার করার সুযোগ দেবে।

উইকিপিডিয়াতে X-Server একটি চেষ্টা করুন, এটি আপনাকে বিরল ওভারভিউ দিতে পারে।


আমি লিনাক্স সম্পর্কে নিশ্চিত নই, তবে উইন্ডোজের নিচে, tightvnc সনাক্ত করবে এবং সার্ভারে রেজোলিউশন পরিবর্তনগুলিতে মানিয়ে নেবে।

সুতরাং আপনি ওয়ার্কস্টেশনে ভিএনসি করতে সক্ষম হবেন, ডেস্কটপ, বৈশিষ্ট্যাবলী, রেজোলিউশন সেট করুন এবং আপনার ক্লায়েন্ট ভিএনসি উইন্ডো নিজেই তার আকার পরিবর্তন করুন।


এই প্রশ্নটি প্রথমে গুগলে আসে, আমি ভাবলাম আমি টাইগার ভিএনসি ব্যবহার করে একটি সমাধান ভাগ করব যা আজকাল ডিফল্ট।

xrandr ডিসপ্লে মোডগুলি (উর রেজুলেশনস) নির্বাচন করতে সক্ষম হওয়ায় মডেলগুলির হার্ড কোডেড থাকার কারণে কোনও অতিরিক্ত মডেলিন যেমন "2560x1600" বা "1600x900" কোডটিতে যোগ করা দরকার। আমি মনে করি কোড লেখক যারা ডেভেলপার অনেক স্মার্ট এবং হার্ড কোডেড তালিকা মানগুলির নমুনা। এটি কাস্টম মডেলিন এবং man xrandr ক্রেন্ডার যুক্ত করার একটি উপায় থাকা উচিত উপসংহারের দিকে পরিচালিত করে এটি নিশ্চিত করে।

সেই পটভূমিটির সাথে যদি উপরের দুটি রেজোলিউশনের সাথে দুটি কম্পিউটারের মধ্যে একটি VNC সেশন ভাগ করা এবং "1600x900" রেজোলিউশনের সাথে কম্পিউটারটি VNC সার্ভারটি হয় বলে ধরে নেওয়া হয়:

  1. প্রকৃত প্রদর্শনের সাথে মিলে একটি জ্যামিতি সহ একটি VNC সেশন শুরু করুন:

    $ vncserver -geometry 1600x900 :1
    
  2. "2560x1600" কম্পিউটারটি ভিএনসি ভিউয়ারটি চালু করে (আমি রিম্মিনা পছন্দ করি) এবং রিমোট ভিএনসি সেশনে সংযোগ করে:

    host:5901
    
  3. VNC সেশনের ভিতরে একবার একটি টার্মিনাল উইন্ডো শুরু।

  4. VNC সেশনে নতুন জ্যামিতি উপলব্ধ রয়েছে তা নিশ্চিত করুন:

    $ xrandr
    Screen 0: minimum 32 x 32, current 1600 x 900, maximum 32768 x 32768
    VNC-0 connected 1600x900+0+0 0mm x 0mm
       1600x900      60.00 +
       1920x1200     60.00  
       1920x1080     60.00  
       1600x1200     60.00  
       1680x1050     60.00  
       1400x1050     60.00  
       1360x768      60.00  
       1280x1024     60.00  
       1280x960      60.00  
       1280x800      60.00  
       1280x720      60.00  
       1024x768      60.00  
       800x600       60.00  
       640x480       60.00  
    

    এবং আপনি পর্দা খুব ছোট হচ্ছে বিজ্ঞপ্তি পাবেন।

  5. "2560x1600" রেজোলিউশনের জন্য মডেলিন তালিকাটি দেখুন (আর্চলিনux উইকি-তে xrandr নিবন্ধটি দেখুন):

    $ cvt 2560 1600
    # 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
    Modeline "2560x1600_60.00"  348.50  2560 2760 3032 3504  1600 1603 1609 1658 -hsync +vsync
    

    অথবা যদি মনিটর পুরানো হয় GTF সময়সীমার:

    $ gtf 2560 1600 60
    # 2560x1600 @ 60.00 Hz (GTF) hsync: 99.36 kHz; pclk: 348.16 MHz
    Modeline "2560x1600_60.00"  348.16  2560 2752 3032 3504  1600 1601 1604 1656 -HSync +Vsync
    
  6. বর্তমান ভিএনসি সেশনে নতুন মডেলিন যুক্ত করুন:

    $ xrandr --newmode "2560x1600_60.00"  348.16  2560 2752 3032 3504  1600 1601 1604 1656 -HSync +Vsync
    
  7. উপরে লাইনের প্রদর্শনের নামটির জন্য উপরের xrandr আউটপুটটি সন্ধান করুন:

    VNC-0 connected 1600x900+0+0 0mm x 0mm
    
  8. বর্তমান VNC ভার্চুয়াল মনিটরে নতুন মডেলিনটি বাঁধুন:

    $ xrandr --addmode VNC-0 "2560x1600_60.00"
    
  9. এটা ব্যবহার করো:

    $ xrandr -s "2560x1600_60.00"
    

এই সত্যিই সহজ।

আপনার পাই মধ্যে ssh মাধ্যমে লগইন করুন

এক্সিকিউট

vncserver -geometry 1200x1600

এটি একটি নতুন অধিবেশন তৈরি করবে :1

ipaddress:1 এ আপনার ভিএনসি ক্লায়েন্টের সাথে সংযোগ করুন ipaddress:1

এটাই.


যতদূর আমি জানি যে VNC ব্যবহার করে ক্লায়েন্টের রেজুলেশন পরিবর্তন করার কোন উপায় নেই, কারণ এটি একটি "মনিটর মিররিং" অ্যাপ্লিকেশন।

TightVNC যাইহোক (যা একটি VNC ক্লায়েন্ট এবং সার্ভার অ্যাপ্লিকেশন) ক্লায়েন্ট পার্শ্বের পর্দায় পুনরায় আকার পরিবর্তন করতে পারে, অর্থাৎ সব কিছু ছোট করে তুলতে পারে (গ্রাফিক্স প্রোগ্রামগুলিতে চিত্রের আকার পরিবর্তন করার কৌশলগুলির অনুরূপ)। আপনি খুব ছোট ফন্ট মাপ ব্যবহার না করে যে কাজ করা উচিত। VNC পৃথকভাবে VNC অ্যাপ্লিকেশনগুলির মধ্যে সামঞ্জস্যপূর্ণ হওয়া উচিত।


রিয়েল ভিএনসি সার্ভার 4.4 এর মধ্যে Xrandr এর জন্য সমর্থন রয়েছে, যা VNC কে পুনরায় আকার দেওয়ার অনুমতি দেয়। সার্ভারটি দিয়ে শুরু করুন:

vncserver -geometry 1600x1200 -randr 1600x1200,1440x900,1024x768

তার সাথে পুনরায় আকার পরিবর্তন করুন:

xrandr -s 1600x1200
xrandr -s 1440x900
xrandr -s 1024x768




vnc