프로젝트 소개

Freya는 Rust를 위한 크로스 플랫폼, 네이티브, 선언적 GUI 라이브러리입니다. 웹 기술에 의존하지 않고 컴포넌트 기반 UI 모델을 원하는 Rust 데스크톱 애플리케이션 개발자를 대상으로 합니다. 핵심 모델: 컴포넌트는 의존하는 상태가 변경되면 다시 렌더링되는 재사용 가능한 UI 요소입니다. 컴포넌트는 내부 상태를 보유하거나 공유 상태를 구독할 수 있으며, Component 트레이트를 구현하는 모든 타입이 컴포넌트로 동작할 수 있습니다. 루트 앱 컴포넌트는 일반 함수일 수 있습니다. 내장 예시로는 Button과 Switch가 있습니다. 기본 제공 컴포넌트는 Button, Switch, Slider 같은 단순 컨트롤부터 VirtualScrollView, Calendar, ColorPicker 같은 더 복잡한 것까지 다양합니다. examples 폴더에서 component_ 접두사가 붙은 예제 파일들이 이를 보여줍니다. README에 설명된 기능 영역: - 애니메이션: 색상, 크기, 위치에 대한 전환으로, 타이밍, 이징, 시퀀스를 제어할 수 있습니다. - 리치 텍스트 편집: 커서 관리, 선택, 키보드 단축키, 사용자 정의 서식, 가상화. - 코드 편집기: 텍스트에는 Rope를, 구문 강조에는 tree-sitter를 사용하는 상태 비의존적 편집기로, 문법과 하이라이트 쿼리를 직접 제공합니다. code-editor 기능으로 활성화됩니다. - MarkdownViewer 컴포넌트를 통한 Markdown 렌더링(markdown 기능). - Routable derive, 레이아웃, 링크, 라우터 컨텍스트를 통한 라우팅 및 내비게이션(router 기능). - freya-radio를 통한 전역 상태 관리로, 컴포넌트가 채널을 구독하고 관련 데이터가 변경될 때만 업데이트를 받는 채널 기반 시스템입니다(radio 기능). - 아이콘 라이브러리 통합으로, 현재 Lucide를 지원합니다. - freya-testing을 통한 헤드리스 테스트로, 상호작용을 시뮬레이션하고 UI 상태를 파일로 렌더링할 수 있습니다. Freya 자체에서 내장 컴포넌트 테스트에 사용됩니다. - Plotters 라이브러리를 통한 차트 및 플로팅(ploters 기능). - Fluent 현지화 시스템을 사용한 국제화로, 번역, 복수형 처리, 로케일 전환을 지원합니다(i18n 기능). - 리플 효과 같은 Material Design에서 영감을 받은 스타일 수정자(material-design 기능). - 네이티브 UI와 함께 웹 콘텐츠를 임베드하기 위한 WebView 통합(webview 기능). - 통합 터미널이나 SSH 클라이언트를 위한 PTY 지원 터미널 에뮬레이션(terminal-pty 기능). - 컴포넌트 트리를 실시간으로 검사하는 개발자 도구(devtools 기능). 사용법: 최신 안정 릴리스는 freya = "0.4"로 지정되며, 0.5.0-rc.7 사전 릴리스와 main 브랜치 옵션이 있습니다. 저장소는 git 서브모듈을 사용하므로 클론 시 --recurse-submodules가 필요하거나 나중에 git submodule update --init --recursive를 실행해야 합니다. 예제는 cargo run --example counter로 실행할 수 있습니다. 개발 환경 설정 가이드는 문서에서 링크됩니다. README는 Windows에서 windows-gnu 사용 시 컴파일 문제가 발생할 수 있다고 언급합니다. 이 프로젝트는 웹사이트, docs.rs 문서, Discord 서버, 기여 가이드라인, 후원 페이지를 링크하며, Dioxus, rust-skia 및 기타 기여자들에게 감사를 표합니다.