scrot 및 gnome-screenshot 대화형 모드에 대한 사용자 정의 바로가기를 만드는 방법

scrot 및 gnome-screenshot 대화형 모드에 대한 사용자 정의 바로가기를 만드는 방법

명령어를 추가하고 싶어요scrot-s사용자 정의 바로가기로그놈 제어 센터 키보드. 액셀러레이터 키는 Super+S입니다.

여기에 이미지 설명을 입력하세요.

하지만 작동하지 않습니다.

내가 삭제하면-에스또는 다음과 같은 다른 대화형 명령을 사용해 보세요.죽이다, 그들은 아주 잘 작동합니다.

반품,scrot -e 'mv $f ~/그림/scrot/'또한 훌륭하게 작동합니다.

그래서 내 질문은, 왜?scrot-s작동하지 않습니다. 어떻게 해결할 수 있나요?

내 배포판은 fedora 21이고 gnome 버전은 3.14.2, scrot 버전은 0.8입니다.

[고쳐 쓰다] 그놈 스크린샷 -a또한 실패했습니다.

[업데이트 2]기본 단축키인 "사진에 영역의 스크린샷 저장"은 잘 작동하는데, 사용자 정의 단축키로 설정하면 왜 작동하지 않는지 아직도 궁금합니다. 여기에 이미지 설명을 입력하세요.

[업데이트 3] 다음은 사용자 정의 바로가기 명령의 오류 로그 결과입니다 strace -v -s 1000000 -o /tmp/gnomescr.log gnome-screenshot -a.

$ grep -ni CRITICAL /tmp/gnomescr.log 
2660:write(2, "\n(gnome-screenshot:8700): Gdk-CRITICAL **: gdk_pixbuf_get_from_surface: assertion 'width > 0 && height > 0' failed\n", 115) = 115
2686:write(2, "\n(gnome-screenshot:8700): Gtk-CRITICAL **: gtk_window_resize: assertion 'width > 0' failed\n", 91) = 91
2748:write(2, "\n** (gnome-screenshot:8700): CRITICAL **: Unable to capture a screenshot of any window\n", 87) = 87
$ 

답변1

먼저 systemd, Xorg.bin 등의 상위 프로세스에 대해 strace를 시도했지만, strace를 처음 접하는 단계라 파악하지 못했습니다.

그런 다음 권한 문제(su -, sudo, ...etc)와 관련이 있을 수 있다고 생각했습니다. 그래서 루트로 바로가기 키를 눌러보겠습니다. 그래서 나는 sudo xdotool key Super+s그것을 테스트하는 데 사용할 수 있다는 것을 빨리 깨달았습니다. 그러자 놀랍게도 효과가 있었습니다!

그래서 sudo 없이 시도했지만 xdotool key Super+s여전히 작동했습니다. 그래서 잘 작동한다는 결론을 내렸지 xdotool key Super+s만 strace 로그에서는 xdotool과 누른 키의 차이를 여전히 알 수 없습니다.

그러다가 xdotool key Super+s맞춤 단축키로 만들어 놓으면 어떨까 하는 생각이 들었습니다. 그래서 새로운 맞춤 단축키를 만들었습니다.슈퍼+J그리고 command 에 바인딩됩니다 xdotool key Super+s. 여기서슈퍼 +이미 command 에 바인딩되어 있습니다 scrot -s. 누르면 작동해요슈퍼+J

나는 두 가지를 모두 테스트했는데 gnome-screenshot -a훌륭하게 scrot -s작동합니다.

[고쳐 쓰다]나는 이것을 찾았다협회,문제 476: Xmonad는 생성 전에 키 바인딩을 해제해야 합니다.:

보고자[이메일 보호됨], 2011년 9월 18일

여기서 Scrot는 스크린샷을 찍는 데 사용됩니다. Scrot는 키보드를 잡고 중단 신호로 키 누르기를 듣습니다. 키보드를 사용할 수 없으면 오류가 나타납니다.

giblib error: couldn't grab keyboard:Resource temporarily unavailable

테스트하려면:

xmonad.hs의 키 입력에 "scrot -s > /tmp/logfile"을 바인딩합니다.

키를 활성화하면 아무 일도 일어나지 않습니다.

로그 파일을 확인하여 위와 같은 오류를 발견했습니다.

여기서는 "sleep 0.2; scrot -s"에 대한 바인딩이 작동하기 때문에 이것이 경쟁 조건이라고 생각합니다. 실제 문제는 생성된 애플리케이션이 xmonad를 기다리는 동안 xmonad가 키보드에 불필요하게 매달려 있다는 것입니다.

어떤 버전의 제품을 사용하고 있나요? 어떤 운영 체제에서? 0.9.2/슬랙웨어리눅스

그는 sleep유사한 문제를 해결하기 위해 이를 사용합니다. 나는 그것을 테스트했고 작동합니다. 그런데 사용자 정의 명령이 지원되지 않는 것 같아서 쉘 스크립트에 넣어야 합니다.&&또는;여러 명령을 연결하는 데 사용됩니다. 하지만 수면 시간 0.2가 때때로 나에게 적합하지 않습니다. 안전한 방법은 물론 수면 시간을 0.5~1초 늘리는 것이다.

관련 정보