열려있는 모든 터미널을 전면으로 가져 오는 바로 가기


17

웹 페이지 나 편집기로 이동 한 후 열려있는 모든 터미널을 원래 위치로 다시 가져올 수있는 방법이 있습니까? 터미널 아이콘을 클릭 한 다음 각 아이콘을 개별적으로 다시 가져 오는 것은 약간의 고통입니다.

감사!

예:

  • 바로 가기 :

사전 이미지 바로 가기


  • 바로 가기 :

이미지 후 바로 가기


1
+1 매우 흥미로운 질문입니다 . 관련없는 질문에 대한이 답변이 유용하다는 것을 알 수 있습니다. 기존 GUI 도구가없는 경우 devilspie 프로그램이이 문제와 관련이있을 수 있습니다.
evilsoup

아카이브 : gist.github.com/psi-4ward/18c3a596d28a3cfa772101af755545df 최근에 사용한 응용 프로그램을 존중하는 스크립트
Psi

답변:


9

Alt+ Tab를 눌러 창 사이를 전환하고 Alt+ Shift+ Tab를 눌러 창 사이를 다시 전환 할 수 있습니다. 이 바로 가기는 거의 모든 그래픽 운영 체제에서 작동하도록 만들어졌습니다. Yow는 동일한 목적으로 Super+ W및 화살표 키를 사용할 수도 있습니다 .

하나의 터미널 창을 전면 에 가져온 후 Alt+ ~를 눌러 다른 모든 터미널 창을 전면에 하나씩 가져옵니다.

창으로 전환


열려있는 모든 터미널을 자동으로 전면에 가져 오려면 (앞서 설명한대로 하나씩) , 다음 스크립트에 대한 키보드 단축키추가 해야합니다 ( Adobe답변 에서 가져온 스크립트는 해당 스크립트 버전이 작동하지 않는다는 점을 고려하여 개선되었습니다). 나를 위해) :

#!/bin/bash

if [ $# -ne 1 ];then
  echo -e "Usage: `basename $0` PROGRAM_NAME\n
           For example:\n\t
           '`basename $0` gnome-terminal' for Terminal\n\t
           '`basename $0` firefox' for Firefox\n\t
           '`basename $0` chromium-browser' for Chromium\n\t..."
  exit 1
fi

pids=" $(pidof $@) "

if [ "$pids" = "  " ]; then # the string "  " contain two spaces
    echo "There is no program named '$@' opened at the moment."
    exit 1
fi

wmctrl -lp | while read identity desktop_number PID window_title; do 
    if [ "${pids/ $PID }" != "$pids" ]; then
        wmctrl -ia $identity
    fi
done

스크립트를 실행 가능하게 만드는 것을 잊지 마십시오 :

chmod +x /path/to/script/script_name

터미널에서 스크립트를 테스트 한 후 다음을 확인해야합니다.


3
고맙지 만 터미널 아이콘을 클릭하고 각각을 선택하여 전면으로 가져 오는 것과 본질적으로 동일합니다. 나는 열려있는 모든 터미널을 앞으로 가져올 지름길을 의미합니다. 예를 들어 gedit로 코드를 작성하고 다른 터미널에서 로그의 출력을 보면서 한 터미널에서 코드를 컴파일하려고합니다.
TomSelleck

"스크린 샷은 1 초
후에 찍히게

1
@Tomcelic 내 새 편집 내용을 참조하십시오. Adobe 가 자신의 답변 방법 (제대로 작동하지 않음) 게시 하는 동안 이러한 스크립트를 작성하고 있다고 말하고 싶기 때문에 잘못된 방법으로 사용하지 마십시오.
Radu Rădeanu

8

다음은 제목이 ARG와 일치하는 모든 창을 맨 앞으로 가져 오는 작은 bash 스크립트입니다.

bring-all-windows.bash ARG

스크립트 :

#!/bin/bash

Program=$@

wmctrl -l | while read Window; do
    if [[ "$Window" == *"$Program"* ]]; then
        echo "DEBUG: I bring $Window"
        code=`echo "$Window" | cut -f 1 -d " "`
        wmctrl -i -a $code
    fi
done

당신은 바인딩 할 수 있습니다

bring-all-windows.bash Terminal

(핫키를 누르십시오 (로그인 쉘 PATH에 스크립트를 넣거나 전체 경로를 작성하는 것을 잊지 마십시오)).

스크립트 wmctrl를 설치 해야 합니다.

편집 :

터미널에서 무언가를 실행하려면 스크립트를 넣은 디렉토리로 이동 한 다음

chmod +x bring-all-windows.bash
./bring-all-windows.bash Terminal

터미널에서 제대로 작동한다고 확신하면 전체 경로를 제공하여 핫키에 바인딩하십시오. 핫키와 스크립트의 전체 경로로 작동하는지 확인한 다음, dir을 로그인 쉘 PATH에 추가하고 작동하는지 확인하십시오.


잘 들린다! 잠시 후 다시 시도해 보겠습니다. 나는 아직도 이것에 대한 기본 방법이없는 이유에 대해 약간 혼란스러워합니다. 그것은 자연스러운 것 같습니다.
TomSelleck

@Tomcelic : a wmctrlbash:이 있습니다. 자연 스럽습니다.
Adobe

사실이지만 네이티브가 아닙니다 : P
TomSelleck

이 스크립트를 사용하는 방법을 살펴 보시겠습니까? 스크립트를 작성하여 홈 폴더에 저장하고 / etc / shells 경로를 추가했습니다. 또한 이름이 bring_terminals_forward 인 키보드 설정에 단축키를 추가했으며 명령은 bash
/home/michael/Scripts/bring-all-windows.bash

실행중인 터미널에서 직접 스크립트를 실행해도 작동하지 않는 것 같습니다 ... gedit와 같은 프로그램에서는 작동하지만 터미널에서는 작동하지 않습니다.
TomSelleck

0

다른 방법은을 사용하는 것 xdotool입니다. 먼저 설치해야하므로 sudo apt-get install xdotool필수입니다.

xdotool search --class "terminal" windowactivate %@
xdotool search --name "braiam@bt" windowactivate %@

*terminal*번째는 이라는 바이너리를 찾고, 두 번째는 title을 가진 모든 창을 찾습니다 *braiam@bt*. 그런 다음 bash 스크립트에 넣으면 :

#!/bin/bash

set -e
program=$@

xdotool search --class '$program' windowactivate %@
xdotool search --name '$program' windowactivate %@

xdotool매뉴얼 에서 이에 대해 더 알 수 있습니다 .


0

Ubuntu 데스크탑에서 그래픽으로 바탕 화면의 왼쪽 여백에 세로로 아이콘이 배열되어 있습니다. 터미널 아이콘을 마우스 왼쪽 버튼으로 클릭하면 모든 터미널 창이 나타납니다. 그런 다음 어느 것을 작업 할 것인지 선택할 수 있습니다. 터미널 아이콘을 마우스 오른쪽 버튼으로 클릭하면 맨 위에 "새 터미널"이있는 메뉴 목록이 표시되고 열려있는 모든 터미널이 목록 하단에 표시됩니다. 활성 터미널을 선택할 수 있습니다.

브라우저와 같은 다른 응용 프로그램에서도 이와 동일한 방법이 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.