Skip to content

About

Windows-style window switching and unified keyboard/mouse settings for macOS

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MacLikeWindowStyle

Mac을 Windows처럼 사용하는 사람을 위한 메뉴 막대 유틸리티.

앱 이름은 WindowBridge입니다. 왼쪽 Alt+Tab으로 개별 창의 미리보기를 보고 전환하며, 기존 Windows 스타일 키보드·마우스 설정을 한곳에서 관리합니다.

예시 창으로 구성한 미리보기 화면

기능

  • 앱이 아닌 창 단위 Alt+Tab: 썸네일, 최근 사용 순서, Alt 해제 시 전환
  • 방향키 상하좌우 이동, 클릭/Enter 선택, Esc 취소
  • 마우스를 올린 카드 강조와 짧은 페이드. macOS ‘동작 줄이기’ 반영
  • 상단 메뉴 막대에서 관리. Dock에 실행 아이콘을 표시하지 않음
  • 설정에서 로그인 시 자동 실행을 켜고, 등록·승인 상태와 로그인 항목 설정을 확인
  • 키보드·마우스·창 전환·백업/복원 탭
  • 기존 한영키, Alt+F4, Finder 단축키, Ctrl+C/V/A와 탐색키, 휠 설정의 독립 제어
  • 변경 전 로컬 백업, 외부 설정 변경 감지, 실패 시 복구 및 재시도

Swift / AppKit / ScreenCaptureKit 기반이며 앱 자체에 외부 라이브러리나 네트워크 통신이 없습니다. 입력 변환은 별도로 설치한 Karabiner-Elements, 마우스 변환은 LinearMouse가 담당합니다. 두 프로젝트의 코드는 포함하지 않습니다.

빌드와 설치

macOS 14 이상과 Swift 5.9 이상의 macOS 개발 도구가 필요합니다. Xcode 또는 Xcode Command Line Tools를 먼저 설치하세요.

git clone https://github.com/miumi44/MacLikeWindowStyle.git
cd MacLikeWindowStyle
./scripts/test-windowbridge.sh
./scripts/build-windowbridge.sh
./scripts/install-app.sh
open "$HOME/Applications/WindowBridge.app"

설치 스크립트는 ~/Applications를 사용하며 관리자 권한이 필요하지 않습니다. 기존 앱이 있으면 덮어쓰지 않습니다. 먼저 기존 앱을 종료하고 별도로 보관하세요.

  1. 앱의 창 전환 탭에서 화면 기록과 손쉬운 사용 권한을 허용합니다.
  2. 백그라운드에서 왼쪽 Alt+Tab 사용과 창 관리 단축키는 켜면 즉시 적용되고 다음 실행에도 유지됩니다. 기본값은 꺼짐입니다.
  3. BetterCmdTab이 실행 중일 때 직접 창 전환을 켜면 종료 여부를 확인합니다. 로그인 시작 시 충돌하면 BetterCmdTab을 종료하지 않고 창 전환을 건너뛰며 메뉴 막대 툴팁에 이유를 표시합니다.
  4. 로그인 시 자동 실행을 켜면 macOS 로그인 항목에 WindowBridge를 등록합니다. 승인이 필요하면 로그인 항목 설정 열기에서 허용하세요. 로그인으로 실행된 앱은 설정 창을 열지 않고 저장한 창 기능을 복원하며, 앱을 직접 실행하거나 다시 열면 설정 창을 표시합니다.

로컬 ad-hoc 서명 빌드이며 Apple 공증 배포본은 아닙니다. 재빌드 또는 설치 위치 변경 후 macOS가 기존 권한을 다시 요구할 수 있습니다.

사용

왼쪽 Alt를 누른 채 Tab으로 선택하고 Alt를 놓으면 해당 창으로 전환합니다. Shift+Tab은 역순, 방향키는 카드 배치대로 이동합니다. Alt를 누른 채 카드를 클릭하면 바로 전환합니다. Esc는 취소합니다.

키보드·마우스 변경은 ‘변경 적용’을 눌러야 저장됩니다. Windows 권장값 버튼은 화면의 선택만 바꿉니다. 창 전환과 호버 효과 켜기/끄기는 즉시 반영됩니다.

다른 Mac에서 입력 설정 사용하기

창 전환은 독립적으로 사용할 수 있습니다. 통합 입력 설정은 이 프로젝트의 기존 Karabiner 규칙 이름과 기본 LinearMouse 마우스 scheme을 읽는 방식입니다. 앱이 두 프로그램을 설치하거나 처음부터 모든 프로필을 생성하지는 않습니다. 왼쪽 Ctrl+C/V/A 옵션을 켜면 해당 키 조합이 Command+A/C/V로 바뀌어 Codex와 IDE에서도 복사·붙여넣기·전체 선택을 합니다. 오른쪽 Ctrl은 그대로 두어 IDE의 통합 터미널에서 Ctrl+C 인터럽트를 보낼 수 있습니다. 터미널 앱, VM, 원격 데스크톱은 기존 예외로 유지됩니다.

입력 설정 준비 안내와 examples/의 일반 예제를 사용하세요. 예제의 키보드 장치 ID는 가상 값입니다. 그대로 개인 설정 파일에 덮어쓰면 안 됩니다. 자신의 장치로 바꾸고 기존 설정에 병합해야 합니다. 지원하는 기존 규칙을 찾지 못하면 해당 항목은 비활성화됩니다. 고급 키 조합·장치별 규칙은 각 프로그램에서 설정합니다.

