프로젝트 소개

hana(花)는 모듈성, 유연성, 편안한 구성을 중심으로 만들어진 Zig로 작성된 초기 개발 단계의 X11 창 관리자입니다. 동적 타일링과 플로팅 창 패러다임을 모두 지원하며, WM에 통합된 자체 선택적 바를 제공합니다. 핵심 외의 기능은 엄격히 요구되지 않습니다. 하위 시스템과 그 모듈은 소스에서 삭제하고 프로젝트를 다시 컴파일하여 다른 바이너리로 만들 수 있습니다. 모듈성이 명시된 최우선 순위입니다. 선택적 로직은 자체 파일에 존재하며, 핵심은 열린 계약(Surfaces, WindowModule, Segment, Layout)과 빌드 생성 레지스트리를 통해 하위 시스템의 존재 여부에 적응하므로, 핵심은 이름으로 선택적 모듈을 가져오지 않습니다. 모듈을 삭제하면 스텁을 남기는 대신 배열이 짧아집니다. dev/plugin-template/ 아래의 드롭인 템플릿은 새로운 타일링 레이아웃, 창 하위 시스템, 바 세그먼트를 다루며, zig build check에 의해 계약에 대해 컴파일됩니다. 창 관리 기능에는 타일링 레이아웃(master-stack, monocle, grid, fibonacci, scroll, leaf, 일부는 변형 포함), 창별 타일링/플로팅 토글 및 플로팅 규칙, 전체 화면 및 최소화, 태깅 및 고정이 있는 작업 공간, 프로그램별 및 작업 공간별 창 규칙, 스냅이 있는 드래그 앤 드롭 배치가 포함됩니다. 바는 작업 공간, 제목, 레이아웃 표시기, 시계, 시스템 상태, 볼륨/밝기 슬라이더와 같은 위젯과 제목 캐러셀 및 vim 모달 모션이 있는 인라인 명령 프롬프트를 제공합니다. 구성은 핫 리로딩을 포함한 TOML을 사용하며, 기존 X 세션을 보존하는 바이너리 핫 리로드도 포함됩니다. 구성은 자동으로 결합되는 여러 파일로 분할될 수 있으며, 기능적 구성과 config/themes/ 아래의 교체 가능한 테마가 기본 분할입니다. 바인딩은 glob 확장, 범위 키, 다중 작업 배열, 마우스 바인딩, 자리 표시자 대체를 지원합니다. 스케일링은 DPI를 인식합니다. 세션 통합은 EWMH/ICCCM 협력, 재시작 간 창 지속성, 깨끗한 재실행, SIGUSR2 시 충돌 백트레이스 덤프, RandR을 통한 모니터 새로 고침 빈도 감지를 다룹니다. 밝기 제어는 udev 규칙과 video 그룹 멤버십이 구성된 경우 sysfs를 통해 쓰고, 그렇지 않으면 제한된 brightnessctl 하위 프로세스로 대체합니다. 빌드 요구 사항은 Zig 0.16.0, X 서버, randr/XKB 확장이 있는 libxcb, xcb-util-cursor, xcb-util-keysyms, xkbcommon 및 xkbcommon-x11, 그리고 cairo와 pango/pangocairo입니다. 이들은 무조건 링크되므로 바를 제거하더라도 개발 헤더가 필요합니다. 설치는 기본적으로 zig build이며, Ubuntu/Debian, Arch, Fedora에 대한 배포판 패키지 명령이 제공됩니다. 개발 도구에는 레이어 검사, 각 모듈을 격리하여 빌드하는 모듈성 매트릭스, 선택적 지연 벤치마크, dev/harness/ 아래의 골든 스냅샷이 있는 종단 간 X 시나리오, src/test/ 아래의 단위 테스트가 포함됩니다. README는 프로젝트가 초기 단계에 있으며, 안정적인 main 브랜치가 계획되고 dev에서 최첨단 작업이 이루어지고 있다고 언급합니다. 로드맵에는 외부 바 지원, 반전된 비율 표기, 더 세밀한 규칙 기반 창 속성, 모니터별 스케일링 다듬기가 아직 출시되지 않은 것으로 나열되어 있습니다.