অ্যাপ্লিকেশন উইন্ডোটি যেখানে চালু হয়েছিল সেখানে একই পর্দায় খুলুন


8

আমি একটি দ্বৈত স্ক্রীন সেটআপ ব্যবহার করছি। উবুন্টু 14.10 / ityক্য। প্রতিটি স্ক্রিনের নিজস্ব লঞ্চার / ড্যাশ রয়েছে। ফায়ারফক্স, নটিলাস, টার্মিনাল এবং থান্ডারবার্ডের মতো ডিফল্ট আবেদনগুলি স্ক্রিনে উপস্থিত হয় যেখানে আমি লঞ্চারটি ব্যবহার করেছি। সুতরাং..আমি যখন ডান স্ক্রিনে ফায়ারফক্সের জন্য লঞ্চারটি ব্যবহার করি তখন ব্রাউজারটি ডান পাশের স্ক্রিনে খোলে। হিসাবে এটি করা উচিত.

আমি গুগল ক্রোমের মতো অন্যান্য অ্যাপ্লিকেশনের সাথেও সেই আচরণটি চাই। আমি সঠিক সমাধান খুঁজে পাচ্ছি না বলে মনে হচ্ছে।

উত্তর:


5

অ্যাপ্লিকেশন চালানোর জন্য আদেশটি পুনর্নির্দেশ করা হচ্ছে

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

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

কিভাবে এটা কাজ করে

  • স্ক্রিনটি মাউসের অবস্থানটি পড়বে যে মুহুর্তে আপনি ল্যাঞ্চারটি ক্লিক করেন বা ড্যাশ থেকে অ্যাপ্লিকেশনটি চয়ন করেন এবং কোন স্ক্রিনে (বাম / ডানদিকে) তা নির্ধারণ করে।
  • পরবর্তীকালে, এটি আপনি যে অ্যাপ্লিকেশনটি (পিড) শুরু করেছেন তার মালিকানাধীন নতুন উইন্ডোটি আসার অপেক্ষা করে।
  • উইন্ডোটি উপস্থিত হওয়ার পরে, এটি উইন্ডো (স্ক্রিন-) অবস্থানটি মাউসের (স্ক্রিন-) প্রাথমিক অবস্থানের সাথে মেলে কিনা তা পরীক্ষা করে।
  • যদি তা না হয় তবে এটি উইন্ডোটিকে স্ক্রিনে নিয়ে যায় আপনি অ্যাপ্লিকেশনটি শুরু করেছিলেন। বেশিরভাগ ক্ষেত্রে, ক্রিয়াটি উইন্ডোটির অস্তিত্বের (খুব) প্রথম পর্যায়ে থাকবে, সুতরাং আপনি এটি লক্ষ্য করবেন না।

ইস্যু / সমাধান

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

<ইমেজ>

ব্যবহারবিধি:

  • স্ক্রিপ্ট দুটি wmctrlএবং ব্যবহার করে xautomation:

    sudo apt-get install xautomation
    sudo apt-get install wmctrl
    
  • ডিরেক্টরি ~/binউপস্থিত না থাকলে এটি তৈরি করুন ।

  • একটি ফাঁকা ফাইলে স্ক্রিপ্টটি অনুলিপি করুন, এতে open_oncurrent(কোনও প্রসার নেই) হিসাবে এটি সংরক্ষণ করুন~/bin

  • এটি সম্পাদনযোগ্য (!) করুন
  • সংশ্লিষ্ট কপি .desktopথেকে ফাইল /usr/share/applicationsথেকে ~/.local/share/applications:

    cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/google-chrome.desktop
    
  • এতে স্থানীয় কপিটি খুলুন ~/.local/share/applications:

    gedit ~/.local/share/applications/google-chrome.desktop
    
  • ফাইলটি সম্পাদনা করুন (দুটি বিকল্প):

    1. লঞ্চারের প্রধান কমান্ডটি পরিবর্তন করতে :

      • লাইনটি সন্ধান করুন:

        Exec=/usr/bin/google-chrome-stable %U
        
      • এটি পরিবর্তন করুন

        Exec=/bin/bash -c "open_oncurrent /usr/bin/google-chrome-stable"
        
    2. শর্টকাট হিসাবে বিকল্পটি যুক্ত করতে (উপরের চিত্রের মতো):

      • লাইনটি সন্ধান করুন:

        X-Ayatana-Desktop-Shortcuts=NewWindow;NewIncognito;
        
      • এটি দ্বারা প্রতিস্থাপন:

        X-Ayatana-Desktop-Shortcuts=NewWindow;NewIncognito;New window on this screen;
        
      • তারপরে ফাইলটির একেবারে শেষের অংশে নিম্নলিখিত বিভাগটি যুক্ত করুন:

        [New window on this screen Shortcut Group]
        Name=New window on this screen
        Exec=/bin/bash -c "open_oncurrent /usr/bin/google-chrome-stable"
        TargetEnvironment=Unity
        

