저는 Linux Mint 18.3 Cinnamon 64비트를 사용합니다. 나는 xdotool
그것을 설치했다.
발광로그인 이후 실행 중이므로 실행 애플리케이션 도구를 사용하여 로그인 직후 실행을 생성합니다.
env WINEPREFIX="/home/vlastimil/.lightshot" wine C:\\windows\\command\\start.exe /Unix /home/vlastimil/.lightshot/dosdevices/c:/users/Public/Start\ Menu/Programs/Lightshot/Lightshot.lnk
표적:
(Print Screen 키)를 누르고 PrtSc전체 화면 클리핑 모드로 들어갑니다(실제로 Windows의 Lightshot과 동일한 기능).
작동 방식(에서 실행 시 gnome-terminal
):
xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep Lightshot) --name Lightshot) "Print"
하지만 복사해서 붙여넣으면맞춤설정 추가바로가기 대화상자:
왜 이런 일이 발생하는지, 더 중요한 것은 어떻게 작동하게 만드는지 궁금합니다.
답변1
2020년 1월 2일 업데이트됨
당신은 찾을 수 있습니다최신 개정판그리고사용 지침존재하다GitHub 페이지.
원본 게시물
그 이유는 실행할 쉘을 지정하지 않았기 때문일 수 있으므로 다음이 작동합니다.
sh -c 'xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep Lightshot) --name Lightshot) "Print"'
편집하다:
내가 이제 이에 대한 스크립트를 작성하기로 결정했다는 점은 주목할 가치가 있을 것입니다. 모든 단계를 완전히 검증합니다.
#!/bin/sh
is_number()
{
# check if exactly one argument has been passed
test "$#" -eq 1 || print_error_and_exit 5 "is_number(): There has not been passed exactly one argument!"
# check if the argument is an integer
test "$1" -eq "$1" 2>/dev/null
}
# ------------------------------------------------------------------------------
print_error_and_exit()
{
# check if exactly two arguments have been passed
test "$#" -eq 2 || print_error_and_exit 3 "print_error_and_exit(): There have not been passed exactly two arguments!"
# check if the first argument is a number
is_number "$1" || print_error_and_exit 4 "print_error_and_exit(): The argument #1 is not a number!"
# check if we have color support
if [ -x /usr/bin/tput ] && tput setaf 1 > /dev/null 2>&1
then
bold=$(tput bold)
red=$(tput setaf 1)
nocolor=$(tput sgr0)
echo "$bold$red$2 Exit code = $1.$nocolor" 1>&2
else
echo "$2 Exit code = $1." 1>&2
fi
exit "$1"
}
# ------------------------------------------------------------------------------
check_for_prerequisite()
{
# check if exactly one argument has been passed
test "$#" -eq 1 || print_error_and_exit 2 "check_for_prerequisite(): There has not been passed exactly one argument!"
# check if the argument is a program which is installed
command -v "$1" > /dev/null 2>&1 || print_error_and_exit 6 "check_for_prerequisite(): I require $1 but it's not installed :-("
}
# ------------------------------------------------------------------------------
# check if no arguments have been passed to the script
test "$#" -gt 0 && print_error_and_exit 1 "$0: You have passed some unexpected argument(s) to the script!"
# ------------------------------------------------------------------------------
# check for prerequisites
check_for_prerequisite "pgrep"
check_for_prerequisite "xdotool"
# ------------------------------------------------------------------------------
# global constants
lightshot_key="Print"
lightshot_name="Lightshot"
# ------------------------------------------------------------------------------
# get the lightshot pid
lightshot_pid=$(pgrep "$lightshot_name")
# test if a pid has been successfully acquired
is_number "$lightshot_pid" || print_error_and_exit 7 "lightshot_pid: The argument is not a number!\\nLightshot is most probably not running."
# ------------------------------------------------------------------------------
# get the window id from lightshot pid
lightshot_wnd=$(xdotool search --limit 1 --all --pid "$lightshot_pid" --name "$lightshot_name")
# test if a window handler has been successfully acquired
is_number "$lightshot_wnd" || print_error_and_exit 8 "lightshot_wnd: The argument is not a number!\\nLightshot is most probably not running."
# ------------------------------------------------------------------------------
# simulate a print screen key press on the lightshot window
xdotool key --window "$lightshot_wnd" "$lightshot_key"