আমার কি অন্য একটি ওয়ার্কস্পেসের ছোট্ট লাইভ পূর্বরূপ প্রদর্শিত উইন্ডো থাকতে পারে?


29

একটি ওয়ার্কস্পেসের কোনও লাইভ বিভাগটি আয়না করা সম্ভব যাতে এটি বর্তমান কর্মক্ষেত্রের চারপাশে সরানো যায় এমন একটি উইন্ডো হিসাবে দৃশ্যমান হয়?

অন্য দিন আমার উবুন্টু 16.04 হোস্টে একটি উইন্ডোজ 10 ভিএম চলছিল যা আপডেটিং সম্পূর্ণ করতে সত্যই দীর্ঘ সময় নিয়েছিল। আমি উবুন্টুতে এক্সপো ( Super+ S) এর মাধ্যমে এর অগ্রগতি পরীক্ষা করে দেখছি । এটি আমাকে ভাবতে পেরেছিল যে এই সমস্যাটি সম্ভবত ইতিমধ্যে সমাধান হয়ে গেছে যেহেতু সিম্পলস্ক্রিনেকর্ডারের মতো সরঞ্জামগুলি স্ক্রিনের কেবলমাত্র একটি অংশ রেকর্ড করতে কনফিগার করা যেতে পারে। তবে আমি আমার গুগল অনুসন্ধানের জন্য সঠিক পরিভাষাটি জানি না।

আমি নীচের দিকে 300x150 এর স্ক্রিনশটটি দেখতে চাই যে কোনও কর্মক্ষেত্র বর্তমান হতে পারে তার ডানদিকে উপরের ডানদিকে একটি ভাসমান উইন্ডো (লাইভ আপডেট সহ) আকারে।

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


1
@ সার্গ আপনার জন্য এখানে একটি নতুন প্রকল্প
রিনজউইন্ড

@ রিনজুইন্ড আপনি অবশ্যই সার্জকে ঘৃণা করুন ... আমরা (উভয়) আগে এরকম কিছু খুঁজছিলাম, সফল হই নি।
জ্যাকব Vlijm

1
এমনকি আমি এটিতে এবার একটি
অনুগ্রহও

দুর্দান্ত বৈশিষ্ট্য হবে :) এটি ভিএম ক্ষেত্রে সাহায্য করবে না, তবে টার্মিনাল অ্যাপ্লিকেশনগুলির জন্য একটি সমাধান রয়েছে: কনসোল ব্যবহার করে। এর দুটি কার্যকর বিকল্প রয়েছে: "ক্রিয়াকলাপে বিজ্ঞাপিত করুন" এবং "নীরবতার উপর বিজ্ঞপ্তি"। প্রথমটি আপনাকে বিজ্ঞপ্তি প্রেরণ করবে যখন টার্মিনালে একটি নতুন লাইন দেখানো হবে ( tail -F file | grep patternকিছু ইভেন্ট সম্পর্কে সতর্ক করার জন্য লগগুলি ব্যবহার করার সময় দরকারী ), শেষ লিখিত লাইন থেকে কিছু সময় থাকার পরে দ্বিতীয়টি আপনাকে বিজ্ঞপ্তি পাঠাবে (দরকারী জেনে নিন কখন কোন বিল্ড শেষ হয়েছে)।
কিক

@ রিনজউইন্ড পবিত্র জঞ্জাল, এটি কাজ করতে চলেছে ...
জ্যাকব ভ্লিজম

উত্তর:


26

সম্পাদনা

(নতুন উত্তর)

সম্পন্ন.
নির্ভরযোগ্য, জেনিয়াল, ইয়াক্কেটি এবং জেস্টির পিপিএ হিসাবে সূচক হিসাবে নীচের উত্তরটি এখন একটি পালিশ আকারে পাওয়া যাচ্ছে:

sudo apt-add-repository ppa:vlijm/windowspy
sudo apt-get update
sudo apt-get install windowspy

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

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

এর মধ্যে, আমি এটিউ উইন্ডোতে নজর রাখা দরকারী বলে মনে করি; কোনও বার্তা আছে কিনা দেখুন :)


পুরানো উত্তর

( প্রথম দ্বিতীয় রুক্ষ ধারণা)

