QuickText

[English](../../README.md) · [简体中文](../../README.zh.md) · [繁體中文](README.zh-Hant.md) · [日本語](README.ja.md) · **한국어** · [Español](README.es.md) · [Português](README.pt.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Italiano](README.it.md) · [Русский](README.ru.md) · [Tiếng Việt](README.vi.md) · [ไทย](README.th.md) · [Bahasa Indonesia](README.id.md) · [हिन्दी](README.hi.md) · [বাংলা](README.bn.md) · [العربية](README.ar.md) · [Türkçe](README.tr.md) # QuickText > Windows 트레이 상주 스니펫 관리자 겸 텍스트 확장기. ![어떤 창에서든 패널을 불러 몇 글자만 입력하면 스니펫이 커서 위치에 들어갑니다](../images/quicktext-demo.webp) **같은 내용을 두 번 입력하지 마세요.** QuickText는 Windows 트레이에 상주합니다. 자주 쓰는 텍스트 — 이메일, 주소, 서명, 템플릿, 정형 답변, 이미지 — 를 한 번만 저장해 두면, **어떤 입력창에서든** 몇 번의 키 입력이나 약어만으로 커서 위치에 바로 삽입됩니다. 여러 줄, 특수 문자, 이모지까지 한 글자도 빠짐없이 그대로 보존됩니다. > 재사용할 텍스트를 몇 번의 키 입력만으로 — 커서 위치에 곧바로 삽입. - WPF / .NET 10 기반, 단일 파일 포터블 exe, **계정 불필요, 기본값 오프라인** — 선택적 "업데이트 확인"만 GitHub에 연결합니다. - 데이터는 여러분의 폴더에 저장되는 **로컬 JSON** 입니다 — Dropbox / OneDrive / NAS에 넣어 동기화하세요. - 다크 / 라이트 테마(Windows 설정 따르기 가능), **18개 UI 언어**(아랍어의 오른쪽에서 왼쪽 미러링 포함), 설정은 즉시 적용됩니다. **[⬇ 최신 버전 내려받기](https://github.com/rockbenben/QuickText/releases/latest)** —— Windows x64, 단일 파일 포터블. 코드 서명이 없어 처음 실행할 때 SmartScreen이 경고합니다: **추가 정보 → 실행**을 클릭하세요. - `QuickText--win-x64.zip` — .NET 런타임이 포함되어 있어 사전 준비 없이 Windows 10/11 x64에서 바로 실행됩니다. 잘 모르겠으면 이것을 받으세요: 인트라넷·오프라인 PC, USB에 담아 들고 다닐 때도 좋습니다. - `QuickText--win-x64-needs-dotnet10.zip` — [.NET 10 데스크톱 런타임](https://dotnet.microsoft.com/download/dotnet/10.0)이 설치되어 있어야 합니다. 인터넷이 되는 내 PC용: 한 번만 설치해 두면 이후 업데이트는 매번 아주 작은 파일만 받으면 됩니다. - `QuickText.exe` — 같은 빌드를 zip 없이 그대로 올린 것입니다. 클릭해서 바로 실행하거나, 기존 파일에 덮어써서 업데이트하세요. 기능과 데이터는 완전히 동일하며, 차이는 런타임을 포함하느냐뿐입니다. --- ## 어디에 쓰나요 Windows에서 **같은 내용을 반복해서 입력하는 곳이라면 어디든**. 트레이에 상주하며 모든 입력창(채팅 창, 브라우저 폼, 편집기, 메일 클라이언트 — 특정 앱에 묶이지 않음)에서 동작합니다. **스니펫 관리자와 텍스트 확장기를 하나로** 합친 도구이며, 여기에 병음 검색, 변수 템플릿, 이미지 기능까지 더해집니다. | 대상 | 저장하는 내용 | | ------------------------ | -------------------------------------------------------------------------------- | | **고객 지원 / 이커머스** | 정형 답변, 표준 응대, 프로모션 문구, QR 코드나 상품 사진 | | **영업 / 비즈니스** | 이메일 템플릿, 서두 인사, 견적, 마무리 인사 | | **개발자 / 운영** | 명령어, 설정, JSON, 상용구(`{...}`는 그대로 출력되며 절대 해석되지 않음) | | **사무 / 서식 작성** | 이메일, 주소, 전화번호, ID 번호, 회의록 템플릿(입력을 요청하고 마지막 값을 기억) | | **인사 / 총무 / 법무** | 온보딩 안내, 표준 공지, 면책 문구 — 로컬, 오프라인, 민감한 내용에 적합 | > **민감한 내용을 저장하기 전에.** 스니펫은 **평문 JSON**으로 저장되며 의도적으로 암호화하지 않습니다 — 직접 읽고, diff 하고, 편집할 수 있도록 하기 위해서입니다. 본인만 쓰는 컴퓨터에서 템플릿과 상용구를 다루는 용도라면 괜찮습니다. 다만 여기에 넣은 신분증 번호나 비밀번호는 그 파일을 읽을 수 있는 모든 것(내 계정으로 실행되는 다른 프로그램, 폴더를 Dropbox / OneDrive에 두었다면 동기화 서비스)이 읽을 수 있습니다. 진짜 비밀은 비밀번호 관리자에 맡기고, QuickText에는 「바탕화면에 있어도 괜찮은」 텍스트만 두세요. ## 30초 만에 살펴보기 **입력할 수 있는 어떤 곳에서든** — 예를 들어 채팅창에 이메일 주소를 넣어야 한다고 해봅시다. 1. **호출** — `Ctrl+Shift+8`을 누르면 현재 활성 창 위에 패널이 나타납니다. 2. **검색** — 몇 글자를 입력하면 일치 항목이 강조 표시됩니다. 이름, 병음(전체 + 초성), 약어, 본문을 모두 대상으로 검색합니다. 3. **Enter** — 이메일이 **커서가 있던 바로 그 자리**에 붙여넣어집니다. 끝. > 아무것도 입력하지 않으면 카테고리별로 둘러볼 수 있으며, `Recent` / `Favorites`가 상단에 고정됩니다. 가장 많이 쓰는 항목은 자동으로 **위로 떠오릅니다**. > `↑↓` 이동 · `←→` 카테고리 전환 · `Alt+1–9` 빠른 선택 · 더블클릭으로 전송 · `Esc`로 닫기. ## 세 가지 사용 방법 — 상황에 맞게 고르세요 같은 라이브러리를 세 가지 방식으로 꺼내 쓸 수 있으며, 자유롭게 섞어 사용할 수 있습니다. | 방식 | 실행 방법 | 적합한 경우 | | ------------------ | ------------------------------------------------------- | -------------------------------------------------- | | 🔍 **패널 검색** | `Ctrl+Shift+8` → 입력 → Enter | 스니펫이 많고, 가끔 쓰고, 둘러보며 고를 때 | | ⌨️ **인라인 약어** | `;sig`를 입력한 뒤 Space / Tab / Enter | 자주 쓰는 고정 문구, 패널이 필요 없을 때 | | 🧩 **변수 템플릿** | 위 두 방법 중 하나로 `{variables}`가 있는 스니펫을 꺼냄 | 이메일 / 서식: 하나의 템플릿에서 몇 단어만 바꿀 때 | - **이미지도 가능**: 클립보드나 파일에서 추가하면 전송 시 이미지로 붙여넣어집니다. 이미지에도 약어를 지정할 수 있어, 약어만 입력하면 그림이 나옵니다(QR 코드, 로고 서명 등). - **스니펫별 출력**: 채팅 문구는 붙여넣기 후 자동 전송되고, 코드 스니펫은 절대 자동 전송되지 않아 서로 방해하지 않습니다. 약어와 변수에 대한 자세한 내용은 아래 **자세히 보기**의 **자리표시자** 및 **약어** 섹션에 있습니다. --- **자세히 보기** ## 설치 없이 바로 실행 **`QuickText.exe`**를 더블클릭하세요. **시스템 트레이**에 상주합니다(작업 표시줄 버튼 없음). **첫 실행** 시: - 여러분의 **UI 언어**로 된 작은 **시작용 라이브러리**(카테고리 두 개)를 넣어 두어 바로 사용해 볼 수 있게 하고, - 호출 단축키를 알려주는 풍선 알림을 표시합니다 — 기본값 **`Ctrl+Shift+8`**. > 패널 오른쪽 위 아이콘: **+ 새로 만들기** · **관리자**(편집기 열기) · **설정** · **📌 고정**(전송 후에도 패널을 열어 두어 연속으로 여러 개 전송). 트레이로 돌아가지 않고 관리자 / 설정으로 바로 이동할 수 있습니다. ## 텍스트 추가 / 편집 ![관리자: 왼쪽 분류, 가운데 스니펫, 오른쪽 편집기](../images/quicktext-manager.webp) - **트레이 → 관리자 열기** — 전체 편집기입니다. 왼쪽에 카테고리, 오른쪽에 스니펫, 아래에 편집기가 있습니다. 카테고리 추가 / 이름 변경 / 삭제(**7가지 색상** 태그 포함), 스니펫 편집(이름, 약어, 본문, 이미지). 드래그로 순서를 바꾸거나 카테고리 간 이동, `Ctrl+Z`로 삭제 취소. - **트레이 → 클립보드에서 새로 만들기** — 현재 클립보드 내용으로 새 스니펫을 만들고 관리자에서 열어 마무리합니다(**저장**을 눌러야 디스크에 기록됩니다. 관리자를 닫으면 저장할지 저장하지 않을지 묻습니다). - **패널에서 만들기** — 검색창에 내용을 입력하고 `Ctrl+N`을 누르면 새 스니펫으로 저장하고(입력한 텍스트가 본문이 됩니다. `@카테고리 …`는 해당 카테고리에 넣습니다) 관리자로 이동해 마무리합니다(`Ctrl+E`는 선택한 항목을 편집). > **긴 텍스트 / 코드**: 본문 위의 `⤢` 버튼을 누르면 거의 전체 화면 크기의 편집기가 열립니다(또는 본문에서 `Ctrl+Shift+Enter`를 눌러도 됩니다). `Esc` 또는 '완료'를 누르면 편집이 끝납니다. 바뀐 내용이 있으면 저장할지 버릴지 먼저 묻습니다. "{변수} 자리표시자 사용"이 체크되어 있으면 토큰이 **종류별로 색이 다르게 표시**됩니다 — 변수는 청록색, `{date}` 같은 자동 토큰은 호박색, `{snippet:x}`는 보라색, `{cursor}`는 청록색 점선. 반면 잘못 입력된 스니펫 이름, 잘못된 날짜 형식, 닫히지 않은 중괄호에는 **빨간 물결선**이 표시되며 마우스를 올리면 이유를 볼 수 있습니다. 이 모든 것은 전송 시 **그대로** 붙여넣어지는데, 예전에는 잘못 붙여넣은 뒤에야 알 수 있었습니다. 날짜 토큰에 마우스를 올리면 계산된 값도 미리 볼 수 있습니다. 코드의 경우에는 체크박스를 꺼 두세요: 강조 표시가 완전히 비활성화되어 `{}`로 가득한 본문도 조용히 유지되고, 상태 표시줄에는 그대로 출력될 토큰 수만 표시됩니다. 또한 **Enter는 들여쓰기를 유지**하고 **`Tab`은 여러 줄 선택 전체를 들여쓰기**합니다. > > 확대된 창은 **항상 줄 번호를 표시**하며, 하단에는 **코드 형식** 선택기가 있습니다 — JSON, YAML, XML, HTML, Markdown, SQL, Python, JavaScript/TypeScript, C#, Java, PowerShell, Shell, INI까지 총 13가지 — 본문을 구문 강조하고 스니펫별로 기억됩니다. **저장되는 텍스트는 그대로 유지되며 붙여넣기 결과도 바뀌지 않습니다.** 자리표시자 강조 표시는 배경을 칠하고 구문 강조는 글자 자체를 칠하기 때문에 서로 충돌하지 않습니다: `{변수}`가 있는 JSON 본문은 구조와 변수를 동시에 보여줍니다. ## 자리표시자(하나의 템플릿, 여러 상황) · 스니펫별 선택 적용 자리표시자는 **스니펫별 스위치**입니다. 관리자 편집기에서 "**{변수} 자리표시자 사용**"을 체크하면 전송 시 아래 토큰이 치환됩니다. **체크하지 않으면(기본값) 본문이 그대로 전송되어**, 코드, 스크립트, 리터럴 `{...}`로 가득한 JSON이 잘못 해석되거나 입력을 요구받는 일이 없습니다. > 업그레이드 안내: 자리표시자는 예전에 항상 켜져 있었습니다. 업그레이드 후 첫 실행 시, 본문에 `{...}`가 포함된 **기존 스니펫**의 스위치가 자동으로 체크되어 동작이 바뀌지 않습니다. 실제로 코드인 항목은 관리자에서 체크를 해제하세요. 사용을 켜면 전송 시 다음 자리표시자가 치환됩니다. | 자리표시자 | 기능 | | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{name}` (임의의 라벨) | 붙여넣기 전에 **입력을 요청**하고, **마지막 값을 기억**해 반복 시 다시 묻지 않음 | | `{name:John}` | **기본값**이 있는 변수, 입력창에 미리 채워짐 | | `{env\|dev\|test\|prod}` | **선택지**가 있는 변수 — 입력창에 드롭다운이 표시됨(첫 번째 선택지가 기본값 역할, 자유 입력도 가능) | | `{clipboard}` | 현재 클립보드 내용을 삽입 | | `{cursor}` | 붙여넣기 후 이 위치에 커서를 남김(자동 Enter도 억제) | | `{date}` `{time}` `{datetime}` | 현재 날짜/시간을 삽입. `{date+7}`(7일 후)처럼 오프셋 지원. `{date=yyyy년 M월 d일}` / `{time=HH:mm:ss}` 같은 사용자 지정 형식도 지원하며 오프셋과 조합 가능(`{date+7=MM-dd}`). 중국어 별칭 `{日期}` / `{时间}` / `{日期时间}`도 동작 | | `{uuid}` `{random}` | 무작위 값: UUID / 6자리 숫자, 등장할 때마다 새로 생성 | | `{snippet:name}` | **다른 스니펫의 본문을 인라인 삽입**(3단계 깊이, 순환 안전) — 공용 서명을 한 곳에서 관리 | 예: 서명 `Best regards,\n{name}`(자리표시자 사용 켜짐) → 전송 시 이름을 물어봄 → 완성된 서명을 붙여넣음. ## 약어(입력하는 대로 확장, 패널 불필요) · 선택 사항 스니펫에 **약어**를 지정하면 어떤 입력창에서든 바로 확장할 수 있습니다. **트리거 접두사**는 설정에서 한 번만 지정합니다(기본값 `;`). 1. 관리자에서 **약어 자체**만 입력하세요 — 예: 서명이라면 `sig`. 접두사는 자동으로 붙으므로(다시 입력하지 마세요) 필드 앞에 현재 접두사 `;`가 표시됩니다. 2. 어떤 입력창에서든 **`;sig`**(= 접두사 + 약어)를 입력한 뒤 **Space / Tab / Enter**를 누르면 → `;sig`가 삭제되고 본문으로 확장됩니다(해당 스니펫에 자리표시자가 켜져 있으면 `{placeholder}`가 먼저 입력을 요청). 3. **잘못 입력했나요?** 확장 **직후 Backspace**를 누르면 다시 `;sig`로 되돌립니다(같은 창, 5초 이내). 세부 사항: 일치는 **대소문자를 구분하지 않으며**(`;SIG`는 CapsLock이 켜져 있어도 동작), Backspace로 오타를 고친 뒤에도 확장되고, 두 스니펫이 약어를 공유하면 관리자에 **인라인 경고**가 표시되며, 트레이 메뉴에는 원클릭 **"확장 일시 중지"** 토글이 있습니다(시연/게임용). > **접두사에 관하여:** 접두사(기본값 `;`)는 일반 입력 / 병음이 접두사 없는 약어를 잘못 발동시키지 않도록 막아줍니다. **설정 → 약어 → 트리거 접두사**에서 변경(`,`, `:` 등)하거나 **비워둘** 수 있습니다. 접두사가 붙은 약어는 스스로 경계를 구분하므로 앞 텍스트에 붙어 있어도 발동합니다(예: `thx;sig`). 접두사가 없으면 독립된 단어일 때만 발동하며(`graf`처럼 더 긴 단어의 꼬리에서는 절대 발동하지 않음), 앱별로 약어를 비활성화하거나(블랙리스트, 예: `cmd.exe; putty.exe`) 아예 끌 수도 있습니다. ## 출력 및 공통 설정 (트레이 → 설정) - **출력** — 기본값은 "활성 앱에 붙여넣기". 또는 "클립보드에만 복사"(`Ctrl+V`로 직접 붙여넣기). 선택 옵션: 붙여넣기 후 Enter 누르기, 원클릭 전송, 「클립보드 유지」(복원은 기본값이 꺼짐 — 클립보드를 늦게 읽는 앱에서는 이전 내용이 붙여넣어질 수 있습니다). **스니펫마다 이를 재정의할 수 있습니다**(관리자 → 출력: 전역 설정 따르기 / 붙여넣기 / 붙여넣기 + Enter / 복사만) — 채팅 문구는 자동 전송, 코드 스니펫은 절대 자동 전송하지 않음. - **패널 위치** — 활성 창을 따라감(기본값) / 텍스트 커서를 따라감 / 마지막 위치 기억. - **호출 방법(하나 선택)** — ① **키 조합**: 상자를 클릭하고 새 조합을 누름(일반 키는 `Ctrl`/`Alt`/`Shift`/`Win` 필요, 기능 키 **`F1`–`F24`는 단독으로 동작**). 또는 ② **모디파이어 탭**: **한 개의 모디파이어를 한 번 또는 두 번 탭**(예: 오른쪽 `Ctrl`, 오른쪽 `Shift`)해서 호출(단독 모디파이어는 일반 단축키가 될 수 없어 탭으로 감지). 탭을 선택하면 키 조합이 비활성화됩니다 — 둘은 상호 배타적이므로 어느 쪽이 활성인지 항상 명확합니다. - **캡처 단축키** — **클립보드를 새 스니펫으로 조용히 저장**하는 선택적 두 번째 조합(풍선 알림 피드백, 창 없음). - **데이터 폴더** — 동기화 드라이브를 지정하세요. **백업 내보내기 / 가져오기**(zip, 검증 후 덮어쓰기 확인). 이 컴퓨터에 매일 **자동 백업**(최신 10개 유지, 원클릭 폴더 접근). - **언어** — **18개 언어**: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Português · Français · Deutsch · Italiano · Русский · Tiếng Việt · ไทย · Bahasa Indonesia · हिन्दी · বাংলা · العربية (RTL) · Türkçe, 즉시 전환. **Windows 시작 시 실행** 선택 가능. - **테마** — 다크(기본) / 라이트 / Windows 설정 따르기. 고르는 즉시 반영되며 재시작이 필요 없습니다. - **업데이트 확인** — 기본값 꺼짐. 켜면 시작할 때 한 번 GitHub에 연결해 새 버전을 확인합니다(인터넷에 연결하는 유일한 순간). '지금 확인'으로 즉시 실행할 수 있습니다. ## 키보드 단축키 요약 | 동작 | 키 | | -------------------------------- | ----------------------------------------------- | | 패널 호출 / 닫기 | `Ctrl+Shift+8`(설정 가능) / `Esc` | | 선택 / 카테고리 전환 / 빠른 선택 | `↑↓` / `←→` / `Alt+1–9` | | 전송 | `Enter` 또는 더블클릭(원클릭 선택 가능) | | 즐겨찾기 / 즐겨찾기 해제 | `Ctrl+D` | | 패널에서 만들기 / 편집 | `Ctrl+N` / `Ctrl+E` | | 삭제 취소(관리자) | `Ctrl+Z` | | 약어: 발동 / 취소 | 약어 입력 + Space·Tab·Enter / 확장 후 Backspace | --- ## 한눈에 보는 기능 - **호출**: 전역 단축키 — **키 조합**(기능 키는 단독 키로 동작) 또는 **모디파이어 한 번/두 번 탭**(예: 오른쪽 Ctrl), **하나 선택**. 패널은 활성 창 / 텍스트 커서 / 기억된 위치를 따라감. 상단 버튼으로 **새로 만들기 / 관리자 / 설정**으로 이동. 고정해 두고 연속 전송, 드래그와 크기 조절 및 크기 기억. - **검색**: 이름 / 병음 / 초성 / 약어 / 본문, 강조 표시. **동점은 사용 빈도(frecency)로 결정**. `@category keywords`는 검색을 한 카테고리로 한정(단독 `@category`는 해당 카테고리 둘러보기). - **콘텐츠**: 일반 텍스트(여러 줄, 특수 문자, 이모지 무손실), 자리표시자(기본값 / 선택지 드롭다운 / 스니펫 중첩 / 날짜 사용자 지정 형식 / uuid / random — **스니펫별 선택 적용**), **이미지**(클립보드나 파일에서, 전송 시 이미지로 붙여넣기. **이미지에도 약어 지정 가능** — 약어를 입력하면 이미지가 나옴). - **약어**: 종결 문자로 발동, 변수 입력 요청, 원클릭 취소, Backspace 오타 교정, 대소문자 무시, 클릭으로 토큰 분리, 중복 경고, 앱별 블랙리스트, **트레이에서 원클릭 일시 중지**. - **출력**: 직접 붙여넣기 / 복사만. 선택적 자동 Enter, 클립보드 복원, 원클릭 전송. **스니펫별 출력 재정의**. 캡처 단축키(클립보드 → 한 번의 조작으로 스니펫). - **관리자**: **넉넉한 본문 편집기**(`⤢ 크게 편집`으로 전용 창을 엽니다. 저장하지 않은 변경 사항은 항상 확인합니다 — 창을 닫을 때도, 다른 항목으로 전환할 때도), **자리표시자 강조 표시**(종류별로 색이 다르게 표시되며, 존재하지 않는 스니펫 참조 / 잘못된 날짜 형식 / 닫히지 않은 중괄호는 빨간 물결선으로 표시되고 마우스를 올리면 이유가 나타남. 자리표시자가 꺼져 있으면 아무것도 강조 표시되지 않고 대신 상태 표시줄에 안내가 표시됨), **코드 친화적**(확대된 창은 항상 줄 번호를 표시하고 구문 강조를 위한 13가지 코드 형식을 제공함. Enter는 들여쓰기를 유지하고 `Tab`은 여러 줄 선택을 들여쓰기하며, 줄바꿈 없음 모드도 지원), 7가지 카테고리 색상, 드래그 순서 변경 / 이동, **다중 선택 일괄 이동 / 삭제**(Ctrl / Shift 선택 후 우클릭), 삭제 취소, **휴지통(30일 복원, 본문 미리보기)**, 중복 약어 경고, 사용 통계, 저장 피드백. - **데이터**: 로컬 JSON, 핫 리로드(외부 편집 / 동기화 자동 병합), 동기화 충돌 알림, 백업 내보내기 / 가져오기, **매일 자동 백업(10개 유지)**, Windows 시작 시 실행. - **현지화**: **18개 UI 언어**(중국어 간체 / 번체, 영어, 日本語, 한국어, Español, Français, Deutsch, Русский, العربية …), **아랍어의 오른쪽에서 왼쪽 미러링** 포함, 설정에서 실시간 전환. 다크 / 라이트 테마(Windows 설정 따르기 가능)도 즉시 전환. - **견고성**: 단일 인스턴스(두 번째 실행은 후크를 중복 설치하는 대신 검색 패널을 호출). CI는 매 푸시마다 테스트와 창 스모크 체크를 실행하고 `v*` 태그에서 두 가지 단일 파일 빌드를 게시. ## 데이터 및 동기화 데이터 폴더(기본값 `Documents\QuickText`, 설정에서 변경 가능, 동기화 드라이브 지정 가능): ```text / ├─ index.json # category order + each category's file name and color ├─ .json # the snippets in that category (Snippet[]) ├─ trash.json # soft-deleted snippets (auto-purged after 30 days) └─ images/ # image files for image snippets ``` - `Snippet`: `{ id, name, abbr, body, useVariables, outputMode, imagePath?, updatedAt }`. - **원자적 쓰기**(`*.tmp` → `File.Replace`)로 동기화 중에 절반만 쓰인 파일을 읽는 일이 없습니다. `FileSystemWatcher` 핫 리로드(병합 처리), 자기 쓰기 방지 장치 포함. - 컴퓨터 로컬 상태는 **동기화 폴더 밖에** 보관됩니다: 설정은 `%APPDATA%\QuickText\settings.json`, 사용 횟수 / 즐겨찾기는 `%APPDATA%\QuickText\usage.stats`(전송할 때마다 바뀌어 컴퓨터 간에 충돌하므로), 매일 자동 백업은 `%APPDATA%\QuickText\backups\`. - **포터블 모드**(흔적 없음 / USB): **설정 → 데이터 → 포터블 모드**에서 켜세요 — `QuickText.exe` 옆에 `QuickText.portable` 표식 파일을 만들고 **다음 재시작 시 적용**됩니다(첫 포터블 시작 시 설정과 사용 기록을 그대로 가져오므로 다시 설정할 필요 없음). 그러면 설정, 사용 기록, 백업, 기본 라이브러리는 `%APPDATA%` / Documents 대신 `\Data\` 아래에 저장되고, "Windows 시작 시 실행"은 레지스트리 대신 시작 프로그램 폴더 바로 가기를 사용합니다 — 도구 전체가 USB 스틱에 담겨 이동하며 호스트에는 아무것도 남기지 않습니다. 앱은 쓰기 가능한 위치에 있어야 합니다(`Program Files`가 아니라 USB 스틱). **텍스트 라이브러리는 백업 내보내기 / 가져오기로 이동**합니다. Windows 시작 시 실행은 모드별로 추적되므로, 전환 후 원한다면 새 모드에서 다시 체크하세요. 위의 설치형 레이아웃을 쓰려면 이 옵션을 꺼두세요(데이터 폴더가 동기화 드라이브일 때 올바른 선택).
_(단순한 설정이 아니라 표식 파일이어야 합니다 — 이것이 `settings.json` 자체가 어디에 있을지를 결정하기 때문입니다. 스위치는 다음 시작 시에만 적용되어 현재 세션을 방해하지 않습니다.)_ ## 브랜드 에셋은 `assets/branding/`에 있습니다: `quicktext-mark.svg`(기본), `quicktext-mark-mono.svg`(단색), `quicktext.ico`(16–256, 앱 / 트레이 아이콘), `quicktext-256.png`, `quicktext-social.png`(1200×630 og:image), `quicktext-social-2x.png`(2400×1260 @2x), `brand.html`(브랜드 시트). 마크는 민트색 타일 위의 **텍스트 I-빔 커서**와 그 옆의 방금 삽입된 텍스트를 나타내는 앰버색 블록입니다 — “text▮”, 즉 커서 위치에 텍스트를 놓는다는 의미입니다. 팔레트 “terminal dusk”: 민트(앱 강조색 `#3DC2A0`) + 앰버 `#F2B457`를 청록빛 잉크 위에 올린 조합. 산세리프 워드마크에 Cascadia Code 모노를 짝지었습니다. ## 아키텍처 순수 Core(Win32 없음, 단위 테스트 가능)를 Win32/UI와 분리해 유지합니다. | 프로젝트 | 내용 | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `src/QuickText.Core` | `Models`, `Persistence`(`Store`, `UsageStore`, `JsonConfig`), `Search`(`SearchIndex`), `Abbr`(`AbbrMatcher`), `Snippets`(`Placeholders`), `Pinyin`, `Settings`, `Localization`(.resx, 18개 언어) | | `src/QuickText.App` | WPF UI(`SearchPanel` / `ManagerWindow` / `SettingsWindow` / `AppDialog` / `VariablesDialog`), `Ui/Theme.xaml`(다크 테마), `Interop`(`GlobalHotkey`, `KeyboardHook`, `PasteEngine`, `Autostart`, `NativeMethods`) | | `tests/QuickText.Core.Tests` | Core 단위 테스트(xUnit) | ## 빌드 및 실행 ```bash dotnet build QuickText.sln -c Debug dotnet test tests/QuickText.Core.Tests/QuickText.Core.Tests.csproj dotnet run --project src/QuickText.App # or run QuickText.exe under bin ``` 단일 파일 포터블 빌드 게시(win-x64): ```bash dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64 dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64-needs-dotnet10 ``` .NET 10 SDK가 필요합니다. Windows 전용(Win32 전역 단축키 / 키보드 후크 / 클립보드). ## 라이선스 [MIT License](../../LICENSE) · Copyright © 2026 rockbenben. 자유롭게 사용, 수정, 배포할 수 있습니다. ## 365 오픈소스 프로젝트 소개 [365 오픈소스 프로젝트](https://github.com/rockbenben/365opensource)의 **#023**번째 프로젝트 — 한 사람 + AI, 1년에 오픈소스 프로젝트 300개 이상. [아이디어 제안하기 →](https://365.aishort.top/) · [Discord](https://discord.gg/PZTQfJ4GjX) · [Telegram](https://t.me/aishort_top)