C.W.K.
Stream
Lesson 06 of 06 · published

창 상태 영속화

~11 min · tauri, windows, plugin, persistence

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"실행할 때마다 창을 어디 뒀는지 까먹는 데스크톱 앱은 고장 난 느낌이야 — 아무 문제 없어도."

제일 중요한 제일 작은 마감

사용자는 앱이 떠난 자리에 다시 열리길 기대해 — 같은 위치, 같은 크기. 이걸 손으로 구현하면(이동/리사이즈 listen, debounce, 디스크에 쓰기, 시작 시 읽기, 보이기 전 적용) 까다롭고 미묘하게 틀리기 쉬워. Tauri는 공식 플러그인 tauri-plugin-window-state를 내놔, 정확히 이걸 해: 각 창 geometry를 종료 시 저장하고 다음 실행에 복원, 자동으로.

등록하고 잊어

이 플러그인의 아름다움은 등록 외엔 사실상 애플리케이션 코드가 0이란 거야. Builder 체인에 더하면 창 생애주기를 알아서 후킹해. 짤 command도, 엮을 이벤트도 없어 — 열 때 복원, 나갈 때 저장이 그냥 일어나. 플러그인이 한 가지 일을 잘 해서 네가 다시 발명 안 하게 하는 정석 예시야.

세 표면 규칙 첫 맛

이 플러그인 추가는 세 곳을 건드리고, 지금 패턴을 알아채면 plugins 트랙에서 값을 해: Cargo.toml 의존성, lib.rsbuilder 등록, 그리고 (프론트엔드에 command 노출하는 플러그인엔) capabilities 권한. window-state는 대부분 자동이지만, 여전히 capabilities에 window-state:default로 나타나. Cinder가 이 플러그인을 정확히 등록해서 창이 제자리에 다시 열려 — 세 표면, 한 동작.

Code

표면 2: 빌더에 등록·rust
// lib.rs — 플러그인 등록; 복원/저장이 자동으로 일어나.
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_window_state::Builder::default().build())
        // ...다른 플러그인, command...
        .run(tauri::generate_context!())
        .expect("error while running app");
}
표면 1: Cargo 의존성·toml
# Cargo.toml — 표면 1: 의존성.
[dependencies]
tauri-plugin-window-state = "2"

External links

Exercise

앱에 tauri-plugin-window-state를 더해(의존성 + 빌더 줄). 돌리고, 창을 옮기고 리사이즈하고, 종료하고, 다시 실행해 — 떠난 자리에 정확히 다시 열리는지 확인해. 그다음 적어봐: 영속화에 '네' 코드가 몇 줄 들었어? 그 거의-0 숫자가 플러그인의 핵심이야.
Hint
Cargo.toml에 크레이트 더하고 체인에 .plugin(tauri_plugin_window_state::Builder::default().build()). 플러그인의 프론트엔드 command가 필요하면 capabilities에 window-state:default를 더하지만 — 기본 저장/복원은 등록만으로 돼.

Progress

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

댓글 0

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

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