태그 보관물: workspaces

workspaces

다른 작업 공간의 작은 라이브 미리보기를 보여주는 창을 가질 수 있습니까? VM을 실행하여 업데이트를 완료하는

현재 작업 공간에서 이동할 수있는 창으로 표시되도록 한 작업 공간의 라이브 섹션을 미러링 할 수 있습니까?

다른 날에는 Ubuntu 16.04 호스트에서 Windows 10 VM을 실행하여 업데이트를 완료하는 데 정말 오랜 시간이 걸렸습니다. 우분투에서 엑스포 ( Super+ S)를 통해 진행 상황을 계속 확인했습니다 . simplescreenrecorder와 같은 도구가 화면의 일부만 기록하도록 구성 할 수 있기 때문에이 문제는 이미 해결되었을 가능성이 가장 높습니다. 그러나 Google 검색에 사용할 적절한 용어를 모르겠습니다.

아래의 300×150 스크린 샷을 현재 작업 공간의 오른쪽 상단에 떠있는 창 (실시간 업데이트 포함) 형태로보고 싶습니다.

여기에 이미지 설명을 입력하십시오



답변

편집하다

(신규 답변)

끝난.
아래의 답변은 이제 Trusty, Xenial, Yakkety 및 Zesty의 ppa로 지표로 세련된 형태로 제공됩니다.

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

주스의 표시기 (미리보기 창 포함)가 매우 낮습니다. 옵션에는 설정 창, 설정 창 테두리 크기 / 색상, 창 크기가 있습니다.

그 동안 AU 창을 주시하는 것이 유용하다는 것을 알았습니다. 메시지가 있는지 확인하십시오 🙂


오래된 답변

( 번째 거친 개념)

다른 작업 공간에서 창을 최소화하여 표현

놀랍게도 속임수와 속임수 로 효과적으로 수행 할 수 있습니다 . 다른 작업 공간에서 업데이트 된 창 표현을 갖습니다. 영화를보기에는 적합 하지 않으며 다른 곳의 창문 (예 : 내 TV 카드 창)을 계속 볼 수있을 정도로 충분합니다.

실제로 작동하는 방식

  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, xdotoolwmctrl

    sudo apt-get install xdotool wmctrl python3-pil
    
  2. 디렉토리가 없으면 작성하십시오 ~/bin.

  3. 복사 스크립트 1, 그는 (정확하게)와 같은 스크립트 제어 showcase_control에서 (확장자)을 ~/bin하고, 그것을 실행하기 .
  4. 복사 스크립트 2 (정확하게)과 미니 창 스크립트 showmin에서 (확장자) ~/bin, 그리고 그것을 실행하기 .
  5. 로그 아웃했다가 다시 로그인하고 선택한 바로 가기에 다음 명령을 추가하십시오.

    showcase_control
    

    시스템 설정> “키보드”> “바로 가기”> “사용자 정의 바로 가기”를 선택하십시오. “+”를 클릭하고 다음 명령을 추가하십시오.

    showcase_control
    

    그리고 작동해야합니다!

    • 키를 한 번 눌러 현재 창을 가져옵니다.
    • 미니 윈도우를 원하는 다른 작업 공간으로 이동
    • 다시 누르면 미니 윈도우가 나타납니다
    • 다시 누르면 원래 작업 공간으로 돌아가고 (자동으로) 원래 창을 최소화하고 미니 -1을 닫습니다.

단점?

  • 설정은 현재와 같이 프로세서에 약간의 작업을 추가합니다 . 그러나 내 (매우) 오래된 시스템에서는 (평균) appr이 추가됩니다. 4-5 % 나는 어떤 식 으로든 눈치 채지 못했다고 생각 합니다 .

    업데이트 : 그것은 밝혀 import과 함께, 한 번에 이미지 크기를 조정할 수 있습니다 가져 오는 창 이미지를. 이는 프로세서로드가 상당히 줄어든 것을 의미합니다. 동시에 새로 고침 시간이 짧아지고 (현재 3 초) 여전히 “비용”이 낮습니다.