অন্য একটি ওয়ার্ক স্পেসে একটি উইন্ডোটির ন্যূনতম উপস্থাপনা রাখুন

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

এটি বাস্তবে কীভাবে কাজ করে

  1. সামনে উইন্ডোটি নিয়ে একটি শর্টকাট কী টিপুন:

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

    (উইন্ডোটি ছোট করা হবে)

  2. অন্য কর্মক্ষেত্রে চলে যান, আবার শর্টকাট কী টিপুন, উইন্ডোটির একটি ছোট উপস্থাপনা উপস্থিত হবে, প্রতি 4 সেকেন্ডে আপডেট হবে:

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

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

  3. এটি শেষ করতে শর্টকাট কী টিপুন (আবার)। ছোট উইন্ডোটি বন্ধ হয়ে যাবে, আপনি আসল উইন্ডোটির ভিউপোর্টে চলে যাবেন, যা আবার প্রকাশিত হবে, নির্বিঘ্নিত।

লিপি

  1. নিয়ন্ত্রণ স্ক্রিপ্ট

    #!/usr/bin/env python3
    import subprocess
    import os
    import sys
    import time
    
    # paths
    imagepath = os.path.join(os.environ["HOME"], ".showcase")
    wfile = os.path.join(imagepath, "currentwindow")
    vpfile = os.path.join(imagepath, "last_vp")
    # setup path
    if not os.path.exists(imagepath):
        os.mkdir(imagepath)
    
    def get(command):
        try:
            return subprocess.check_output(command).decode("utf-8").strip()
        except subprocess.CalledProcessError:
            pass
    
    def get_vp():
        open(vpfile, "wt").write(get(["wmctrl", "-d"]).split()[5])
    
    def run(command):
        subprocess.Popen(command)
    
    def convert_tohex(widxd):
        return widxd[:2]+((10-len(widxd))*"0")+widxd[2:]
    
    def check_windowtype(wid):
        check = get(["xprop", "-id", wid])
        return not any([s in check for s in [
            "_NET_WM_WINDOW_TYPE_DOCK",
            "_NET_WM_WINDOW_TYPE_DESKTOP"]])
    
    def edit_winprops(wid, convert=True):
        run(["xdotool", "windowminimize", wid])
        if convert:
            widxd = convert_tohex(hex(int(wid)))
        else:
            widxd = wid
        run(["wmctrl", "-i", "-r", widxd, "-b", "add,sticky"])
        get_vp()
        open(os.path.join(imagepath, "currentwindow"), "wt").write(widxd)
    
    def initiate_min():
        # if not, minmize window, write the file
        wid = get(["xdotool", "getactivewindow"])
        if check_windowtype(wid):
            edit_winprops(wid)
        else:
            pidinfo = [l.split() for l in wlist.splitlines()]
            match = [l for l in pidinfo if all([
                get(["ps", "-p", l[2], "-o", "comm="]) == "VirtualBox",
                not "Manager" in l])]
            if match:
                edit_winprops(match[0][0], convert=False)
    
    # windowlist
    wlist = get(["wmctrl", "-lp"])
    
    if "Window preview" in wlist:
        # kill the miniwindow
        pid = get(["pgrep", "-f", "showmin"])
        run(["kill", pid])
        window = open(wfile).read().strip()
        viewport = open(vpfile).read().strip()
        run(["wmctrl", "-o", viewport])
        time.sleep(0.3)
        run(["wmctrl", "-i", "-r", window, "-b", "remove,sticky"])
        run(["wmctrl", "-ia", window])
        os.remove(wfile)
    
    else:
        # check if windowfile exists
        wfileexists = os.path.exists(wfile)
        if wfileexists:
            # if file exists, try to run miniwindow
            window = open(wfile).read().strip()
            if window in wlist:
                # if the window exists, run!
                run(["showmin", window])
            else:
                # if not, minmize window, write the file
                initiate_min()
        else:
            # if not, minmize window, write the file
            initiate_min()
  2. উইন্ডোটি প্রতিনিধিত্ব করে

    #!/usr/bin/env python3
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, GObject
    from PIL import Image
    import os
    import subprocess
    import time
    from threading import Thread
    import sys
    
    wid = sys.argv[1]
    xsize = 300
    
    imagepath = os.path.join(os.environ["HOME"], ".showcase")
    if not os.path.exists(imagepath):
        os.mkdir(imagepath)
    img_in = os.path.join(imagepath, "image.png")
    resized = os.path.join(imagepath, "resized.png")
    
    def get_img():
        subprocess.Popen([
            "import", "-window", wid, "-resize", str(xsize),  resized
            ])
    
    get_img()
    
    class Splash(Gtk.Window):
    
        def __init__(self):
            Gtk.Window.__init__(self, title="Window preview")
            maingrid = Gtk.Grid()
            self.add(maingrid)
            self.image = Gtk.Image()
            # set the path to the image below
            self.resized = resized
            self.image.set_from_file(self.resized)
            maingrid.attach(self.image, 0, 0, 1, 1)
            maingrid.set_border_width(3)
            self.update = Thread(target=self.update_preview)
            self.update.setDaemon(True)
            self.update.start()
    
        def update_preview(self):
            while True:
                get_img()
                time.sleep(3)
                GObject.idle_add(
                    self.image.set_from_file, self.resized,
                    priority=GObject.PRIORITY_DEFAULT
                    )
    
    def miniwindow():
        window = Splash()
        window.set_decorated(False)
        window.set_resizable(False)
        window.set_keep_above(True)
        window.set_wmclass("ShowCase", "showcase")
        window.connect("destroy", Gtk.main_quit)
        GObject.threads_init()
        window.show_all()
        window.move(70, 50)
        Gtk.main()
    
    miniwindow()

