1 원인 및 상황
원격으로 vnc server를 켜고 :0 display에서 작업을 하고 있었기에 ‘혹시 원격에서만 나타나는
현상일까?’싶어서 부팅 시 run level을 여러 단계로
조작해보며 시도해보기도 하고 직접 모니터를 연결해 시도해보았지만 결과는 똑같았다. 문제는 여기에 있지
않았던 셈.
…이라고 원인을 잘못 짚고 있었다.
나흘이 넘는 시간 동안에 온 웹사이트를 다 뒤지고 다니다가… 사사롭게 넘겼던 깃허브의 한 코멘트에서 얻은 조언을 응용하다가
결국 원인을 찾아내고야 말았다. 원인은 ‘화면의 크기보다 더 큰 사이즈를 grab하려 할 때 발생한 에러’이다.
현재 실행되고 있는 데스크톱의 display resolution이
철저하게 1920x1080이라고 믿고 있었다. 그런데 이 방법으로
얻은 이미지 파일의 크기는 1900x1200이었다. 설마
싶어서 grab()을
할 때 잘라낼 영역을 1000x1000으로 설정해보았더니 너무나도 잘 작동하는 것이었다.
2
해결 방법
튜토리얼의 코드를 따라 실행하되, 반드시 실행될 수 있을거라 확신하는 해상도를 입력해보길 바란다. 예를 들자면
sct.grab({"top": 10, "left": 20,
"width": 100, "height": 200})
와 같은 코드를 실행해본다.
만약 위의 방법이 통하지 않는다면 세컨드 모니터 설정을
시도해보거나, x11
사용 설정을 고려해보는 것도 좋다.
3
잡설
아래는 에러를 해결해가며 알게 된 소소한(?) 내용을 함께 적어둔
것이다..
Ubuntu 20.04 LTS 버전에서 파이썬의 mss 라이브러리가 작동하지 않는 상태이다. 이에 관한 문제를 스택오버플로우에서 확인할 수 있었고, 이에 관한 해결책을 따라해보며 기록해보았다.
이 원인은 아마도 mss가 xWayland 대신에 x11을
사용하고 있는 것 같다. xWayland는 페도라의 기본값이고, mss는 화면을 캡쳐하는 데에 x11을 사용하는 것 같다고 한다.
그래서 이를 해결하기 위해 이 링크에서 제시하는 방법을 따라보았다. sudo nano /etc/gdm3/custom.conf
를 연다. 참고로 우분투 20.04 버전에서는 gdm 대신 gdm3로
들어가야 한다.
#WaylandEnable=false
를
WaylandEnable=false
로 주석 해제한 다음
[daemon] 섹션에 아래의 문장을 추가했다.
DefaultSession=gnome-xorg.desktop
저장.
그런데 이 방법은 앞선 상황에서 전혀 빛을 보지 못했다고 전해진다.