작업 공간에서 모든 응용 프로그램을 닫는 방법은 무엇입니까?

작업 공간에서 모든 응용 프로그램을 닫는 방법은 무엇입니까?

작업 공간에 열려 있는 모든 응용 프로그램을 닫는 gnome 3 확장 또는 fedora 25 바로 가기가 있습니까? (예를 들어 X를 눌러 작업 공간 자체를 닫습니다.)

이 기능은 오래 전에 어딘가에서 본 적이 있는데, 어디서 왔는지는 잊어버렸지만, 기본적으로 Fedora에서는 사용할 수 없습니다.

답변1

아래 답변은 Gnome3/Ubuntu에서 작성되고 테스트되었습니다. Fedora/Gnome에서 실행하는 데 문제가 있는 경우 이를 언급해 주세요.


Gnome의 특정 작업공간에서 모든 애플리케이션 창을 닫는 스크립트

아래 스크립트는 특정 작업 공간의 모든 창을 닫습니다. 두 가지 옵션이 있습니다.

  1. 실행 시간아니요매개변수를 사용하면 모든 창이 닫힙니다.현재의작업공간 예:

    python3 /path/to/script.py
    
  2. 특정 작업 공간을 인수로 사용하여 실행하면 해당 작업 공간의 모든 창이 닫힙니다. 예를 들면 다음과 같습니다.

    python3 /path/to/script.py 0 
    

    작업공간 1의 모든 애플리케이션이 닫힙니다.첫 번째 작업 공간의 인덱스는 0입니다.

스크립트

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

arg = sys.argv[1:]

def check_close(w_id):
    w_data = get(["xprop", "-id", w_id])
    if "_NET_WM_WINDOW_TYPE_NORMAL" in w_data:
        subprocess.call(["wmctrl", "-ic", w])

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8")

wlist = [l.split() for l in get(["wmctrl", "-lG"]).splitlines()]

arg = arg[0] if arg else [
    l.split()[0] for l in get(["wmctrl", "-d"]).splitlines() if '*' in l
    ][0]

for w in [w[0] for w in wlist if w[1] == arg]:
    check_close(w)

사용하는 방법

  1. 스크립트에는 다음이 필요합니다.제어판, 시스템에 아직 소프트웨어가 없으면 소프트웨어를 설치해야 합니다.
  2. 스크립트를 빈 파일에 복사하고 다른 이름으로 저장하세요.close_wins.py
  3. 이제 대상 작업 공간을 인수로 사용하여 터미널 창에서 스크립트를 테스트 실행해 보세요. 예를 들면 다음과 같습니다.

    python3 /path/to/close_wins.py 2
    

    모든 창을 정상적으로 닫습니다.작업 공간 3에서(0 = 작업공간 1)

    모든 창을 닫습니다현재 작업공간, 인수 없이 실행:

    python3 /path/to/close_wins.py
    
  4. 모든 것이 제대로 작동하면 바로가기에 추가하세요. 선택: 시스템 설정 > 키보드 > 바로가기 > 사용자 정의 바로가기. "+"를 클릭하고 다음 명령을 추가합니다.

    python3 /path/to/close_wins.py
    

...또는 원하는 다른 방식으로 실행하세요.

설명하다

이 명령은 wmctrl -lG 현재 열려 있는 창에 대한 정보를 제공합니다. 출력은 다음과 같습니다.

0x018000f9  0 135  206  650  500  jacob-System-Product-Name pscript_6.py (1,6 GB Volume /media/jacob/6C08-F637) - gedit
0x01600a09  1 283  275  724  443  jacob-System-Product-Name jacob@jacob-System-Product-Name: ~
0x018018be  1 152  407  650  500  jacob-System-Product-Name Untitled Document 1 - gedit
0x0140008c  2 0    101  1280 960  jacob-System-Product-Name gnome - Can I have a countdown window show the time until next suspend? - Ask Ubuntu - Mozilla Firefox
0x01600a49  2 47   146  724  443  jacob-System-Product-Name jacob@jacob-System-Product-Name: ~

두 번째 열에서 창 위치를 검색할 수 있습니다.

0x0140008c  2 0    101  1280 960  jacob-System-Product-Name gnome - Can I have a countdown window show the time until next suspend? - Ask Ubuntu - Mozilla Firefox

이는 2창이 0첫 번째 작업 공간을 참조하므로 작업 공간 3에 있음을 의미합니다.

작업공간을 인수로 사용하여 스크립트를 실행하는 경우, 스크립트는 해당 창 ID를 구문 분석한 후 예를 들어 다음을 사용하여 정상적으로 닫습니다.

wmctrl -ic 0x0140008c

작업공간을 인수로 사용하지 않고 스크립트를 실행하는 경우, 스크립트는 다음 명령에서 현재 작업공간을 검색합니다.

wmctrl -d

그런 다음 내부적으로 현재 작업 공간을 매개 변수로 사용합니다.

관련 정보