ব্যবহারবিধি

  1. ইনস্টল করুন python3-pil, xdotoolএবংwmctrl

    sudo apt-get install xdotool wmctrl python3-pil
    
  2. তৈরি করুন, এটি এখনও উপস্থিত না থাকলে ডিরেক্টরি ~/bin

  3. অনুলিপি স্ক্রিপ্ট 1, তিনি (ঠিক) স্ক্রিপ্ট, নিয়ন্ত্রণ showcase_controlমধ্যে (কোন এক্সটেনশন) ~/bin, এবং এটা এক্সিকিউটেবল করতে
  4. স্ক্রিপ্ট 2, মিনি-উইন্ডো স্ক্রিপ্টটিকে (হুবহু) showmin(কোনও এক্সটেনশন নয়) হিসাবে অনুলিপি করুন ~/binএবং এটি কার্যকর করতে সক্ষম করুন
  5. লগ আউট এবং পিছনে প্রবেশ করুন, এবং আপনার পছন্দের একটি শর্টকাটে নিম্নলিখিত কমান্ডটি যুক্ত করুন:

    showcase_control
    

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

    showcase_control
    

    এবং এটি কাজ করা উচিত!

    • বর্তমান উইন্ডোটি দখল করতে একবার কী টিপুন
    • আপনি যেখানে মিনি উইন্ডোটি চান সেখানে অন্য কর্মক্ষেত্রে চলে যান
    • মিনি উইন্ডোটি দেখানোর জন্য আবার টিপুন
    • মূল কর্মক্ষেত্রে ফিরে যেতে আবার চাপুন, (স্বয়ংক্রিয়ভাবে) আসল উইন্ডোটি সর্বনিম্ন করুন এবং মিনি একন বন্ধ করুন।

Downsides?

  • সেটআপ যেমন এটি বর্তমানে রয়েছে তেমনি আপনার প্রসেসরের জন্য কিছু কাজ যুক্ত করে । আমার (খুব) পুরানো সিস্টেমে তবে এটি যুক্ত হয় (গড়) অ্যাপ্লিকেশন। 4-5% i শ্রেণীভুক্ত, যা আমি এ খেয়ালই করেন নি কোনো উপায়।

    আপডেট: দেখা যাচ্ছে উইন্ডো চিত্রটি আনারimport সাথে এক ধাপে চিত্রটির আকার পরিবর্তন করতে পারে । এর অর্থ প্রসেসরের লোডের যথেষ্ট হ্রাস। একই সময়ে রিফ্রেশ সময়টি কম (এখন 3 সেকেন্ড), এখনও "ব্যয়" কম।

