개발자/라즈베리파이4

giblib error: Can't open X display. 에러 해결 방법

지구빵집 2023. 1. 13. 19:07
반응형

 

 

부엌에 있는 Raspberry Pi는 비교적 안정적으로 실행되지만 최근 브라우저(openHAB - HABpanel이 표시됨, 스마트 홈의 중심으로 실행되는 기술에 구애받지 않는 오픈 소스 홈 오토메이션 플랫폼)의 오른쪽 상단에 경고 팝업이 표시됩니다. HABpanel의 이 영역이 외부 온도를 표시하기 때문에 성가신 일입니다.

 

무슨 일이 벌어지고 있는지 조사하기 전에 화면을 캡처하기 위해 휴대전화를 들고 부엌으로 달려가지 않고도 디스플레이의 스크린숏을 얻을 수 있는 방법을 찾아야 했습니다. 그리고 항상 키보드를 연결하지 않고 ("Prt Sc" 버튼 혹은 Print Screen 키를 누르기 위해).

 

시스템이 Raspbian을 실행 중입니다. 디스플레이 관리자는 LXDE입니다. Raspbian은 미리 설치된 스크린샷 도구와 함께 제공됩니다: 화면 캡처 프로그램인 "scrot"가 좋은 점은 ssh를 통해 로그인하는 동안 명령줄에서 스크린샷을 찍을 수 있다는 것입니다. 라즈베리파이4 에서는 기본이지만 혹시 이전 버전의 Pi에서는 없을 수 있습니다. 

 

내가 해야 할 일은 디스플레이가 어디에 있는지 "scrot"을 가르치는 것뿐이었습니다. 디스플레이 설정 없이 시작하면 X 서버에 연결할 수 없습니다. 아래와 같은 에러가 떠도 화들짝 놀라지 마세요. 해결방법은 간단합니다.

pi@raspberrypi:~ $ scrot
giblib error: Can't open X display. It is running, yeah?

아래와 같이 환경 변수를 설정해야 합니다. 환경 변수를 설정하는 방법은 그냥 프롬프트 $ 뒤에 아래 명령어를 차례로 하나씩 입력합니다. 한 줄 입력 후 엔터입니다. "DISPLAY"("0"인 첫 번째 디스플레이를 가리킴) 및 "XAUTHORITY"(현재 로그인한 사용자의 Xauthority 파일을 가리킴): 

 

export DISPLAY=:0

export XAUTHORITY=/home/pi/.Xauthority 

 

$export DISPLAY=:0
$export XAUTHORITY=/home/pi/.Xauthority

 

두 변수를 모두 내보낼 필요가 있습니다. 이는 쉘 용어로 다음을 의미합니다. 시작된 프로그램은 환경 변수도 볼 수 있습니다. 그렇지 않으면 쉘 자체에 대한 변수일 뿐입니다. 두 변수를 설정한 후 스크린샷을 찍을 수 있습니다. 중요한 것은 Putty와 같은 원격 연결 프로그램, 그러니까 ssh 연결 상태에서 사진을 화면을 캡처할 수 있습니다. 

 

아래와 같이 명령어를 실행합니다. 파일 캡처 이미지인 2023-01-13~ png 파일이 보이시죠? 아름답습니다. ^^

 

pi@raspberrypi:~ $
pi@raspberrypi:~ $ export DISPLAY=:0
pi@raspberrypi:~ $ export XAUTHORITY=/home/pi/.Xauthority
pi@raspberrypi:~ $ scrot
pi@raspberrypi:~ $ ls
2021-07-25-190049_1920x1080_scrot.png  all_sensortest   php.ini
2021-07-25-190410_1920x1080_scrot.png  capture1sec.py   phpinfo.php
2022-08-01-193711_655x417_scrot.png    demofarmdb       s-farm
2022-08-01-193807_1920x1080_scrot.png  farmactubrowser  s-fire
2023-01-13-185006_1920x1080_scrot.png  farmactuphone    s-home
Arduino                                iot_farmserver   s-pet
Bookshelf                              iot_fireserver   s-safe
.
.
.

 

 

라즈베리파이 화면 캡쳐 - putty 에서 scrot 실행

 

 

참고

Raspberry Pi: take a screenshot from a display with no keyboard and mouse  다양하게 재미있는 개인 블로그 사이트

 

 

반응형