프로젝트 소개

DesktopPanel은 공식 RPi 터치 스크린이 있는 라즈베리 파이용으로 설계된 데스크톱 제어 패널입니다. 저자의 SmartBedroomPanel 프로젝트를 재구성한 후속작이며 Docker 이미지(mrtux/desktop-panel)로 배포됩니다. 설정 노트는 백라이트 제어를 다룹니다. udev 규칙이 백라이트 밝기와 bl_power sysfs 항목에 대한 비루트 쓰기 권한을 부여합니다. 알려진 보드가 감지되지 않으면 백라이트 sysfs 환경이 임시 디렉터리에 가짜로 생성되며, 이는 개발에 유용합니다. Docker로 실행하려면 애플리케이션이 여러 시스템 리소스에 접근하므로 상승된 권한이 필요합니다. 컨테이너는 desktop-panel-config.json과 issuelist.json을 포함하는 구성 디렉터리를 /app/configuration에 읽기 전용으로 마운트하고, 선택적으로 쓰기 가능한 스크린샷 디렉터리를 /app/screenshots에 마운트할 것으로 예상합니다. 예제 명령은 --privileged, --restart always, TZ 환경 변수, 바인드 마운트를 사용합니다. 구성 마운트는 여전히 앱이 JSON 파일 변경에 반응할 수 있게 합니다. 통합은 주로 메시지 기반입니다. AMQP를 통해 접근 및 자격 증명은 amqp.host, amqp.user, amqp.passwd로 설정됩니다. amqp.declare가 true이면 리소스는 패널에 의해 선언되고, 그렇지 않으면 설정은 외부에서 이루어집니다. 패널은 amqp.command_channel(기본값 command.DesktopPanel)에서 명령을 수신합니다. 명령은 명령 식별자와 인수 객체를 가진 JSON 객체입니다. 현재 구현은 요청 전용이며 일반적인 RPC 응답 메커니즘이 없습니다. 알려진 명령에는 screenshot(스크린샷 디렉터리에 이미지 저장)과 show page가 있으며, 후자는 page 인수에 명명된 페이지로 전환하고 go_back_if_current로 탐색 스택을 팝하며 block_input으로 클릭재킹을 방지하는 것을 지원합니다. syslog 채널은 System 페이지에 중요한 syslog 메시지를 표시할 수 있습니다. 메시지는 amqp.syslog_channel에 명명된 큐에서 소비됩니다(기본값 없음, 생략하면 비활성화). 메시지는 syslog-ng의 AMQP 대상에서 와야 하며, 모든 정보는 AMQP 메시지 속성 헤더(DATE, FACILITY, HOST/HOST_FROM, MESSAGE, PRIORITY, PROGRAM)에 있고 본문은 비어 있어야 합니다. error 심각도 이상만 의미가 있습니다. syslog-ng 필터나 RabbitMQ 바인딩이 해당 심각도만 라우팅해야 합니다. README는 전용 내구성 큐(예: syslog.DesktopPanel)를 syslog-ng 토픽 교환에 바인딩하고, 큐가 외부에서 관리될 때 amqp.declare를 false로 설정할 것을 권장하며 구성 JSON 스니펫을 제공합니다. System 페이지가 활성화되지 않은 상태에서 새 메시지가 도착하면 System 탭 버튼이 crit/critical/alert/emerg/panic의 경우 빨간색으로, error/err의 경우 노란색으로 켜집니다. 페이지를 열면 알림이 지워집니다. MQTT를 통해 mqtt.presence-topic이 구성되면 프레즌스 상태가 원시 상태 텍스트로 게시됩니다. 이 프로젝트는 Streamline Icons Pack의 무료 아이콘을 사용하며 MIT 라이선스(© 2021 Stefan Haun 및 기여자)입니다. 정적 분석을 위한 CodeQL 워크플로가 포함되어 있습니다.