프로젝트 소개
Sophia는 트랜잭션 기반 엔진(Engine)을 중심으로 구축된 실험적 디스플레이 서버이자 컴포저로, 네이티브 X11 프론트엔드를 제공합니다. 핵심 아이디어는 창의 기하학(geometry)과 픽셀이 단일 시각적 트랜잭션으로 함께 커밋되어, 클라이언트가 멈추더라도 대체 준비가 될 때까지 마지막 커밋 상태가 화면에 유지된다는 것입니다.
이 프로젝트는 유닉스 스타일의 책임 분리를 따릅니다. 엔진은 물리적 입력, 씬 그래프, 프레임 스케줄링, 시각적 커밋, 렌더링 및 디스플레이 출력을 담당합니다. X11 프론트엔드(sophia-x-authority에 Rust로 작성됨)는 X11 연결을 수락하고, 리소스를 관리하며, 프로토콜 규칙을 적용하고, 클라이언트 상태를 엔진 트랜잭션으로 변환합니다. 창 관리, 셸 UI 및 애플리케이션 간 전송은 버전화된 프로토콜을 통해 통신하는 별도의 프로세스에서 처리됩니다.
주요 구성 요소:
- Sophia 엔진: 입력, 씬 그래프, 히트 테스트, 손상 추적, 프레임 스케줄링, 원자적 시각적 커밋 및 스캔아웃을 위한 컴포저 권한.
- Sophia X 서버 프론트엔드: X11 리소스, 선택(selections), 그래브(grabs) 및 프로토콜 검사; 네임스페이스 검사된 표면 트랜잭션을 생성.
- Sophia WM: sophia_wm_v1을 통해 불투명한 레이아웃 노드와 표면 핸들을 사용하여 레이아웃과 포커스를 제안하며, XID, 제목, PID 또는 클립보드 내용에 접근할 수 없습니다. Hagia는 참조 창 관리자입니다.
- Sophia 셸: sophia_shell_v1을 통해 패널, 런처 및 스위처를 제공하고, 화면 가장자리를 따라 공간을 요청하며, 브로커를 통해 정제된 메타데이터를 수신합니다. Narthex는 디스크립터 셸 참조 구현입니다.
- Sophia 포털: 네임스페이스 간 클립보드 공유, 드래그 앤 드롭 및 화면 캡처를 중개하며, 각 특정 수신자에 대한 권한 부여가 필요합니다.
네임스페이스 격리는 핵심 설계 포인트입니다. 신뢰할 수 있는 애플리케이션은 네임스페이스를 공유하고 기존 X11 객체 모델을 사용할 수 있는 반면, 격리가 필요한 애플리케이션은 별도의 네임스페이스에서 실행되어 교차 네임스페이스 리소스 조회가 실패로 종료됩니다. 포털은 일반적인 접근을 열지 않고 특정 전송만 승인합니다.
문서에는 Sophia에서 창 관리자, 셸 또는 데스크톱 환경을 구축하는 가이드, 아키텍처·프로토콜·구성·보안 사양 색인, 그리고 조사 및 설계 결정에 대한 개발 노트가 포함됩니다. 현재 작업은 todo.md에서 추적됩니다.
상태: Sophia는 연구 프로토타입입니다. X11은 현재 애플리케이션 프로토콜이며 Rust 프론트엔드는 그 하위 집합을 구현합니다. 애플리케이션 호환성과 종단 간 검증은 아직 진행 중입니다. Wayland를 포함한 다른 프로토콜 프론트엔드는 향후 작업입니다. 이 프로젝트는 BSD 3-Clause 라이선스로 배포됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.