본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 12:12

화면 구석에 상주하는 플로팅 AI 어시스턴트 만들기

요약

Tauri를 사용하여 화면 어디서든 호출 가능한 플로팅 AI 어시스턴트 윈도우를 구현하는 방법을 소개합니다. 글로벌 단축키 설정, 항상 위에 표시하기, Dock에 나타나지 않는 액세서리 모드 등 데스크톱 앱 개발 핵심 기술을 다룹니다.

핵심 포인트

  • Tauri를 활용한 플로팅 윈도우 및 커스텀 타이틀 바 구현
  • Cmd+Shift+H와 같은 글로벌 단축키를 통한 앱 호출 방법
  • Dock에 나타나지 않는 accessory activation policy 설정
  • 프로세스 종료 대신 윈도우를 숨기는 효율적인 종료 방식

이 내용이 유용하다면 ❤️를 눌러 다른 사람들이 찾을 수 있도록 도와주세요.

모든 테스트는 8년 된 MacBook Air에서 실행되었습니다.

HiyokoHelper는 360×440px 크기의 플로팅 윈도우 (floating window)입니다. 언제든 접근 가능하며, 작업에 방해가 되지 않습니다. Cmd+Shift+H를 누르면 어떤 앱에서든 앞으로 불러올 수 있습니다.

윈도우 설정 (Window configuration)

{
  "app": {
    "windows": [{
...
  • decorations: false — 커스텀 타이틀 바 (custom title bar)
  • alwaysOnTop: true — 모든 것 위에 떠 있음
  • activationPolicy: accessory — Dock에 나타나지 않으며, Cmd+Tab으로 전환되지 않음
  • visible: false — 실행 시 숨겨짐

어디서나 작동하는 글로벌 단축키 (Global shortcut from anywhere)

let shortcut: Shortcut = "CmdOrCtrl+Shift+H".parse()?;

app.global_shortcut().on_shortcut(shortcut, |app, _, _| {
...

VS Code, Terminal, Finder 등 어떤 앱에서도 작동합니다.

네이티브 타이틀 바 없이 드래그하기 (Draggable without native title bar)

.title-bar { -webkit-app-region: drag; }
.title-bar button { -webkit-app-region: no-drag; }

타이틀 바 영역을 드래그할 수 있습니다. 내부의 버튼들은 클릭 가능합니다.

종료 시 프로세스 종료가 아닌 숨기기 (Close hides, not quits)

#[tauri::command]
pub fn hide_window(window: tauri::Window) {
    window.hide().unwrap();
...

로그인 시 자동 실행 (Launch at login)

tauri::Builder::default()
    .plugin(tauri_plugin_autostart::init(
        MacosLauncher::LaunchAgent,
...

로그인 시 숨겨진 상태로 시작됩니다. 화면에 나타나지 않고도 Cmd+Shift+H를 누를 준비가 되어 있습니다.

요약 (TL;DR): Tauri를 이용한 플로팅 어시스턴트 윈도우: decorations: false + alwaysOnTop: true + activationPolicy: accessory (Dock/Cmd+Tab 제외). 글로벌 단축키로 어떤 앱에서든 가시성을 전환합니다. 네이티브 타이틀 바 없이 드래그하려면 -webkit-app-region: drag를 사용합니다. 닫기 버튼은 프로세스를 종료하는 대신 윈도우를 숨깁니다.

HiyokoHelper (OSS) | X → @hiyoyok

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0