Slint는 Rust, C++, JavaScript 또는 Python으로 작성된 임베디드, 데스크탑 및 모바일 애플리케이션을 위한 기본 사용자 인터페이스를 구축하기 위한 선언적 GUI 툴킷입니다.
Slint 라는 이름은 다음과 같은 설계 목표에서 유래되었습니다.
Slint를 사용하는 일부 프로젝트를 보려면 #MadeWithSlint를 방문하세요. Slint를 사용하고 커뮤니티에 참여해 보시기 바랍니다.
Slint는 활발하게 개발 중입니다. 각 플랫폼별 지원 현황은 다음과 같습니다.
Slint는 많은 위젯의 키보드 기반 탐색을 지원하며 사용자 인터페이스는 확장 가능합니다. 스크린 리더와 같은 보조 기술을 위한 기본 인프라가 마련되어 있습니다. 우리는 특별한 요구 사항이 있는 사용자에게 최고의 지원을 제공하려면 더 많은 노력이 필요하다는 것을 알고 있습니다.
라즈베리파이 | STM32 | RP2040 |
---|---|---|
Raspberry Pi의 Slint 비디오 | STM32의 Slint 비디오 | RP2040의 Slint 비디오 |
윈도우 | macOS | 리눅스 |
---|---|---|
프린터 데모 | 슬라이드 퍼즐 | 에너지 모니터 | 위젯 갤러리 | 날씨 데모 |
---|---|---|---|---|
예제 폴더에 더 많은 예제와 데모가 있습니다.
UI는 선언적이고 사용하기 쉽고 직관적이며 그래픽 요소, 배치, 계층 구조, 속성 바인딩 및 다양한 상태를 통한 데이터 흐름을 설명하는 강력한 방법을 제공하는 도메인 특정 언어로 정의됩니다.
다음은 필수 "Hello World"입니다.
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
자세한 내용은 Slint 언어 문서를 확인하세요.
예제 폴더에는 Slint 마크업 언어를 사용하는 방법과 지원되는 프로그래밍 언어에서 Slint 사용자 인터페이스와 상호 작용하는 방법을 보여주는 예제와 데모가 포함되어 있습니다.
docs
폴더에는 빌드 지침 및 내부 개발자 문서를 포함하여 훨씬 더 많은 정보가 포함되어 있습니다.
api
폴더에 있는 각 언어 디렉터리의 README를 참조하세요.
애플리케이션은 Rust, C++ 또는 JavaScript로 작성된 비즈니스 로직과 네이티브 코드로 컴파일되는 .slint
사용자 인터페이스 디자인 마크업으로 구성됩니다.
.slint
파일은 미리 컴파일됩니다. .slint
의 표현식은 컴파일러가 최적화할 수 있는 순수 함수입니다. 예를 들어, 컴파일러는 속성을 "인라인"하도록 선택하고 상수이거나 변경되지 않은 속성을 제거할 수 있습니다. 앞으로는 이미지와 텍스트를 사전 처리하여 저가형 장치에서 렌더링 시간을 개선할 수 있기를 바랍니다. 컴파일러는 Text
또는 Image
요소가 항상 동일한 위치에 있는 다른 Image
위에 있는지 확인할 수 있습니다. 결과적으로 두 요소 모두 미리 단일 요소로 렌더링될 수 있으므로 렌더링 시간이 단축됩니다.
컴파일러는 어휘 분석, 구문 분석, 최적화 및 최종 코드 생성의 일반적인 컴파일러 단계를 사용합니다. 대상 언어의 코드 생성을 위한 다양한 백엔드를 제공합니다. C++ 코드 생성기는 C++ 헤더 파일을 생성하고, Rust 생성기는 Rust 코드 등을 생성합니다. 동적 언어에 대한 통역사도 포함되어 있습니다.
런타임 라이브러리는 .slint
언어로 선언된 속성을 지원하는 엔진으로 구성됩니다. 요소, 항목 및 속성이 포함된 구성 요소는 메모리 할당을 줄이기 위해 단일 메모리 영역에 배치됩니다.
렌더링 백엔드 및 스타일은 컴파일 타임에 구성 가능합니다.
femtovg
렌더러는 렌더링을 위해 OpenGL ES 2.0을 사용합니다.skia
렌더러는 렌더링을 위해 Skia를 사용합니다.software
렌더러는 추가 종속성 없이 CPU를 사용합니다. 참고: Qt가 시스템에 설치되면 Qt의 QStyle을 사용하여 기본 모양의 위젯을 구현하여 qt
스타일을 사용할 수 있게 됩니다.
.slint 파일 개발에 도움이 되는 몇 가지 도구가 있습니다.
--auto-reload
인수를 사용하면 작업하는 동안 UI를 쉽게 미리 볼 수 있습니다(LSP 미리 보기를 사용할 수 없는 경우).Slint와 잘 작동하도록 선호하는 편집기를 구성하는 방법에 대한 팁은 편집기 README를 확인하세요.
원하는 경우 다음 라이선스에 따라 Slint를 사용할 수 있습니다.
웹사이트의 Slint 라이선스 옵션과 라이선스 FAQ를 참조하세요.
코드, 버그 보고서, 피드백 형식으로 여러분의 기여를 환영합니다.
별도의 FAQ를 참조하세요.
우리는 소프트웨어(API 설계, 크로스 플랫폼 소프트웨어 개발 및 사용자 인터페이스 구성 요소)에 열정을 갖고 있습니다. 우리의 목표는 Python, JavaScript, C++ 또는 Rust 개발자부터 UI/UX 디자이너에 이르기까지 모든 사람이 사용자 인터페이스를 재미있게 개발할 수 있도록 하는 것입니다. 우리는 소프트웨어가 유기적으로 성장하고 이를 오픈 소스로 유지하는 것이 이러한 성장을 유지하는 가장 좋은 방법이라고 믿습니다. 우리 팀원은 독일에 원격으로 위치해 있습니다.
일반적인 채팅이나 질문이 있으면 Github 토론에 자유롭게 참여하세요. 공개 제안이나 버그를 보고하려면 Github 문제를 사용하세요.
Mattermost 인스턴스에서 채팅을 통해 듣고 질문하실 수 있습니다.
물론 [email protected]로 이메일을 보내 개인적으로 문의하실 수도 있습니다.