ব্যাখ্যা

  • আমার প্রারম্ভিক বিন্দুটি ওপি যেভাবে উল্লেখ করেছিলেন যে তিনি অন্য একটি কর্মক্ষেত্রের উইন্ডোতে নজর রাখার বিকল্পটি ব্যবহার করতে চেয়েছিলেন, যে কোনও কিছু শেষ করার জন্য অপেক্ষা করেছিলেন।
  • যদিও আক্ষরিক থাকার একটি সঠিক (মিনি) একটি উইন্ডোর অন্য কর্মক্ষেত্রে কপি অসম্ভব বলে মনে হয়, আমরা করতে পারেন একটি বর্তমানে উপস্থিত উইন্ডোর একটি চিত্র তৈরি করতে importএকবার আমরা জানালা আইডি থাকা -command। যদিও এটি উভয়ই ফোকাস ছাড়াই ন্যূনতম উইন্ডো বা উইন্ডোতে কাজ করে, তবে একটি সমস্যা রয়েছে: উইন্ডোটি বর্তমান ওয়ার্কস্পেসে থাকা দরকার
  • কৌশলটি অস্থায়ীভাবে (মিনি উইন্ডোটি ব্যবহৃত হওয়ার সাথে সাথে) উইন্ডোটিকে "স্টিকি" (সমস্ত ওয়ার্কপেসে কার্যত উপলব্ধ থাকতে হবে) তৈরি wmctrlকরে তবে একই সাথে ছোট করা হয় min
  • যেহেতু সব কিছুই স্বয়ংক্রিয়ভাবে সম্পন্ন হয়, কার্যকরভাবে পার্থক্যটি কোনওটিই নয়, যেহেতু প্রাথমিক ভিউপোর্টে ফিরে আসল, মূল উইন্ডোটিকে "আন" চাপ দিন এবং এটি সীমাবদ্ধকরণ স্বয়ংক্রিয়ভাবে করা হয়।

সংক্ষেপে:

  1. শর্টকাটটি একবার টিপুন: লক্ষ্যযুক্ত উইন্ডোটি স্টিকি তৈরি করা হয়েছে, তবে ছোট করা হয়েছে
  2. এটিকে আবার টিপুন (সম্ভবত অন্য একটি ওয়ার্কস্পেসে): উইন্ডোর একটি ছোট মিনি-সংস্করণ উপরের বাম কোণায় প্রদর্শিত হয়, প্রতি চার সেকেন্ডে একবার আপডেট হয়।
  3. এটিকে আবার টিপুন: মিনি উইন্ডোটি বন্ধ হয়ে গেছে, ডেস্কটপটি উইন্ডোটির প্রাথমিক কর্মক্ষেত্রে চলে যায়, উইন্ডোটি পুনরায় পুনরায় পুনঃস্থাপন করা হয় un

বিশেষত ভার্চুয়ালবক্সের জন্য

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

বিকল্প 1

আমি নিয়ন্ত্রণ স্ক্রিপ্ট সম্পাদনা করেছি। এখন কেবল ভার্চুয়ালবক্সের ক্ষেত্রে:

  • ডেস্কটপের যে কোনও জায়গায় ক্লিক করুন, তারপরে আপনার শর্টকাট কী টিপুন। এর পরে, উইন্ডোটি প্রদর্শন করতে এবং প্রস্থান করতে কেবল শর্টকাট কীটি ব্যবহার করুন।

    ব্যাখ্যা: উইন্ডোটি "ডেস্কটপ" টাইপ করা থাকলে নিয়ন্ত্রণ স্ক্রিপ্টটি প্রস্থান করার জন্য তৈরি করা হয়েছিল, যেহেতু আপনি ডেস্কটপটি ছোট করতে চান না। বর্তমানে স্ক্রিপ্টটি সম্ভবত সক্রিয় উইন্ডোটি যদি ডেস্কটপ হয় তবে লক্ষ্যমাত্রার জন্য, সম্ভবত বিদ্যমান ভার্চুয়ালবক্স উইন্ডোজ সন্ধান করে।

