rectangle, appcleaner ADD

This commit is contained in:
csbae
2025-11-25 23:07:16 +09:00
parent 674fb00148
commit abadf37772
5 changed files with 479 additions and 20 deletions
BIN
View File
Binary file not shown.
+9 -3
View File
@@ -4,28 +4,32 @@ Mac 개발 환경을 자동으로 설정하는 스크립트입니다.
## 📦 설치 항목 ## 📦 설치 항목
### 유틸리티
- **Stats**: 시스템 모니터 (CPU, Memory, Network 등)
- **Rectangle**: 윈도우 관리 (무료 Magnet 대안)
- **AppCleaner**: 앱 완전 삭제 도구
### 개발 도구 ### 개발 도구
- Homebrew - Homebrew
- iTerm2 - iTerm2
- Oh My Zsh - Oh My Zsh
- zsh-syntax-highlighting - zsh-syntax-highlighting
- zsh-autosuggestions - zsh-autosuggestions
- Cursor (에디터)
### 폰트 ### 폰트
- D2Coding - D2Coding
- D2Coding Nerd Font - D2Coding Nerd Font
### 애플리케이션 ### 애플리케이션
- Cursor (에디터)
- Notion - Notion
- Discord - Discord
- Slack - Slack
- Google Chrome - Google Chrome
- Telegram - Telegram
- IINA (동영상 플레이어) - IINA (동영상 플레이어)
- KakaoTalk
- Tunnelblick (VPN) - Tunnelblick (VPN)
- Stats (시스템 모니터)
## 🚀 사용 방법 ## 🚀 사용 방법
@@ -62,6 +66,8 @@ setup_mac/
│ └── profile.json # iTerm2 프로파일 │ └── profile.json # iTerm2 프로파일
├── stats-settings/ ├── stats-settings/
│ └── Stats.plist # Stats 설정 │ └── Stats.plist # Stats 설정
├── rectangle-settings/
│ └── com.knollsoft.Rectangle.plist
└── README.md # 이 파일 └── README.md # 이 파일
``` ```
+344
View File
@@ -0,0 +1,344 @@
{
"bundleId" : "com.knollsoft.Rectangle",
"defaults" : {
"allowAnyShortcut" : {
"bool" : true
},
"almostMaximizeHeight" : {
"float" : 0
},
"almostMaximizeWidth" : {
"float" : 0
},
"alternateDefaultShortcuts" : {
"bool" : true
},
"altThirdCycle" : {
"int" : 0
},
"alwaysAccountForStage" : {
"int" : 0
},
"applyGapsToMaximize" : {
"int" : 0
},
"applyGapsToMaximizeHeight" : {
"int" : 0
},
"attemptMatchOnNextPrevDisplay" : {
"int" : 0
},
"autoMaximize" : {
"int" : 0
},
"cascadeAllDeltaSize" : {
"float" : 30
},
"centeredDirectionalMove" : {
"int" : 0
},
"centerHalfCycles" : {
"int" : 0
},
"cornerSnapAreaSize" : {
"float" : 20
},
"curtainChangeSize" : {
"int" : 0
},
"cycleSizesIsChanged" : {
"bool" : false
},
"disabledApps" : {
},
"doubleClickTitleBar" : {
"int" : 0
},
"doubleClickTitleBarIgnoredApps" : {
},
"doubleClickTitleBarRestore" : {
"int" : 0
},
"dragFromStage" : {
"int" : 0
},
"enhancedUI" : {
"int" : 1
},
"footprintAlpha" : {
"float" : 0.3
},
"footprintAnimationDurationMultiplier" : {
"float" : 0
},
"footprintBorderWidth" : {
"float" : 2
},
"footprintColor" : {
},
"footprintFade" : {
"int" : 0
},
"fullIgnoreBundleIds" : {
},
"gapSize" : {
"float" : 0
},
"hapticFeedbackOnSnap" : {
"int" : 0
},
"hideMenubarIcon" : {
"bool" : true
},
"ignoreDragSnapToo" : {
"int" : 0
},
"ignoredSnapAreas" : {
"int" : 0
},
"landscapeSnapAreas" : {
},
"launchOnLogin" : {
"bool" : true
},
"minimumWindowHeight" : {
"float" : 0
},
"minimumWindowWidth" : {
"float" : 0
},
"missionControlDragging" : {
"int" : 0
},
"missionControlDraggingAllowedOffscreenDistance" : {
"float" : 25
},
"missionControlDraggingDisallowedDuration" : {
"int" : 250
},
"moveCursor" : {
"int" : 0
},
"moveCursorAcrossDisplays" : {
"int" : 0
},
"notifiedOfProblemApps" : {
"bool" : false
},
"obtainWindowOnClick" : {
"int" : 0
},
"portraitSnapAreas" : {
},
"relaunchOpensMenu" : {
"bool" : false
},
"resizeOnDirectionalMove" : {
"bool" : false
},
"screenEdgeGapBottom" : {
"float" : 0
},
"screenEdgeGapLeft" : {
"float" : 0
},
"screenEdgeGapRight" : {
"float" : 0
},
"screenEdgeGapsOnMainScreenOnly" : {
"bool" : false
},
"screenEdgeGapTop" : {
"float" : 0
},
"screenEdgeGapTopNotch" : {
"float" : 0
},
"screensOrderedByX" : {
"int" : 0
},
"selectedCycleSizes" : {
"int" : 0
},
"shortEdgeSnapAreaSize" : {
"float" : 145
},
"showAllActionsInMenu" : {
"int" : 0
},
"sixthsSnapArea" : {
"int" : 0
},
"sizeOffset" : {
"float" : 0
},
"snapEdgeMarginBottom" : {
"float" : 5
},
"snapEdgeMarginLeft" : {
"float" : 5
},
"snapEdgeMarginRight" : {
"float" : 5
},
"snapEdgeMarginTop" : {
"float" : 5
},
"snapModifiers" : {
"int" : 0
},
"specifiedHeight" : {
"float" : 1050
},
"specifiedWidth" : {
"float" : 1680
},
"stageSize" : {
"float" : 180.57555
},
"subsequentExecutionMode" : {
"int" : 1
},
"SUEnableAutomaticChecks" : {
"bool" : false
},
"systemWideMouseDown" : {
"int" : 0
},
"systemWideMouseDownApps" : {
},
"todo" : {
"int" : 0
},
"todoApplication" : {
},
"todoMode" : {
"bool" : false
},
"todoSidebarSide" : {
"int" : 1
},
"todoSidebarWidth" : {
"float" : 400
},
"traverseSingleScreen" : {
"int" : 0
},
"unsnapRestore" : {
"int" : 0
},
"widthStepSize" : {
"float" : 30
},
"windowSnapping" : {
"int" : 0
}
},
"shortcuts" : {
"bottomHalf" : {
"keyCode" : 125,
"modifierFlags" : 786432
},
"bottomLeft" : {
"keyCode" : 38,
"modifierFlags" : 786432
},
"bottomRight" : {
"keyCode" : 40,
"modifierFlags" : 786432
},
"center" : {
"keyCode" : 8,
"modifierFlags" : 786432
},
"centerThird" : {
"keyCode" : 3,
"modifierFlags" : 786432
},
"centerTwoThirds" : {
"keyCode" : 15,
"modifierFlags" : 786432
},
"firstThird" : {
"keyCode" : 2,
"modifierFlags" : 786432
},
"firstTwoThirds" : {
"keyCode" : 14,
"modifierFlags" : 786432
},
"larger" : {
"keyCode" : 24,
"modifierFlags" : 786432
},
"lastThird" : {
"keyCode" : 5,
"modifierFlags" : 786432
},
"lastTwoThirds" : {
"keyCode" : 17,
"modifierFlags" : 786432
},
"leftHalf" : {
"keyCode" : 123,
"modifierFlags" : 786432
},
"maximize" : {
"keyCode" : 36,
"modifierFlags" : 786432
},
"maximizeHeight" : {
"keyCode" : 126,
"modifierFlags" : 917504
},
"nextDisplay" : {
"keyCode" : 124,
"modifierFlags" : 1835008
},
"previousDisplay" : {
"keyCode" : 123,
"modifierFlags" : 1835008
},
"reflowTodo" : {
"keyCode" : 45,
"modifierFlags" : 786432
},
"restore" : {
"keyCode" : 51,
"modifierFlags" : 786432
},
"rightHalf" : {
"keyCode" : 124,
"modifierFlags" : 786432
},
"smaller" : {
"keyCode" : 27,
"modifierFlags" : 786432
},
"toggleTodo" : {
"keyCode" : 11,
"modifierFlags" : 786432
},
"topHalf" : {
"keyCode" : 126,
"modifierFlags" : 786432
},
"topLeft" : {
"keyCode" : 32,
"modifierFlags" : 786432
},
"topRight" : {
"keyCode" : 34,
"modifierFlags" : 786432
}
},
"version" : "98"
}
+14
View File
@@ -44,6 +44,20 @@ fi
echo "" echo ""
# Rectangle 설정 저장
if [ -f "$HOME/Library/Preferences/com.knollsoft.Rectangle.plist" ]; then
echo "📐 Rectangle 설정 저장 중..."
mkdir -p "$RECTANGLE_SETTINGS_DIR"
cp "$HOME/Library/Preferences/com.knollsoft.Rectangle.plist" \
"$RECTANGLE_SETTINGS_DIR/com.knollsoft.Rectangle.plist"
echo "✅ Rectangle 설정 저장 완료"
git add "$RECTANGLE_SETTINGS_DIR/com.knollsoft.Rectangle.plist"
else
echo "⚠️ Rectangle 설정 파일을 찾을 수 없습니다"
fi
echo ""
# Git 상태 확인 # Git 상태 확인
cd "$SCRIPT_DIR" cd "$SCRIPT_DIR"
echo "📂 변경된 파일:" echo "📂 변경된 파일:"
+112 -17
View File
@@ -12,8 +12,10 @@ set -e # 에러 발생 시 스크립트 중단
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ITERM_SETTINGS_DIR="$SCRIPT_DIR/iterm2-settings" ITERM_SETTINGS_DIR="$SCRIPT_DIR/iterm2-settings"
STATS_SETTINGS_DIR="$SCRIPT_DIR/stats-settings" STATS_SETTINGS_DIR="$SCRIPT_DIR/stats-settings"
RECTANGLE_SETTINGS_DIR="$SCRIPT_DIR/rectangle-settings"
ITERM_PROFILE_FILE="$ITERM_SETTINGS_DIR/profile.json" ITERM_PROFILE_FILE="$ITERM_SETTINGS_DIR/profile.json"
STATS_PLIST_FILE="$STATS_SETTINGS_DIR/Stats.plist" STATS_PLIST_FILE="$STATS_SETTINGS_DIR/Stats.plist"
RECTANGLE_PLIST_FILE="$RECTANGLE_SETTINGS_DIR/com.knollsoft.Rectangle.plist"
echo "🚀 Mac 초기 개발 환경 설정을 시작합니다..." echo "🚀 Mac 초기 개발 환경 설정을 시작합니다..."
echo "📂 스크립트 위치: $SCRIPT_DIR" echo "📂 스크립트 위치: $SCRIPT_DIR"
@@ -128,6 +130,8 @@ APPS=(
"slack" "slack"
"google-chrome" "google-chrome"
"stats" "stats"
"rectangle"
"appcleaner"
) )
for app in "${APPS[@]}"; do for app in "${APPS[@]}"; do
@@ -164,6 +168,19 @@ if [ ! -f ~/.zshrc ]; then
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
fi fi
# Homebrew PATH 설정 확인 및 추가
if ! grep -q "brew shellenv" ~/.zshrc; then
echo "🔧 Homebrew PATH 설정 추가..."
if [[ $(uname -m) == "arm64" ]]; then
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
echo "✅ Homebrew PATH 설정 추가 (Apple Silicon)"
else
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
echo "✅ Homebrew PATH 설정 추가 (Intel)"
fi
fi
# ZSH_THEME 설정 # ZSH_THEME 설정
if grep -q "^ZSH_THEME=" ~/.zshrc; then if grep -q "^ZSH_THEME=" ~/.zshrc; then
sed -i '' 's/^ZSH_THEME=.*/ZSH_THEME="agnoster"/' ~/.zshrc sed -i '' 's/^ZSH_THEME=.*/ZSH_THEME="agnoster"/' ~/.zshrc
@@ -233,7 +250,7 @@ echo ""
# ============================================================================= # =============================================================================
echo "⚙️ iTerm2 프로파일 설정 중..." echo "⚙️ iTerm2 프로파일 설정 중..."
# iTerm2가 실행 중이면 종료 (정확한 프로세스 이름 사용) # iTerm2가 실행 중이면 종료
if pgrep -x "iTerm2" > /dev/null; then if pgrep -x "iTerm2" > /dev/null; then
echo "⚠️ iTerm2가 실행 중입니다. 종료합니다..." echo "⚠️ iTerm2가 실행 중입니다. 종료합니다..."
killall iTerm 2>/dev/null || killall iTerm2 2>/dev/null || true killall iTerm 2>/dev/null || killall iTerm2 2>/dev/null || true
@@ -308,7 +325,8 @@ echo ""
# ============================================================================= # =============================================================================
echo "📊 Stats 앱 설정 중..." echo "📊 Stats 앱 설정 중..."
if brew list --cask stats &> /dev/null; then # Stats 설치 확인 (파일 시스템 기반)
if [ -d "/Applications/Stats.app" ]; then
echo "✅ Stats 설치됨" echo "✅ Stats 설치됨"
# Stats가 실행 중이면 종료 # Stats가 실행 중이면 종료
@@ -354,6 +372,68 @@ fi
echo "" echo ""
# =============================================================================
# 10. Rectangle 앱 설정
# =============================================================================
echo "📐 Rectangle 앱 설정 중..."
# Rectangle 설치 확인 (파일 시스템 기반)
if [ -d "/Applications/Rectangle.app" ]; then
echo "✅ Rectangle 설치됨"
# Rectangle이 실행 중이면 종료
if pgrep -x "Rectangle" > /dev/null; then
echo "⚠️ Rectangle이 실행 중입니다. Rectangle을 종료합니다..."
killall Rectangle 2>/dev/null || true
sleep 2
fi
# Rectangle 설정 파일 확인
if [ -f "$RECTANGLE_PLIST_FILE" ]; then
echo "✅ Rectangle.plist 발견"
# Rectangle 설정 파일 백업
RECTANGLE_PREF_FILE="$HOME/Library/Preferences/com.knollsoft.Rectangle.plist"
if [ -f "$RECTANGLE_PREF_FILE" ]; then
RECTANGLE_BACKUP="$RECTANGLE_PREF_FILE.backup_$(date +%Y%m%d_%H%M%S)"
cp "$RECTANGLE_PREF_FILE" "$RECTANGLE_BACKUP"
echo "✅ 기존 Rectangle 설정 백업: $RECTANGLE_BACKUP"
fi
# 새 설정 적용
cp "$RECTANGLE_PLIST_FILE" "$RECTANGLE_PREF_FILE"
echo "✅ Rectangle 설정 적용 완료"
# 설정 파일 권한 설정
chmod 644 "$RECTANGLE_PREF_FILE"
# Rectangle 재시작
echo "🔄 Rectangle 재시작 중..."
sleep 1
open -a Rectangle
echo "✅ Rectangle 시작 완료"
else
echo "⚠️ $RECTANGLE_PLIST_FILE 파일을 찾을 수 없습니다."
echo " Rectangle을 실행하고 설정을 구성해주세요."
echo ""
echo " Rectangle 기본 설정 생성 중..."
# Rectangle 실행 (초기 설정 생성)
open -a Rectangle
sleep 3
echo "✅ Rectangle 초기 실행 완료"
echo " Preferences에서 키보드 단축키를 설정하세요."
fi
else
echo "⚠️ Rectangle이 설치되지 않았습니다."
echo " brew install --cask rectangle 명령으로 수동 설치하세요."
fi
echo ""
# ============================================================================= # =============================================================================
# 완료 메시지 # 완료 메시지
# ============================================================================= # =============================================================================
@@ -365,7 +445,6 @@ echo "📋 다음 단계:"
echo "" echo ""
echo " 1️⃣ iTerm2 실행 확인" echo " 1️⃣ iTerm2 실행 확인"
echo " → iTerm이 자동으로 열렸는지 확인" echo " → iTerm이 자동으로 열렸는지 확인"
echo " → 열리지 않았다면: Spotlight (⌘Space) → 'iTerm' 검색"
echo "" echo ""
echo " 2️⃣ iTerm2에서 프로파일 설정 (필수 - 30초):" echo " 2️⃣ iTerm2에서 프로파일 설정 (필수 - 30초):"
echo " ┌──────────────────────────────────────────┐" echo " ┌──────────────────────────────────────────┐"
@@ -377,28 +456,44 @@ echo " │ → 'Set as Default' 선택 │"
echo " └──────────────────────────────────────────┘" echo " └──────────────────────────────────────────┘"
echo "" echo ""
echo " 3️⃣ 새 창 열어서 프로파일 확인 (⌘N)" echo " 3️⃣ 새 창 열어서 프로파일 확인 (⌘N)"
echo " ✓ 어두운 배경 (#1F1F1F)" echo " ✓ 어두운 배경"
echo " ✓ D2Coding 13pt 폰트" echo " ✓ D2Coding 폰트"
echo " ✓ 하단 Status Bar (CPU, Memory, Network, Battery, Host)" echo " ✓ 하단 Status Bar (CPU, Memory)"
echo " ✓ 100 columns × 25 rows"
echo "" echo ""
echo " 4️⃣ ZSH 테마 확인 (새 터미널에서):" echo " 4️⃣ ZSH 테마 확인 (새 터미널에서):"
echo " echo \$ZSH_THEME # → agnoster" echo " echo \$ZSH_THEME # → agnoster"
echo " type build_prompt # → function 확인" echo " type build_prompt # → function 확인"
echo "" echo ""
echo " 5️⃣ Stats 메뉴바 위젯 확인" echo " 5️⃣ Stats 메뉴바 위젯 확인"
echo " → 메뉴바 오른쪽에 시스템 모니터 표시"
echo "" echo ""
echo "💡 참고:" echo " 6️⃣ Rectangle 윈도우 관리 설정 (선택사항 - 3분):"
echo " - Dynamic Profile: ✅ 생성 완료" echo " a. System Settings > Privacy & Security > Accessibility"
echo " - 기본 GUID 설정: ✅ 완료" echo " → Rectangle 체크 (필수)"
echo " - Stats 설정: ✅ 적용 완료" echo " b. Rectangle Preferences (⌘,)"
echo " - 최종 단계: 2단계 프로파일 설정만 진행하면 끝!" echo " → 키보드 단축키 확인/변경"
echo ""
echo " 기본 단축키:"
echo " ⌃⌥→ : 오른쪽 절반 ⌃⌥← : 왼쪽 절반"
echo " ⌃⌥↑ : 최대화 ⌃⌥↓ : 하단 정렬"
echo " ⌃⌥F : 전체 화면 ⌃⌥C : 가운데"
echo ""
echo " 7️⃣ AppCleaner 사용법:"
echo " - Applications 폴더에서 AppCleaner 실행"
echo " - 앱 삭제 시 관련 파일까지 자동 정리"
echo " - 추천: Dock에 추가하여 사용"
echo ""
echo "💡 설치된 앱 목록:"
echo " ✅ iTerm2 (터미널)"
echo " ✅ Stats (시스템 모니터)"
echo " ✅ Rectangle (윈도우 관리)"
echo " ✅ AppCleaner (앱 제거 도구)"
echo " ✅ Cursor, Notion, Discord, Slack"
echo " ✅ IINA, Telegram, Chrome"
echo " ✅ Tunnelblick (VPN)"
echo "" echo ""
echo "🔧 문제 발생 시:" echo "🔧 문제 발생 시:"
echo " - iTerm2가 실행 안 되면: Spotlight에서 'iTerm' 검색 후 실행" echo " - brew 명령어 오류: 새 터미널 열기"
echo " - 프로파일 목록에 nad4-profile 없으면:" echo " - iTerm2 프로파일 없음: profile.json 확인"
echo " Settings > Profiles > Other Actions > Import JSON" echo " - Rectangle/Stats 설정 오류: 수동 설정"
echo " → iterm2-settings/profile.json 선택"
echo "" echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"