본문 바로가기
C.W.K.
Stream
Lesson 02 of 06 · published

창 설정 & label

~11 min · tauri, windows, labels, config

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"label은 절대 안 바뀌는 창의 이름이야. title은 언제든 갈아입는 옷이고."

설정에 미리 적어두는 창

tauri.conf.jsonapp.windows 배열은 실행하는 순간부터 존재할 창을 적어두는 자리야. 항목마다 처음 title이랑 크기랑 동작을 정하고 — 무엇보다 label을 정해. 기본 스캐폴드는 label이 main인 창 하나를 줘. 여기 창을 더 적어도 되고(스플래시나 늘 떠 있는 툴바 같은 거) Rust는 한 줄도 안 써도 돼. 걔들은 앱이랑 같이 열려.

label은 신원, title은 보이는 이름

둘을 헷갈리지 마. label은 안정적이고 겹치지 않는 문자열 id야 — main, settings, splash — 절대 안 바뀌고, 모든 API가 창을 찾을 때 쓰는 게 이거야. get_webview_window("settings"), emit_to("settings", …) 전부. title은 타이틀바에 뜨는, 사람이 읽는 글자야. 돌아가는 중에 바뀔 수도 있고 겹칠 수도 있어. 창은 언제나 label로 찾아. title로 찾는 코드는 언젠가 터질 버그야.

설정이냐 코드냐

항상 있는 창(메인 창)은 설정에 적어. 사용자 동작이나 데이터에 따라 생기는 창(파일을 열 때마다 뜨는 문서 창, 부를 때만 나오는 설정 창)은 돌아가는 중에 만들어. 흔한 방식은 main만 설정에 적고 나머지는 Rust에서 만드는 거야. 설정에 창을 적어두되 숨긴 채로 시작했다가 준비되면 show()하는 것도 돼 — 스플래시 띄웠다가 메인으로 넘어가는 흐름에 편해.

Code

설정에 창이랑 label 적어두기·json
// tauri.conf.json — 정적으로 선언된 창 둘, 각자 label 있음.
{
  "app": {
    "windows": [
      { "label": "main", "title": "My App", "width": 1100, "height": 720 },
      { "label": "splash", "url": "splash.html", "width": 400, "height": 300,
        "decorations": false, "visible": true }
    ]
  }
}
코드에서 창에 닿는 길은 label·rust
use tauri::Manager;

// label로 어떤 창이든 찾기 — setup, command, 어디서나.
fn close_splash_show_main(app: &tauri::AppHandle) {
    if let Some(splash) = app.get_webview_window("splash") {
        let _ = splash.close();
    }
    if let Some(main) = app.get_webview_window("main") {
        let _ = main.show();
        let _ = main.set_focus();
    }
}

External links

Exercise

메인 창에 tauri.conf.json에서 label을 명시적으로 줘(없으면). 그다음 label은 그대로 둔 채 창 title만 돌아가는 중에 바꾸는 command를 짜. title은 바뀌는데 get_webview_window(label)은 여전히 잘 찾는지 확인해. label이랑 title이 갈라지는 지점을 직접 만져본 거야.
Hint
win.set_title("new title")은 보이는 이름을 바꿔. get_webview_window에 넘기는 label은 절대 안 바뀌고. 그 갈라짐이 핵심 전부야 — 신원이냐, 겉모습이냐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.