바탕 화면 바로 가기는 bash 스크립트에서는 작동하지만 실제 스크립트에서는 작동하지 않습니까?

바탕 화면 바로 가기는 bash 스크립트에서는 작동하지만 실제 스크립트에서는 작동하지 않습니까?

키보드 단축키에 바인딩할 수 있는 스크립트를 만들어야 합니다. Mozilla 인스턴스가 열려 있지 않으면 스크립트가 이를 열고, 열려 있으면 스크립트가 창을 최소화하거나 최대화합니다. 일종의 드롭다운 터미널과 같습니다.

데스크톱 단축키로 스크립트를 열면 스크립트가 작동하지만 스크립트를 직접 클릭하여 열거나 키보드 단축키에 매크로를 지정하면 예상대로 작동하지 않습니다. Mozilla만 열지만 최소화하거나 최대화하지는 않습니다.

#!/bin/bash

touch memory.txt
myvar="$( xdotool search Mozilla )"
status="$(grep [0-1] memory.txt)"
run=0

if [ $(grep -c [0-9] <<< $myvar) -gt 0 ]
then
    pwd
else
    (firefox &)
fi

if [ $status = 0 ]
then
    $(xdotool windowminimize $myvar)
    echo -n "1" > memory.txt
    run=1   
fi

if [ $status = 1 ] && [ $run -eq 0 ]
then
    $(wmctrl -ia $myvar)
    echo -n "0" > memory.txt
fi
exit

답변1

  • 무엇데스크탑 환경그것을 사용하고 있습니까?
  • 키 바인딩을 어떻게 정의하나요? 스크립트, GUI 또는 CLI 도구를 통해?

스크립트와 관련하여 바로 가기 관리자에서 스크립트의 전체 경로를 정의해야 합니다. ~그래픽 쉘에서는 해석되지 않으므로 사용하지 마십시오 . 또한 스크립트를 실행 가능하게 만드십시오.

다음은 귀하와 동일한 작업을 수행하기 위해 사용하는 스크립트입니다. (저는 이 스크립트를 다른 응용 프로그램에 사용하므로 귀하의 질문과 일치하도록 아래 코드를 "firefox"로 변경했습니다.) 참고: 저는 GNOME 3.28.2를 사용하고 있으며 xdotool 3.20160805.1

#!/bin/bash
wid=$(xdotool search --onlyvisible --name 'firefox')
if test "$wid" = "" ; then exec firefox &
fi
actual=$(xdotool getactivewindow)
if test $wid = $actual ; then xdotool windowminimize $wid
else xdotool windowactivate $wid
fi
##EOF

관련 정보