যখন কোনও বাহ্যিক মনিটর সংযুক্ত থাকে তখন আপনার উইন্ডোজগুলি চলতে বাধা দেওয়ার কোনও উপায় আছে?


9

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

বাম দিকে টিভি

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

ডানদিকে টিভি

দেখে মনে হচ্ছে উবুন্টু বা ডিসপ্লে সার্ভারটি কেবল ধরে নিয়েছে যে বামদিকের মনিটরটি মূল এবং যেখানে সমস্ত উইন্ডো হওয়া উচিত। এই আচরণটি অক্ষম করার কোনও উপায় আছে কি?

আমি এই ফোরামগুলি যাচাই করে দেখছি তবে সত্যিকার অর্থে এই সম্পর্কে কেউ পোস্ট দেখেনি। আমার কাছে সবচেয়ে কাছের থ্রেডটি ছিল এটি একটি, যদিও এটি বেশ একই সমস্যা নয়।

একাধিক মনিটরের কোনওটি বন্ধ করার সময় উবুন্টু উইন্ডো না সরানোতে পান

কারো কোন ধারণা আছে? আপনি যদি আমাকে জানাবেন। ধন্যবাদ!

উত্তর:


2

এর আচরণের পরিবর্তনের জন্য আমি কোনও "গোপনীয়" সেটিংস পাইনি, যেমন মনে হয়, নকশাকৃত আচরণ। দেখে মনে হচ্ছে বাম স্ক্রিনটিকে "বেস" স্ক্রিন বলে মনে করা হচ্ছে।

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

দুটি সংস্করণ

আপনি আপনার সাজানো উইন্ডোজ দুটি উপায়ে পুনরুদ্ধার করতে পারেন:

  • কখনও কখনও, দ্বিতীয় স্ক্রিন সংযুক্ত হওয়ার পরে চালানোর জন্য একটি শর্টকাট কী দিয়ে।
  • স্বয়ংক্রিয়ভাবে, স্ক্রিনটি পটভূমিতে চলছে, আপনার স্ক্রিনটি সংযুক্ত হওয়ার অপেক্ষা করছে।

ব্যবহারবিধি

উদ্যতি

  • ইনস্টল করুন wmctrl

    sudo অ্যাপ্লিকেশন wmctrl ইনস্টল করুন

  • আপনার দুটি পর্দার নাম সাহায্যে সন্ধান করুন xrandr, পর্দার নামগুলি "সংযুক্ত" শব্দের ঠিক আগে হবে।

  • নীচের যে কোনও স্ক্রিপ্ট কপিরাইট করুন, হেড বিভাগে, এই দুটি লাইনে স্ক্রিনের নামগুলি সঠিক দ্বারা প্রতিস্থাপন করুন:

    screen_1 = "LVDS1"     # your main screen (laptop)
    screen_2 = "VGA1"      # secundary screen (on the left)
    

    স্ক্রিপ্ট হিসাবে সংরক্ষণ করুন move_windows.py

  • আপনার দ্বিতীয় স্ক্রিনটি বামদিকে প্রদর্শন সেটিংসে নিশ্চিত করুন। দুটি পর্দার শীর্ষ লাইনগুলি লাইনে থাকা প্রয়োজন (আপনার প্রশ্নের প্রথম চিত্রের মতো)।

স্ক্রিপ্টটি চালান
- আপনি যদি মাঝে মাঝে এটি চালানোর জন্য ব্যবহার করেন তবে আপনার দ্বিতীয় স্ক্রিন সংযুক্ত হওয়ার পরে এটি চালান।

    python3 /path/to/move_windows.py

আপনি যদি মনে করেন এটির যা করা উচিত তা করে তবে আপনি এটি একটি কীবোর্ড শর্টকাটে যুক্ত করতে চাইতে পারেন, চয়ন করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাট"> "কাস্টম শর্টকাট"। "+" ক্লিক করুন এবং কমান্ডটি যুক্ত করুন:

  • আপনি যদি ব্যাকগ্রাউন্ডে চালানোর জন্য এটি ব্যবহার করেন তবে এটি কমান্ড দিয়ে চালান:

    python3 /path/to/move_windows.py
    

    এটি যদি আপনি যেমন ইচ্ছা তেমন কাজ করে তবে এটি আপনার প্রারম্ভিক অ্যাপ্লিকেশনগুলিতে যুক্ত করুন: ড্যাশ> স্টার্টআপ অ্যাপ্লিকেশন> যুক্ত করুন

আমি আমার ল্যাপটপটি (ডানদিকে) এবং দুটি পৃথক স্ক্রিন (বাম দিকে) দিয়ে স্ক্রিপ্টটি পরীক্ষা করেছি। ফলাফল একই ছিল।

ল্যাপটপ স্ক্রিন

এখানে চিত্র বর্ণনা লিখুন

স্ক্রিপ্ট ছাড়াই সংযোগ করা হচ্ছে

এখানে চিত্র বর্ণনা লিখুন

স্ক্রিপ্ট চলমান সঙ্গে সংযোগ

এখানে চিত্র বর্ণনা লিখুন

স্ক্রিপ্টটি কাজ করার পরে, উইন্ডোজগুলি "একা থাকবে" (অবশ্যই), এবং আপনি আপনার উইন্ডোজটিকে নিজের মতো করে সাজিয়ে নিতে পারেন।

