Windows에서 열려 있는 창들의 위치와 크기를 저장하고, 단축키 하나로 레이아웃을 복원하는 도구입니다.
- 윈도우 스캔 — 현재 열린 창 목록을 자동으로 수집
- 윈도우 적용 — 저장된 프로필대로 창 위치/크기를 일괄 복원
- 창 탐색 도구 — 마우스로 원하는 창을 선택하여 프로필에 추가 (빨간 테두리로 대상 표시)
- 글로벌 단축키 — 프로필별 단축키 지정, 백그라운드에서도 즉시 적용
- 개별 필드 제어 — X, Y, 너비, 높이, 상태를 각각 적용할지 선택 가능
- 매칭 조건 — EXE, 클래스명, 창 이름으로 대상 창을 정밀하게 매칭 (완전일치/포함)
- 다국어 지원 — 한국어, English 기본 제공. 커뮤니티 번역 추가 가능
- 테마 — 다크 모드, 라이트 모드, 시스템 설정 따라가기
- 트레이 모드 — 시작 시 트레이로, 닫기 시 트레이로 설정 가능
- 싱글 인스턴스 — 프로그램 중복 실행 방지
- Releases 페이지에서 최신 버전 다운로드
- 압축 해제
SaveWindow.exe실행 (관리자 권한 자동 요청)
SaveWindow/
├── SaveWindow.exe # 실행 파일
├── lang/ # 언어 파일
│ ├── ko.json
│ └── en.json
├── profiles/ # 프로필 저장 (자동 생성)
└── config.json # 설정 파일 (자동 생성)
lang/폴더와profiles/폴더는 프로그램 첫 실행 시 자동으로 생성됩니다.
- 윈도우 스캔 (Ctrl+R) — 현재 열린 창들을 목록에 가져옵니다
- 필요에 따라 항목을 편집하거나, 불필요한 항목을 제거합니다
- 프로필 저장 (Ctrl+S) — JSON 파일로 저장합니다
- 창 배치가 흐트러졌을 때 윈도우 적용 (Ctrl+A) — 저장된 위치로 복원합니다
- 메뉴 또는 툴바에서 창 탐색 도구 클릭
- 탐색 시작 클릭
- 마우스를 원하는 창 위로 이동 (빨간 테두리로 대상 표시)
- 탐색 중지 또는
Esc키로 고정 - 이 창 추가 클릭
- 메뉴 > 윈도우 > 단축키 설정 클릭
- 추가 버튼으로 새 매핑 생성
- 단축키 입력 (예:
Ctrl+Alt+1) - 프로필 JSON 파일 선택
- 확인 — 이후 해당 단축키를 누르면 프로필이 즉시 적용됩니다
프로그램이 트레이에 있어도 단축키는 작동합니다.
메뉴 > 옵션 > 설정 에서 다음을 구성할 수 있습니다:
| 설정 | 설명 |
|---|---|
| 시작 프로그램 등록 | Windows 시작 시 자동 실행 |
| 시작 시 트레이 모드 | 프로그램 시작 시 트레이에만 표시 |
| 종료 시 트레이로 | X 버튼 클릭 시 트레이로 이동 (끄면 프로그램 종료) |
| 테마 | 다크 / 라이트 / 시스템 설정 |
| 언어 | 시스템 자동 감지 또는 수동 선택 |
- Python 3.14+
- Windows 11
명시된 요구 사항은, 개발자가 개발하고, 빌드한 환경입니다.
다른 버전에서는 테스트해보지 않았습니다.
# 가상환경 생성 및 활성화
python -m venv .venv
.venv\Scripts\activate
# 의존성 설치
pip install -e ".[dev]"
pip install pyinstaller
# 빌드
scripts\build.bat빌드 결과물은 dist/SaveWindow/ 에 생성됩니다.
다음 파일/폴더를 함께 배포하세요:
dist/SaveWindow/ # PyInstaller 빌드 결과 전체
lang/ # 언어 파일 (빌드에 자동 포함)
SaveWindow는 lang/ 폴더의 JSON 파일로 다국어를 지원합니다. 누구나 새 언어를 추가할 수 있습니다.
lang/en.json파일을 복사하여lang/{언어코드}.json으로 저장 (예:lang/ja.json)_language_name값을 해당 언어의 표시 이름으로 변경
{
"_language_name": "日本語",
"menu.file": "ファイル",
...
}- 모든 키의 값을 번역
- 프로그램을 재시작하면 옵션 > 설정 > 언어에서 선택 가능
- PR을 보내주시면 기본 언어에 포함됩니다
JSON 파일 이름이 곧 언어 코드입니다. ISO 639-1 코드 사용을 권장합니다 (예:
ko,en,ja,zh).