বিকল্প 2

  • নীচের আইকনটি অনুলিপি করুন (ডান ক্লিক করুন -> হিসাবে সংরক্ষণ করুন), এটি সংরক্ষণ করুন minwinicon.png

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

  • একটি খালি ফাইলে নিচের লাইন কপি করুন, যেমন এটি সংরক্ষণ minwin.desktopমধ্যে ~/.local/share/applications:

    [Desktop Entry]
    Type=Application
    Name=Window Spy
    Exec=showcase_control 
    Icon=/path/to/minwinicon.png
    StartupNotify=false
    

    স্থানীয় ~/binপথটি "সন্ধান" করার জন্য আপনাকে লঞ্চ আউট এবং ফিরে প্রবেশ করতে হবে !
    এটি ব্যবহার করতে আইকনটি লঞ্চারটিতে টেনে আনুন।

দ্বিতীয় সমাধানটির একটি গুরুত্বপূর্ণ নেতিবাচক দিক রয়েছে: এটি লঞ্চটি ব্যবহার করার পরে, এটি কয়েক সেকেন্ডের জন্য ঝলকিয়ে উঠবে, উইন্ডোটি প্রদর্শিত হওয়ার জন্য অপেক্ষা করছে। সেই সময়ে, আবার ক্লিক করলে কোনও প্রভাব পড়বে না। যে পারেন , সমাধান করা যেতে হিসাবে বর্ণনা এখানে কিন্তু সহ এই উত্তর সত্যিই এটি অত্যন্ত দীর্ঘ করতে হবে। আপনি যদি বিকল্প দুটি ব্যবহার করতে চান তবে দয়া করে লিঙ্কটি দেখুন।


সুতরাং, ভাল পুরানো importএটি করতে পারে, যখন জিনোম-স্ক্রিনশট করতে পারে না। খুব, খুব আকর্ষণীয়। আমি আগ্রহী যে তারা যেভাবে কাজ করে তার মধ্যে পার্থক্যটি ঠিক
সের্গি কলডিয়াজহনি

@ সার্গ হ্যাঁ, আমি সত্যিই অবাক হয়েছিলাম, ভেবেছিলাম এটি কেবল রান্নাঘরের সরঞ্জাম দিয়েই করা সম্ভব নয় :)
জ্যাকব ভিলিজ

1
@ থটগুই এতে কাজ করছে :)
জ্যাকব ভিলিজ

1
@ জাইম্বব মন্তব্যটির জন্য ধন্যবাদ! তারা সিস্টেমে কোনও সন্দেহ নেই, তবে তারা বাইরে থেকে পাওয়া যায় কিনা তা প্রশ্ন । যদি বিকাশকারীরা কোনও উপায়ে একটি ক্লাইপ বিকল্প বা কোনও এপিআই সরবরাহ না করে, কোডটি ভেঙে দেওয়া সম্পূর্ণ ভিন্ন আদেশের কাজ হবে। আমি যদিও বিকল্পটি পছন্দ করতে চাই।
জ্যাকব ভ্লিজম

1
@ জ্যাকবভিলিজম ফেয়ার পয়েন্ট সম্ভবত এখানে আরও তথ্য stackoverflow.com/questions/18595951/… তবে আমার যোগ্যতা স্তরের উপরে!
jymbob

1

এমন কিছু যা ওভারকিলের মতো মনে হয় তবে পুরোপুরি এই উদ্দেশ্যে কাজ করে তা হ'ল ওপেন ব্রডকাস্টার । "উত্স" তালিকা বাক্সে, প্লাসটি ক্লিক করুন, "উইন্ডো ক্যাপচার" নির্বাচন করুন, তারপরে আপনার আগ্রহী উইন্ডোটি নির্বাচন করার অনুরোধগুলি অনুসরণ করুন record রেকর্ড আঘাতের কোনও অর্থ নেই; শুধু পূর্বরূপ ব্যবহার করুন। এটা তোলে জন্য উপলব্ধ প্রায় কাছাকাছি কোন অপারেটিং সিস্টেম উবুন্টু জন্য নির্দেশাবলী সঙ্গে, এখানে , যা আমি নিচে কপি করেছি।

sudo apt-get install ffmpeg
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update
sudo apt-get install obs-studio

যদি আপনার এটির মতো মনে হয় তবে আপনি "দেখুন" মেনুতে গিয়ে সমস্ত UI উপাদানগুলি আড়াল করতে পারেন।

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