Slint adalah perangkat GUI deklaratif untuk membangun antarmuka pengguna asli untuk aplikasi tertanam, desktop, dan seluler yang ditulis dalam Rust, C++, JavaScript, atau Python.
Nama Slint berasal dari tujuan desain kami:
Kunjungi #MadeWithSlint untuk melihat beberapa proyek yang menggunakan Slint. Kami mengundang Anda untuk menggunakan Slint dan menjadi bagian dari komunitasnya.
Slint sedang dalam pengembangan aktif. Status dukungan untuk setiap platform adalah sebagai berikut:
Slint mendukung navigasi berbasis keyboard pada banyak widget, dan antarmuka pengguna dapat diskalakan. Infrastruktur dasar untuk teknologi bantu seperti pembaca layar sudah tersedia. Kami menyadari bahwa diperlukan lebih banyak pekerjaan untuk mendapatkan dukungan terbaik di kelasnya bagi pengguna berkebutuhan khusus.
RaspberryPi | STM32 | RP2040 |
---|---|---|
Video Slint di Raspberry Pi | Video Slint di STM32 | Video Slint di RP2040 |
jendela | macOS | Linux |
---|---|---|
Demo Pencetak | Teka-teki Geser | Pemantau Energi | Galeri Widget | Demo cuaca |
---|---|---|---|---|
Contoh dan demo lainnya ada di folder contoh
UI didefinisikan dalam Bahasa Khusus Domain yang bersifat deklaratif, mudah digunakan, intuitif, dan menyediakan cara yang ampuh untuk mendeskripsikan elemen grafis, penempatannya, hierarkinya, pengikatan properti, dan aliran data melalui berbagai status.
Inilah "Halo Dunia" yang wajib:
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
Untuk lebih jelasnya, lihat Dokumentasi Bahasa Slint.
Folder contoh berisi contoh dan demo, yang menunjukkan cara menggunakan bahasa markup Slint dan cara berinteraksi dengan antarmuka pengguna Slint dari bahasa pemrograman yang didukung.
Folder docs
berisi lebih banyak informasi, termasuk instruksi pembuatan, dan dokumen pengembang internal.
Lihat README setiap direktori bahasa di folder api
:
Aplikasi terdiri dari logika bisnis yang ditulis dalam Rust, C++, atau JavaScript dan markup desain antarmuka pengguna .slint
, yang dikompilasi ke kode asli.
File .slint
dikompilasi terlebih dahulu. Ekspresi di .slint
adalah fungsi murni yang dapat dioptimalkan oleh kompiler. Misalnya, kompiler dapat memilih untuk "menyebarkan" properti dan menghapus properti yang konstan atau tidak berubah. Di masa depan, kami berharap dapat meningkatkan waktu rendering pada perangkat kelas bawah dengan melakukan pra-pemrosesan gambar dan teks. Kompiler dapat menentukan bahwa elemen Text
atau Image
selalu berada di atas Image
lain di lokasi yang sama. Akibatnya kedua elemen dapat dirender terlebih dahulu menjadi satu elemen, sehingga mengurangi waktu rendering.
Kompiler menggunakan fase kompiler khas yaitu lexing, parsing, optimasi, dan akhirnya pembuatan kode. Ini menyediakan back-end yang berbeda untuk pembuatan kode dalam bahasa target. Generator kode C++ menghasilkan file header C++, generator Rust menghasilkan kode Rust, dan seterusnya. Seorang juru bahasa untuk bahasa dinamis juga disertakan.
Pustaka runtime terdiri dari mesin yang mendukung properti yang dideklarasikan dalam bahasa .slint
. Komponen dengan elemen, item, dan propertinya diletakkan dalam satu wilayah memori, untuk mengurangi alokasi memori.
Merender backend dan gaya dapat dikonfigurasi pada waktu kompilasi:
femtovg
menggunakan OpenGL ES 2.0 untuk rendering.skia
menggunakan Skia untuk rendering.software
menggunakan CPU tanpa ketergantungan tambahan. CATATAN: Ketika Qt diinstal pada sistem, gaya qt
akan tersedia, menggunakan QStyle Qt untuk mendapatkan widget yang tampak asli.
Kami memiliki beberapa alat untuk membantu pengembangan file .slint:
--auto-reload
memudahkan untuk melihat pratinjau UI Anda saat Anda mengerjakannya (saat menggunakan pratinjau LSP tidak memungkinkan).Silakan periksa README Editor kami untuk mendapatkan tip tentang cara mengonfigurasi editor favorit Anda agar berfungsi dengan baik dengan Slint.
Anda dapat menggunakan Slint di bawah salah satu lisensi berikut, sesuai pilihan Anda:
Lihat opsi lisensi Slint di situs web dan FAQ Lisensi.
Kami menyambut kontribusi Anda: dalam bentuk kode, laporan bug, atau masukan.
Silakan lihat FAQ kami yang terpisah.
Kami tertarik pada perangkat lunak - desain API, pengembangan perangkat lunak lintas platform, dan komponen antarmuka pengguna. Tujuan kami adalah membuat pengembangan antarmuka pengguna menjadi menyenangkan bagi semua orang: mulai dari pengembang Python, JavaScript, C++, atau Rust hingga desainer UI/UX. Kami percaya bahwa perangkat lunak tumbuh secara organik dan menjadikannya open source adalah cara terbaik untuk mempertahankan pertumbuhan tersebut. Anggota tim kami berlokasi jauh di Jerman.
Jangan ragu untuk bergabung dalam diskusi Github untuk obrolan umum atau pertanyaan. Gunakan masalah Github untuk melaporkan saran atau bug publik.
Kami mengobrol di tempat paling penting di mana Anda dipersilakan untuk mendengarkan atau mengajukan pertanyaan.
Anda tentunya juga dapat menghubungi kami secara pribadi melalui email ke [email protected].