다음 작업을 수행하기 위해 여러 앱에 대한 바로가기를 원합니다.
- 아직 실행되고 있지 않은 경우 애플리케이션을 시작합니다.
- 앱이 백그라운드에 있으면 포그라운드로 가져옵니다.
- 애플리케이션의 다음 인스턴스가 있는 경우 포그라운드로 가져옵니다.
저는 데비안과 KDE를 사용하고 있습니다. 이를 달성하는 가장 좋은 방법은 무엇입니까?
답변1
여러 단계로 나누어 먼저 이름으로 작업을 찾고 찾을 수 없으면 실행할 수 있습니다.
APPID=`pgrep <taskname>`
if [ $APPID == "" ] ; then
<app-command-with-options>
exit 0
fi
이제 응용 프로그램을 실행해야 하면 스크립트가 종료되고, 그렇지 않으면 계속됩니다.창문을 찾고 있어요다음 작업에 속합니다.
known_windows=$(xwininfo -root -children|sed -e 's/^ *//'|grep -E "^0x"|awk '{ print $1 }')
for id in ${known_windows}
do
xp=$(xprop -id $id _NET_WM_PID)
if test $? -eq 0; then
pid=$(xprop -id $id _NET_WM_PID|cut -d'=' -f2|tr -d ' ')
if test "x${pid}" = x${APPID}
then
echo "Windows Id: $id"
fi
fi
done
이 시점에서 스크립트는 일치하는 창 목록을 반복했습니다. 루프 뒤에 명령을 추가하여 "$id"로 표시된 창을 활성화하면 목록의 마지막 창으로 전환되어 맨 위로 올라갑니다.
xdotool windowactivate $id
자신에게 맞는 순서로 창을 선택하는 다양한 전략을 알아낼 수 있습니다. 또한 명령 xdotool
과 검색 옵션을 보다 영리하게 사용하여 스크립트를 단순화할 수 있습니다.