프로그램이 열려 있는지 확인하고 그렇다면 새 인스턴스 대신 해당 창을 여는 키보드 단축키를 만드는 방법

프로그램이 열려 있는지 확인하고 그렇다면 새 인스턴스 대신 해당 창을 여는 키보드 단축키를 만드는 방법

하이퍼터미널 예:

alt+를 누르면 h스크립트가 하이퍼가 이미 백그라운드에서 실행 중인지 확인해야 합니다.

그렇다면 이미 창이 열려 있어야 합니다.
그렇지 않은 경우 새 창을 열어주세요.

운영 체제: 우분투 18.04

답변1

키보드 단축키 생성은 DesktopManager에 따라 다릅니다. 우분투 18에서이 답변은 방법을 설명합니다.. 바로가기를 통해 실행하기 위해 설정해야 하는 명령은 다음과 같습니다.

이 간단한 명령은 창 관리자를 슈퍼창으로 전환합니다.

wmctrl -a Hyper

EWMH/NetWM 사양을 지원하는 모든 창/데스크탑 관리자가 작동합니다 wmctrl. Ubuntu 데스크탑은 호환될 가능성이 높지만 설치해야 할 수도 있습니다 wmctrl.

나는 테이블 위에 무엇이 있을지 맛보기 위해 이전 답변을 남겨두고 있습니다. 이것이 위의 명령을 찾은 방법입니다.


오래된 답변:

스크립트에 대해 작성해 볼 수 있는 몇 가지 핵심 요소가 있습니다.

  1. ps -xau | grep hyper프로세스가 이미 실행 중인지 여부에 대한 정보를 얻습니다. 검색 중인 grep 프로세스도 나열됩니다 hyper.

  2. 1단계는 선택사항일 수 있습니다.아마도귀하의 창 관리자는 EWMH/NetWM 사양을 지원합니다. 따라서 wmctrl설치해야 할 수도 있습니다. 터미널을 입력하여 wmctrl존재하는지 확인하십시오.

  3. wmctrl -l현재 열려 있는 모든 창의 목록이 제공됩니다.

  4. wmctrl -a그런 다음 원하는 창을 활성화하고 또는 를 사용하여 해당 창으로 이동할 수 있습니다.wmctrl -R

wmctrl -h데스크탑에서 수행할 수 있는 다른 작업에 대해 설명합니다.

예를 들어 내 컴퓨터(여러 개의 창과 데스크탑이 열려 있음)에서 Hyper를 시작한 후 wmctrl -l을 입력하면 다음과 같은 결과가 나타납니다.

0x02c00006 18 mymachine urxvt
0x02e00006 19 mymachine ncurses.h = (/nix/store/ffjl7aw7f0gjwv4gb4mgb0w49v5dhrkg-ncurses-6.0-20171125-dev/include) - VIM
0x03c00006 16 mymachine urxvt
0x03000006 20 mymachine urxvt
0x03a00006  8 mymachine urxvt
0x00e00006 24 mymachine urxvt
0x01800003 15 mymachine Volume Control
0x04c00005  1 mymachine Hyper
0x03e00001 15 mymachine 2.3. Using Precedences - Chromium
0x03e00006 15 mymachine Edit - Unix & Linux Stack Exchange - Chromium
0x03e00007 15 mymachine C++ Core Guidelines - Chromium

이 줄을 주목하세요: Desktop 1 0x04c00005에 Hyper라는 창이 있다고 나와 있습니다.

0x04c00005  1 mymachine Hyper

다음 명령을 사용하여 이 줄을 직접 가져올 수 있습니다.

wmctrl -l | grep Hyper

창을 활성화하려면:

wmctrl -a 0x04c00005

그러나 어떤 이유로 이 최신 명령이 내 Fluxbox 환경에서 작동하지 않는 이유를 모르겠습니다... 어쩌면 Fluxbox가 모든 것을 구현하지 않을 수도 있습니다 wmctrl.

당신은 그것을 테스트해야합니다. 이것이 Ubuntu 환경에서 작동한다면 이러한 다양한 명령을 자동으로 실행하는 bash 스크립트를 작성해 보십시오. 그런 다음 성공했거나 장애물에 직면했던 부분을 알려주세요.

편집하다wmctrl -a : 16진수 ID가 아닌 창 제목이 필요한 것 같습니다 .

따라서 해결책은 간단합니다.

wmctrl -a Hyper   

당신은 또한 시도할 수 있습니다

wmctrl -R Hyper

답변2

핵심은 Hyper열려 있는 다른 프로그램의 키워드와 일치하지 않는 창 제목 표시줄에서 고유한 이름을 찾는 것입니다. 나는 당신이 언급한 프로그램을 설치하지 않았지만 Debian 9에서 Xfce를 사용하고 있습니다. mousepad따라서 이것을 키보드 단축키로 추가할 수 있습니다:

bash -c 'wmctrl -a Mousepad || mousepad'

마우스 패드를 창 제목 표시줄의 키워드로 바꾸고 두 번째 부분에서는 터미널에서 실행하는 데 사용할 프로그램 이름을 사용하세요. 창이 이미 열려 있는 경우 위 명령을 실행하면 창이 활성화됩니다. 그러나 명령이 실패하면 즉, ||프로그램이 시작됩니다.

관련 정보