স্ক্রিপ্ট (গুলি)

1. "ম্যানুয়াল" সংস্করণ, স্ক্রিনটি সংযুক্ত হওয়ার পরে চালানোর জন্য

#!/usr/bin/env python3
import subprocess
import time

#--
screen_2 = "LVDS1"       # replace with your internal screen (right)
screen_2 = "VGA1"        # replace with your external screen (left)
#--

def get(cmd):
    return subprocess.check_output(["/bin/bash", "-c",  cmd]).decode("utf-8")

def get_shift(xr_output):
    lines = [l for l in xr_output.splitlines() if " connected" in l][0].split()
    return int([it for it in lines if "x" in it][0].split("x")[0])

def shift_windows(shift):
    w_data = [l.split() for l in get("wmctrl -lG").splitlines()]
    relevant = []
    for w in w_data:
        props = get("xprop -id "+w[0])
        if (int(w[2]) < shift, "_TYPE_NORMAL" in props, "TYPE_DIALOG" in props).count(True) == 2:
            command = "wmctrl -ir "+w[0]+" -e 0,"+(",").join([str(int(w[2])+shift), w[3], w[4], w[5]])
            subprocess.Popen(["/bin/bash", "-c", command])

shift_windows(get_shift(get("xrandr")))

2. পটভূমিতে চালানোর জন্য স্বয়ংক্রিয় সংস্করণ

#!/usr/bin/env python3
import subprocess
import time

#--
screen_2 = "LVDS1"       # replace with your internal screen (right)
screen_2 = "VGA1"        # replace with your external screen (left)
#--

def get(cmd):
    return subprocess.check_output(["/bin/bash", "-c",  cmd]).decode("utf-8")

def get_shift(xr_output):
    lines = [l for l in xr_output.splitlines() if " connected" in l][0].split()
    return int([it for it in lines if "x" in it][0].split("x")[0])

def shift_windows(shift):
    w_data = [l.split() for l in get("wmctrl -lG").splitlines()]
    relevant = []
    for w in w_data:
        props = get("xprop -id "+w[0])
        if (int(w[2]) < shift, "_TYPE_NORMAL" in props, "TYPE_DIALOG" in props).count(True) == 2:
            command = "wmctrl -ir "+w[0]+" -e 0,"+(",").join([str(int(w[2])+shift), w[3], w[4], w[5]])
            subprocess.Popen(["/bin/bash", "-c", command])

while True:
    try:
        screen_info1 = get("xrandr")
        time.sleep(5)
        screen_info2 = get("xrandr")
        check = screen_2+" connected"
        if (check in screen_info1, check in screen_info2) == (False, True):
            time.sleep(5)
            shift_windows(get_shift(screen_info2))
    except:
        pass

মারাত্মকভাবে অসুস্থ দক্ষতা, জ্যাকব!
don.joey

@ K0j0 আপনি কি পরিচালনা করেছেন?
জ্যাকব ভিলিজম

@ জ্যাকবভিলিজম নিশ্চিত নয় যে প্রতি 5 সেকেন্ডে পোলিংয়ের সবচেয়ে ভাল সমাধান কিনা (কোনও ইভেন্ট-চালিত সম্ভাবনা নেই?)। যাইহোক, আপনি যদি এই স্ক্রিপ্টটিকে Unক্য সূচক ( এখানে এগুলির মতো ) রূপান্তর করতে আগ্রহী হন তবে দয়া করে যোগাযোগ করুন।
পিটারিনো

@ পেটারিনো যদি ইভেন্ট-চালিত সংকেত উপস্থিত থাকে তবে এটি আমার প্রথম পছন্দ হবে। একই সময়ে: যদি কোনও পটভূমি স্ক্রিপ্টটি ভালভাবে লেখা থাকে তবে এর অতিরিক্ত বোঝা ব্যবহারিকভাবে কোনওটিই হওয়া উচিত নয় (এবং হতে পারে) এবং আমি সর্বদা আমার স্ক্রিপ্টগুলি বিশেষত এটিতে পরীক্ষা করি। আমি নিজেই পরিবর্তিত সংখ্যক ব্যাকগ্রাউন্ড স্ক্রিপ্ট চালাচ্ছি। এমনকি সমস্ত একসাথে যা কিছু আছে তা লক্ষ্যণীয় প্রভাব নেই। মনে রাখবেন আপনার সিস্টেমে সংজ্ঞা অনুসারে অসংখ্য লুপ চলছে। Ityক্য সূচক পরামর্শ সম্পর্কে: আমি অবশ্যই এই বা অন্য কোনও পরিস্থিতির জন্য একটি সূচক তৈরি করতে শিখতে আগ্রহী :)।
জ্যাকব ভিলিজম

জানালার স্বয়ংক্রিয় বসানো মত @JacobVlijm সৌন্দর্য স্বয়ংক্রিয়ভাবে উবুন্টু পরবর্তী রিলিজ এক ( "কাজ চলছে") দিয়ে শুরু ঘটবে, অনুযায়ী ক্যানোনিকাল এ একটি উৎস । বর্তমান প্রকাশের বাকি কয়েক মাস ব্যয় করা সম্ভবত এটি উপযুক্ত নয়। যদিও আমি আইআরসি # উবুন্টু-মির @ ফ্রিনোডে মীর বিকাশকারীদের সাথে ডাবল চেক করব।
পিটারিনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.