터미널을 열고 이미 인스턴스가 열려있을 때 그 인스턴스를 표시하고 새로운 인스턴스를 열지 않는 방식으로 그놈 터미널을 설정하고 싶습니다.
터미널을 열고 이미 인스턴스가 열려있을 때 그 인스턴스를 표시하고 새로운 인스턴스를 열지 않는 방식으로 그놈 터미널을 설정하고 싶습니다.
답변:
터미널에 초점을 맞추기 위해 wmctrl을 사용하여 간단한 쉘 스크립트를 작성했습니다. 내가 원하는 것을 정확하게 수행합니다.
먼저 wmctrl을 설치하십시오 sudo apt-get install wmctrl
.
그런 다음 텍스트 편집기를 실행하고 다음 줄을 복사하십시오.
#!/bin/sh
SERVICE='gnome-terminal'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
wmctrl -xa $SERVICE
else
$SERVICE
fi
일반적으로 쉘 스크립트를 보관하는 곳에 파일을 저장하십시오. 제 경우에는 : ~/bin/single_instance.sh
디렉토리 ( cd ~/bin
)로 cd 하고 파일을 실행 가능하게하십시오.chmod +x single_instance.sh
이제 주 메뉴 선택 보조 프로그램»터미널 프레스 속성을 열고 명령을 스크립트로 바꿉니다.~/bin/single_instance.sh
시스템 설정»키보드»단축키를 엽니 다 . 백 스페이스를 제공하여 터미널 시작 바로 가기를 비활성화하십시오 . 사용자 정의 바로 가기를 만듭니다. 스크립트의 경로와 이름을 다시 입력하고 키 조합 ctrl + alt + t를 지정하십시오 .
끝났어, 단일 인스턴스 터미널 ...
매우 유용한 스크립트를 추가하고 싶습니다.
이 스크립트를 실행하기 위해 Ctrl + Alt + T 단축키를 구성했으며 Guake 또는 Tilda보다 훨씬 편안합니다.
#!/usr/bin/env sh
# APP is the binary name you see when you do ps
APP="gnome-terminal"
# WIN_CLASS is the window class you see when you do wmctrl -lx
WIN_CLASS="gnome-terminal-server.Gnome-terminal"
# Use the app from current workpace first, or any if not available
WORKSPACE=$(wmctrl -d | grep '\*' | cut -d ' ' -f1)
TPID=$(ps aux | pgrep $APP)
if [ "$TPID" ]
then
QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | grep $WORKSPACE | awk 'NR == 1 {print $1}')
if [ "$QTERM_WIN" ]
then
wmctrl -ia $QTERM_WIN
else
# No valid app found in the current workspace, switch to any
QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | awk 'NR == 1 {print $1}')
wmctrl -ia $QTERM_WIN
fi
else
$APP &
fi
QTerminal과 함께 사용하지만 필요에 맞게 수정했습니다. 행운을 빕니다