অন্যান্য অ্যাপ্লিকেশনগুলির সাথে কীভাবে ব্যবহার করবেন:

একইভাবে, আপনি অন্যান্য অ্যাপ্লিকেশনগুলির সমাধান প্রয়োগ করতে পারেন। .desktopউদাহরণস্বরূপ ফাইলগুলিতে ব্যবহারের জন্য কমান্ডের বাক্য গঠন :

Exec=/bin/bash -c "open_oncurrent <command>"

ব্যতিক্রমগুলি কীভাবে মোকাবেলা করা যায় সে সম্পর্কে একটি ছোট্ট অতিরিক্ত ব্যাখ্যা স্ক্রিপ্টে রয়েছে।

এই পান্ডুলিপি

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

t = 0; user = getpass.getuser(); application = sys.argv[1]
"""
In most cases, the command to run an application is the same as the process
name. There are however exceptions, to be listed below, if you use these appli-
cations i.c.w. this script. Just add an item to the list in the format:
["<command>", "<process_name>"],
"""
exceptions = [
    ["/usr/bin/google-chrome-stable", "chrome"],
    ]
try:
    procname = [app[1] for app in exceptions if app[0] == application][0]
except IndexError:
    procname = application

get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
# initial position of the mouse (click position)
start_pos = int(get("xmousepos").strip().split()[0])
# x- position of right side of the screen  
x_res = [int(s.split("x")[0]) for s in get("xrandr").split() if s.endswith("+0+0")][0]
# current windows
start_windows = get("wmctrl -l")
# open application
subprocess.call(["/bin/bash", "-c", application+"&"])
while t < 30:
    procs = get("ps -u "+user).splitlines()
    new = [w for w in get("wmctrl -lpG").splitlines() if not w.split()[0] in start_windows]
    match = sum([[line for line in procs if w.split()[2] in line and procname[:15] in line] for w in new], [])
    if len(match) == 1:
        data = new[0].split(); curr_pos = int(data[3]); compare = (start_pos > x_res, curr_pos > x_res)
        if compare[0] == compare[1]:
            pass
        else:
            if compare[0] == True:
                data[3] = str(int(data[3])+x_res)
            else:
                data[3] = str(int(data[3])-x_res)
            cmd1 = "wmctrl -r "+data[0]+" -b remove,maximized_vert,maximized_horz"
            cmd2 = "wmctrl -ir "+data[0]+" -e 0,"+(",").join(data[3:7])
            for cmd in [cmd1, cmd2]:
                subprocess.Popen(["/bin/bash", "-c", cmd])
        break
    t = t + 1
    time.sleep(0.5)

ধন্যবাদ, এই কাজ করে। আমি যখন চালু হয় তখন লঞ্চটিতে গুগল ক্রোমের দ্বিতীয় আইকনটি লক্ষ্য করি।
ডিজিপ্লেস

6

ইউনিটি কমপিজকে কমপোজিং ম্যানেজার হিসাবে ব্যবহার করে এবং এতে এই ধরণের স্টাফের জন্য সব ধরণের প্লাগইন রয়েছে। কমান্ড লাইনে গোলযোগ না করেই সহজ এবং দীর্ঘ গল্পকে ছোট করে তুলতে, কমিজ কনফিগার সেটিংস ম্যানেজারটি ইনস্টল করুন ( sudo apt-get install compizconfig-settings-managerসফটওয়্যার কেন্দ্রের সাথে বা তার মাধ্যমে) এবং Place Windowsএটি যাচাই করা হয়েছে তা নিশ্চিত করুন

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

এই প্লাগইনের অধীনে বিভিন্ন বিকল্প থাকবে Multi Output Mode। আপনি কি চান Use output device of focused window। আপনার ফাইল ম্যানেজার যেখানেই থাকুক না কেন এটি ওপেন ফাইল উইন্ডো স্থাপন করবে এখানে চিত্র বর্ণনা লিখুন

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