설명

  • 내 출발점은 OP가 다른 옵션을 사용하여 다른 작업 공간의 창을 주시하고 무언가를 마칠 때까지 기다리겠다고 언급 한 방식이었습니다.
  • 하지만 말 그대로 정확한 (미니) 다른 작업 공간에 창으로 복사 가진 것은 불가능 보인다, 우리는 할 수 과 기존 윈도우의 이미지를 만들어 import우리가 윈도우 ID를 일단, – 명령. 둘 다 초점이없는 최소화 된 창 또는 창에서 작동하지만 한 가지 문제가 있습니다. 창 은 현재 작업 공간에 있어야합니다 .
  • 트릭은 (미니 윈도우가 사용되는 동안) 일시적으로 창을 “고정”(모든 작업 공간에서 사실상 사용 가능)으로 wmctrl만들지 만 동시에 최소화하는 것입니다.
  • 모든 것이 자동으로 수행되기 때문에 차이는 사실상 없습니다. 초기 뷰포트로 돌아와서 원래 창을 “고정 해제”하고 고정을 해제하면 자동으로 수행됩니다.

한마디로 :

  1. 바로 가기를 한 번 누르기 : 대상 창이 고정되어 있지만 최소화됩니다.
  2. 다시 누르면 (다른 작업 공간에서) : 왼쪽 상단에 작은 미니 버전의 창이 나타나고 4 초마다 한 번씩 업데이트됩니다.
  3. 다시 누르면 미니 창이 닫히고 바탕 화면이 창의 초기 작업 공간으로 이동하며 고정 및 최소화되지 않은 상태로 복원됩니다.

VirtualBox 전용

VBox 창이 앞에 있으면 Ubuntu 바로 가기 키가 비활성화 (!)되어 제어 스크립트를 다른 방법으로 시작해야합니다. 몇 가지 간단한 것들 아래.

옵션 1

제어 스크립트를 편집했습니다. 이제 VirtualBox의 경우 에만 :

  • 바탕 화면의 아무 곳이나 클릭 한 다음 바로 가기 키를 누릅니다. 그런 다음 바로 가기 키를 사용하여 창을 표시하고 종료하십시오.

    설명 : 데스크탑을 최소화하지 않으려는 창 유형이 “desktop”인 경우 제어 스크립트가 종료되었습니다. 이제 스크립트는 먼저 현재 활성화 된 창이 데스크탑 인 경우 대상이 될 기존 VirtualBox 창을 먼저 찾습니다.

옵션 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경로 를 “찾기”하려면 로그 아웃했다가 다시 로그인해야 합니다!
    아이콘을 실행기로 드래그하여 사용하십시오.

두 번째 해결책은 중요한 단점이 있습니다. 실행기에서 사용한 후에는 몇 초 동안 깜박 거리면서 창이 나타날 때까지 기다립니다. 그 동안 다시 클릭해도 효과가 없습니다. 즉 설명 된대로 해결할 수 여기에 ,하지만이 답변에 정말 너무 오래 그것을 만들 것이라는 점을 포함. 옵션 2를 사용하려면 링크를 확인하십시오.


답변

과도하게 보이지만이 목적을 위해 완전히 작동하는 것은 Open Broadcaster 입니다. “소스”목록 상자에서 더하기를 클릭하고 “창 캡처”를 선택한 다음 프롬프트에 따라 관심있는 창을 선택하십시오. 기록에 타격이 없습니다. 미리보기 만 사용하십시오. 그것은 사용할 수있어 거의 모든 OS 우분투에 대한 지침과 함께, 여기에 내가 아래에 복사했습니다.

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

기분이 좋으면 “보기”메뉴로 가서 모든 UI 요소를 숨길 수 있습니다.


답변