바로가기를 사용하여 창 표시줄에서 창을 여는 방법

바로가기를 사용하여 창 표시줄에서 창을 여는 방법

바로가기를 사용하여 창 표시줄에서 창을 열 수 있는 방법이 있나요? 예를 들어 왼쪽의 첫 번째 창을 열려면 Ctrl+1을, 왼쪽의 두 번째 창을 열려면 Ctrl+2를 누릅니다.

현재 xfce4를 사용하고 있는데 xfce4에서 사용할 수 없다면 이를 허용하는 다른 데스크톱 환경이 있나요?

동일한 응용 프로그램에 대해 여러 개의 창이 열려 있기 때문에 응용 프로그램과 관련된 정렬 컷을 검색하는 것이 아니라 아래에서 말하는 것처럼 창에서 검색합니다.

답변1

약간의 스크립트와 시스템에 대한 간단한 수술을 통해 설명하는 대로 정확하게 배열할 수 있습니다.

재료

  1. wmctrl; 설치해야 할 수도 있습니다.
  2. 아래 스크립트
  3. xprop, 창 속성을 가져옵니다. 이는 시스템에 이미 설치되어 있습니다.
  4. Xfce 패널 설정의 설정 변경
  5. 추가 키보드 단축키

설정 방법

  • 설치하다 wmctrl:

    sudo apt-get install wmctrl
    
  • 디렉터리 ~/bin( /home/<yourname>/bin)를 생성합니다. 아래 스크립트를 빈 파일에 복사하고 panel_navigate(확장자 없음) 으로 저장하세요 ~/bin.실행 가능하게 만들어라.

  • 패널 설정 변경:
    설정 관리자 > "패널" > "항목"(탭) > "창 버튼" >으로 이동합니다.

    • "정렬 순서" > 선택:타임스탬프
    • "창 그룹화" > 선택: "안함"
    • "모든 작업 공간 또는 뷰포트의 창 표시"가 선택되어 있는지 확인하세요.유엔체크 표시

    여기에 이미지 설명을 입력하세요

  • 키보드 단축키 추가:
    설정 관리자 > "키보드" > "애플리케이션 단축키"로 이동하여 "추가"를 선택합니다. 다음 명령을 추가합니다.

    panel_navigate 1
    

    키 조합으로 설정 Ctrl+1

    여기에 이미지 설명을 입력하세요

  • 이제 다음을 선택할 수 있습니다.

    • 이 절차를 반복하여 + panel_navigate 2아래에 추가하는 등(9까지)Ctrl2

    (저장 옵션)또는(구성 파일을 수동으로 편집하는 것이 두렵지 않은 경우):

    • 파일을 편집할 수 있습니다:

      ~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
      

      키보드 단축키( xfce)가 저장되어 있습니다. 파일을 열고 다음과 mousepad같은 줄을 찾으십시오.

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      

      줄을 복사하여 다음 줄에 붙여넣고(삽입) 1을 2로 모두 변경하면 다음과 같은 결과를 얻을 수 있습니다.

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      <property name="&lt;Primary&gt;2" type="string" value="panel_navigate 2"/>
      

    등등..

    들여쓰기가 정확히 동일한지 확인하세요. 9까지 절차를 반복하십시오.

로그아웃했다가 다시 로그인하면 작동합니다.

Ctrl+1

여기에 이미지 설명을 입력하세요

Ctrl+3

여기에 이미지 설명을 입력하세요

등등...

스크립트

#!/usr/bin/env python3

import subprocess
import sys

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

def run_command(command):
    subprocess.Popen(["/bin/bash", "-c", command])

current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0]
wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()]
relevant = [item for item in wlist_ids if item[1] == current_workspace]
panel = []
for item in relevant:
    data = get_value("xprop -id "+item[0])
    if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1:
        panel.append(item)
try:
    window = panel[int(sys.argv[1])-1][0]
    run_command("wmctrl -ia "+window)
except IndexError:
    pass

설명

해결책은 기회주의적이다. 명령으로 호출되는 창 목록은 wmcrl -l창의 수명에 따라 정렬된다는 생각이 들었습니다 . xfce 패널이 동일한 작업(설정)을 수행하도록 하면 두 명령이 완벽하게 일치합니다. 스크립트가 수행하는 작업은 창 목록을 생성하고 "실제" 표시 창( 사용)을 필터링 하고 창 번호(왼쪽에서 오른쪽으로)를 도구로 사용하여 xprop명령으로 선택한 창으로 전환하는 것입니다 .panel_navigate

문제

한 가지 예외를 발견했습니다. IDLE(파이썬 인터프리터) 창의 pid는 0이고 해당 속성은 xprop. 창은 창 목록에 나타나지 않으며 스크립트에서 건너뜁니다.

메모

Ctrl+ 키 조합은 <number>테스트 중에 오류를 발생시키지 않았지만 일부 응용 프로그램과 충돌할 수 있습니다. (예) Ctrl+ Alt+를 선택하는 것이 더 안전할 수 있습니다 .1

답변2

동일한 애플리케이션인지 확실하지 않음, 그러나 예를 들어 = 런처의 첫 번째 항목, = 런처의 두 번째 항목, = 런처의 n번째 항목을 Unity사용하여 애플리케이션을 전환할 수 있습니다 . 이는 또한 노틸러스가 런처의 첫 번째 항목인 경우 노틸러스 파일 관리자를 여는 것과 같이 런처에 있는 모든 항목을 여는 데 도움이 됩니다.super+numbersuper + 1super + 2super + nsuper + 1

관련 정보