[Rust] Slint: ์‹œ์ž‘ํ•˜๊ธฐ

Slint๋Š” Rust๋กœ ๊ตฌํ˜„๋œ GUI ๊ฐœ๋ฐœ ํˆดํ‚ท ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.
์ตœ๊ทผ์— 1.0 ๋ฒ„์ „์ด ๋ฐฐํฌ๋˜์—ˆ๋‹ค.

์œˆ๋„์šฐ์ฆˆ, Mac, Linux ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋ฉฐ ์›น์–ด์…ˆ๋ธ”๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์›นํŽ˜์ด์ง€๋„ ์ง€์›ํ•œ๋‹ค.
๋ญ”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ž„๋ฒ ๋””๋“œ๋„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ฐœ๋ฐœ ์–ธ์–ด๋Š” Rust์™€ C++์„ ์ง€์›ํ•˜๊ณ , Javascript๋Š” ์‹คํ—˜ ๋‹จ๊ณ„์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐ€์žฅ ์ž˜ ์ง€์›๋˜๋Š”๊ฑด Rust๋‹ค.

๊ตฌ์กฐ๋Š” ๋ญ ์ด๋Ÿฐ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค.

slint๋ผ๋Š” ์ž์ฒด ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ UI ๊ตฌ์กฐ ๋“ฑ์„ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค๋Š”๊ฒŒ ํŠน์ง•์ด๋‹ค.
๊ทธ๋ž˜์„œ Rust๋ฅผ ์“ฐ๋”๋ผ๋„ ๋‚ด๋ถ€์— slint ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ์‘์šฉ์ด ๋œ๋‹ค.




๋ผ์ด์„ผ์Šค

์™„์ „ํ•œ ์ž์œ  ์˜คํ”ˆ์†Œ์Šค๋Š” ์•„๋‹ˆ๋‹ค.

๊ณต์งœ๋กœ ์“ฐ๊ณ ์‹ถ๋‹ค๋ฉด GPLv3 ๋ผ์ด์„ผ์Šค์— ๊ธฐ๋ฐ˜ํ•ด์„œ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์จ์•ผํ•˜๊ณ ,

์ƒ์—…์šฉ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์œ ๋ฃŒ ๋ผ์ด์„ผ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
์›”๋ณ„ 5์œ ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.
https://slint.dev/pricing

๋น„์šฉ์„ ๋‚ด๊ณ  ์‹ถ์ง€ ์•Š๊ณ , ์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€๋„ ์•Š๋‹ค๋ฉด ๋กœ์—ดํ‹ฐ-free ๋ผ์ด์„ผ์Šค๋ผ๋Š” ๊ฒƒ์„ ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
๋ช‡๊ฐ€์ง€ ๊ท€์ฐฎ์€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.
ํ”„๋กœ๊ทธ๋žจ ๋ฐฐํฌ ์‚ฌ์ดํŠธ์— slint ์จ์„œ ๋งŒ๋“ ๊ฑฐ๋ผ๊ณ  ์•„์ด์ฝ˜ ๋‹ฌ์•„์ฃผ๊ณ  ๋ญ ๊ทธ๋Ÿฐ๊ฑธ ํ•˜๋ฉด ๋œ๋‹ค.

์•„๋ž˜ ๋งํฌ์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค ์ ํ˜€์žˆ๋‹ค.
https://github.com/slint-ui/slint/blob/master/FAQ.md#licensing




์„ค์น˜

๊ธฐ๋ณธ ์„ค์ •์€ ๊ฐ„๋‹จํ•˜๋‹ค. ์ข…์†์„ฑ ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

cargo add slint@1.1.0




Hello World ์ž‘์„ฑํ•˜๊ธฐ

๊ฐ„๋‹จํ•˜๊ฒŒ ํ…์ŠคํŠธ ํ•˜๋‚˜ ๋“ค์–ด์žˆ๋Š” ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ๋‹ค.
slint๋Š” ๋งคํฌ๋กœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œˆ๋„์šฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•œ๋‹ค.

์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ ์ฝ”๋“œ๋‹ค.

fn main() {
    let window = MainWindow::new().unwrap();

    window.run().unwrap()
}

slint::slint! {
    export component MainWindow inherits Window {
        height: 200px;
        width: 300px;

        Text {
            text: "hello world";
            color: green;
        }
    }
}

์ €๋Œ€๋กœ ์‹คํ–‰ํ•˜๋ฉด

์ด๋Ÿฐ์‹์œผ๋กœ ์ฐฝ์ด ๋œฐ ๊ฒƒ์ด๋‹ค.





Visual Studio Code ํ™•์žฅ

Rust์˜ ๋งคํฌ๋กœ์—๋Š” ๊ณ ์งˆ์ ์ธ ๋‹จ์ ์ด ์žˆ๋‹ค. ์ž๋™์™„์„ฑ์ด๋‚˜ ์‹ ํƒ์Šค ํ•˜์ด๋ผ์ดํŒ…์ด ๊ฑฐ์˜ ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

Slint์—์„œ๋Š” ํ™•์žฅ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

๊น”์•„์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด


๋ถˆํŽธํ•จ์ด ์ข€ ํ•ด์†Œ๋œ๋‹ค.




Slint ์–ธ์–ด

์ž์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” slint ์–ธ์–ด์— ๋Œ€ํ•ด์„œ๋„ ์ข€ ์ตํžˆ๊ธด ํ•ด์•ผ ํ•œ๋‹ค.

์ „์šฉ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.
https://slint.dev/releases/1.1.0/docs/slint/



์ฐธ์กฐ
https://github.com/slint-ui/slint
https://slint.dev/blog/announcing-slint-1.0
https://slint.dev/releases/1.1.0/docs/tutorial/rust/getting_started