로컬 데이터와 복구

  • 읽기/변경 대상: ~/.config/karabiner/karabiner.json, ~/.config/linearmouse/linearmouse.json
  • 기존 한영 보완 설정: ~/Library/LaunchAgents/com.codex.hangul-key-remap.plist와 현재 hidutil 매핑
  • 마우스 전역 설정: 자연스러운 방향·관성·휠 배율만 관리
  • 백업: ~/Library/Application Support/WindowBridge/Backups
  • 화면 썸네일은 메모리에서만 처리하며 디스크에 저장하거나 전송하지 않음

백업·복원 → 마지막 적용 되돌리기를 사용하세요. 다른 앱이 이후 설정을 바꿨으면 덮어쓰지 않고 중단합니다. 한영키 변경은 기존 보완 LaunchAgent가 있어야 하며, 다른 매핑을 보존합니다. 키보드·마우스 설정 파일이 없는 첫 설치에서는 준비 안내를 먼저 따르세요.

제거하거나 앱 위치를 바꾸기 전에는 설정에서 ‘로그인 시 자동 실행’을 끄세요. 제거하려면 메뉴에서 종료하고 앱을 휴지통으로 옮깁니다. 앱을 제거하는 것만으로 이미 적용한 입력 설정이 되돌아가지는 않습니다. 필요한 복원은 제거 전에 진행하세요.

현재 한계

개인 환경에서 시작한 초기 프로젝트입니다. 모든 키보드·macOS 앱 조합에서 검증된 완제품은 아닙니다. 창 활성화는 앱별 Accessibility 지원에 따라 실패할 수 있고, 보호된 창·보안 입력·로그인/잠금 화면에서는 동작이 제한됩니다. 비슷한 제목의 창은 위치를 함께 사용해 구분합니다. 최근 사용 순서는 앱 실행 중 관찰한 정보입니다.

개발

Sources/WindowBridge는 macOS UI·미리보기·전역 단축키를, Sources/WindowBridgeCore는 선택 상태와 설정 변경/복구를 담당합니다. 테스트는 임시 폴더와 가짜 명령 실행기를 사용하며 실제 입력 설정을 바꾸지 않습니다. macOS CI에서 회귀 검사와 release 빌드를 실행합니다.

버그 제보 시 재현 단계, macOS 버전, 키보드 종류를 적어 주세요. 토큰·암호·개인 창 화면이나 전체 사용자 설정은 올리지 마세요.

라이선스

MIT. Copyright © 2026 miumi44.

창 관리 (실험 기능)

상단 메뉴 막대의 WindowBridge → 창 배치에서 다음 기능을 사용할 수 있습니다.

동작 단축키를 켰을 때
왼쪽·오른쪽·위·아래 절반 배치 Command + 왼쪽 Alt + ← / → / ↑ / ↓
현재 화면 채우기 최대화 / 이전 크기 Command + 왼쪽 Alt + Return
현재 창 최소화 Command + 왼쪽 Alt + M
배치 전 크기로 복원 ‘창 배치’ 메뉴에서 선택

단축키는 **설정 → 창 전환 → Command + 왼쪽 Alt 창 관리 단축키 (실험)**에서 켭니다. 기본값은 꺼짐이며 켜거나 끄면 선택이 저장되어 다음 실행에도 복원됩니다. 권한이나 단축키 등록에 실패하면 저장한 선택은 유지되고 설정 상태 문구에 이유를 표시합니다. 메뉴 동작은 단축키를 켜지 않아도 사용할 수 있습니다.

동작키와 Command·Alt를 모두 놓으면 실행합니다. Esc, 기능 끄기, 절전 진입은 대기 중인 동작을 취소합니다. 동작 도중 다른 앱이나 창으로 전환하면 취소합니다. Command 단독 화살표와 기존 위·아래 절반 배치는 유지합니다.

현재 창이 위치한 화면에서 메뉴 막대와 Dock을 제외한 영역을 사용합니다. 최대화는 화면을 채우는 일반 창이며 macOS 전체 화면 모드로 전환하지 않습니다. 원래 크기는 앱 실행 중 메모리에만 보관하므로 WindowBridge를 재실행하면 복원 기록이 사라집니다.

손쉬운 사용 권한이 필요합니다. 전체 화면·크기 변경 불가 창은 건너뜁니다. 실제 적용된 크기를 다시 읽고, 목표와 다르면 제한된 횟수만 재시도합니다. 앱의 크기 제한 때문에 일부만 적용되면 그 상태를 표시합니다.

검증 상태: 초기 창 배치 구현에서 한영 전환·자모 분리 입력 문제가 보고됐습니다. 키 누름/해제를 함께 처리하고 모든 단축키 해제 후 동작하도록 보강했습니다. 수정본에서는 사용자의 물리 키보드로 창 크기 조정·최대화·복원·최소화·Alt+Tab 복귀 이후 한영 전환과 한글 조합이 정상임을 확인했습니다. 다른 기기와 앱 조합에서는 추가 검증이 필요합니다. 상세 확인 결과와 미검증 항목은 검증 기록을 참고하세요. 문제가 재현되면 창 관리 단축키를 끄고 메뉴 동작과 구분해 확인하세요.

About

Windows-style window switching and unified keyboard/mouse settings for macOS

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages