Fix iTerm2 theme application and install Orca

This commit is contained in:
nad4 committed 2026-09-30 22:53:55 +09:00
1 parent 17ca503163
commit 83827d1312
4 files changed
+54 -69

No files matched your search

+15 -8
View File
@@ -11,6 +11,7 @@ Mac 개발 환경을 자동으로 설정하는 스크립트입니다.
- Node.js - Node.js
- iTerm2 - iTerm2
- **cmux** + CLI 링크 - **cmux** + CLI 링크
- **Orca** (AI agent 개발 환경)
- Oh My Zsh (agnoster 멀티라인 테마) - Oh My Zsh (agnoster 멀티라인 테마)
- zsh-syntax-highlighting / zsh-autosuggestions - zsh-syntax-highlighting / zsh-autosuggestions
- **VSCode** + Claude 확장 - **VSCode** + Claude 확장
@@ -70,6 +71,7 @@ chmod +x setup_mac.sh
``` ```
setup_mac/ setup_mac/
├── setup_mac.sh # 메인 설치 스크립트 ├── setup_mac.sh # 메인 설치 스크립트
├── apply_iterm2.sh # iTerm2 프로파일만 재적용
├── save_configs.sh # 설정 저장 스크립트 ├── save_configs.sh # 설정 저장 스크립트
├── .gitignore ├── .gitignore
├── iterm2-settings/ ├── iterm2-settings/
@@ -86,7 +88,8 @@ setup_mac/
### iTerm2 프로파일 ### iTerm2 프로파일
- **이름**: nad4-profile - **이름**: nad4-profile
- **폰트**: D2Coding 13pt - **폰트**: D2Coding 13pt
- **색상**: 다크 테마 - **색상**: 다크 테마 (macOS 라이트/다크 모드와 무관하게 유지)
- **기본 프로파일**: 자동 설정, 기존 세션은 유지하며 새 창부터 적용
- **Status Bar**: CPU, 메모리, 네트워크, 배터리, 호스트명 - **Status Bar**: CPU, 메모리, 네트워크, 배터리, 호스트명
- **크기**: 100 columns × 25 rows - **크기**: 100 columns × 25 rows
@@ -104,6 +107,11 @@ setup_mac/
- **CLI**: `/Applications/cmux.app/Contents/Resources/bin/cmux` 를 Homebrew bin 경로에 링크 - **CLI**: `/Applications/cmux.app/Contents/Resources/bin/cmux` 를 Homebrew bin 경로에 링크
- cmux 외부 터미널에서도 `cmux` 명령을 사용할 수 있도록 구성 - cmux 외부 터미널에서도 `cmux` 명령을 사용할 수 있도록 구성
### Orca
- **앱**: [공식 설치 안내](https://www.onorca.dev/docs/install)의 `brew install --cask stablyai/orca/orca` 사용
- Homebrew 기본 저장소의 동명 Plotly 앱과 구분하기 위해 전체 cask 경로 사용
- 최초 실행 후 작업 저장소와 Claude Code/Codex 환경을 선택
### Docker Desktop ### Docker Desktop
- **앱**: `brew install --cask docker-desktop` 으로 자동 설치 - **앱**: `brew install --cask docker-desktop` 으로 자동 설치
- **CLI**: Docker Desktop이 제공하는 `docker`, `docker compose` 사용 - **CLI**: Docker Desktop이 제공하는 `docker`, `docker compose` 사용
@@ -182,8 +190,7 @@ git push
### iTerm2 설정 ### iTerm2 설정
- [ ] iTerm2 > Settings > Profiles - [ ] iTerm2 > Settings > Profiles
- [ ] 'nad4-profile' 선택 - [ ] 'nad4-profile'이 기본 프로파일인지 확인
- [ ] Other Actions... > Set as Default
- [ ] 새 창 열어서 설정 확인 - [ ] 새 창 열어서 설정 확인
### Stats 설정 ### Stats 설정
@@ -227,12 +234,12 @@ git push
### iTerm2 프로파일이 적용되지 않는 경우 ### iTerm2 프로파일이 적용되지 않는 경우
```bash ```bash
# 1. 프로파일 파일 확인 # 앱 재설치 없이 저장소의 프로파일과 기본값만 적용
ls -la ~/Library/Application\ Support/iTerm2/DynamicProfiles/ cd ~/workspace/setup_mac
bash apply_iterm2.sh
# 2. iTerm2 재시작 # iTerm2에서 ⌘N으로 새 창 열기
killall iTerm2 # 기존 창/탭은 이전 세션 설정을 유지할 수 있습니다.
open -a iTerm2
``` ```
### Stats 설정이 적용되지 않는 경우 ### Stats 설정이 적용되지 않는 경우
+31
View File
@@ -0,0 +1,31 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROFILE_FILE="$SCRIPT_DIR/iterm2-settings/profile.json"
DYNAMIC_DIR="$HOME/Library/Application Support/iTerm2/DynamicProfiles"
TARGET_FILE="$DYNAMIC_DIR/NAD4Profile.json"
# Validate before replacing the active profile. Backups belong outside DynamicProfiles.
plutil -convert xml1 -o /dev/null "$PROFILE_FILE"
PROFILE_GUID=$(plutil -extract Guid raw -o - "$PROFILE_FILE")
PROFILE_NAME=$(plutil -extract Name raw -o - "$PROFILE_FILE")
[ -n "$PROFILE_GUID" ] && [ -n "$PROFILE_NAME" ]
mkdir -p "$DYNAMIC_DIR"
if [ -f "$TARGET_FILE" ]; then
BACKUP_DIR="$HOME/Library/Application Support/iTerm2/ProfileBackups"
mkdir -p "$BACKUP_DIR"
cp "$TARGET_FILE" "$BACKUP_DIR/NAD4Profile.$(date +%Y%m%d_%H%M%S).json"
fi
TEMP_FILE=$(mktemp "${TMPDIR:-/tmp}/nad4-iterm.XXXXXX")
trap 'rm -f "$TEMP_FILE"' EXIT
{
printf '{"Profiles": ['
cat "$PROFILE_FILE"
printf ']}\n'
} > "$TEMP_FILE"
plutil -convert xml1 -o /dev/null "$TEMP_FILE"
cp "$TEMP_FILE" "$TARGET_FILE"
defaults write com.googlecode.iterm2 "Default Bookmark Guid" -string "$PROFILE_GUID"
echo "✅ iTerm2 기본 프로파일 적용: $PROFILE_NAME"
echo " 기존 세션은 유지됩니다. 새 창(⌘N)에서 테마와 폰트를 확인하세요."
+1
View File
@@ -302,6 +302,7 @@
"Red Component" : 0.89803921568627454 "Red Component" : 0.89803921568627454
}, },
"Use Non-ASCII Font" : false, "Use Non-ASCII Font" : false,
"Use Separate Colors for Light and Dark Mode" : false,
"Has Hotkey" : false, "Has Hotkey" : false,
"Ansi 8 Color" : { "Ansi 8 Color" : {
"Green Component" : 0.31372550129890442, "Green Component" : 0.31372550129890442,
+7 -61
View File
@@ -16,7 +16,6 @@ CODEX_REPO_DIR="${WORKSPACE_ROOT}/codex"
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" RECTANGLE_SETTINGS_DIR="$SCRIPT_DIR/rectangle-settings"
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" RECTANGLE_PLIST_FILE="$RECTANGLE_SETTINGS_DIR/com.knollsoft.Rectangle.plist"
RECTANGLE_JSON_FILE="$RECTANGLE_SETTINGS_DIR/RectangleConfig.json" RECTANGLE_JSON_FILE="$RECTANGLE_SETTINGS_DIR/RectangleConfig.json"
@@ -152,6 +151,7 @@ APPS=(
"rectangle" "rectangle"
"appcleaner" "appcleaner"
"cmux" "cmux"
"stablyai/orca/orca"
) )
for app in "${APPS[@]}"; do for app in "${APPS[@]}"; do
@@ -359,6 +359,7 @@ prompt_newline() {
fi fi
echo -n "%{%f%}" echo -n "%{%f%}"
CURRENT_BG='' CURRENT_BG=''
printf '\n❯'
} }
# 프롬프트 빌드 (멀티라인 적용) # 프롬프트 빌드 (멀티라인 적용)
@@ -400,57 +401,7 @@ echo ""
# ============================================================================= # =============================================================================
echo "⚙️ iTerm2 프로파일 설정 중..." echo "⚙️ iTerm2 프로파일 설정 중..."
# iTerm2가 실행 중이면 종료 bash "$SCRIPT_DIR/apply_iterm2.sh"
if pgrep -x "iTerm2" > /dev/null; then
echo "⚠️ iTerm2가 실행 중입니다. 종료합니다..."
killall iTerm 2>/dev/null || killall iTerm2 2>/dev/null || true
sleep 2
fi
# iTerm2 DynamicProfiles 디렉토리 생성
ITERM_DYNAMIC_DIR="$HOME/Library/Application Support/iTerm2/DynamicProfiles"
mkdir -p "$ITERM_DYNAMIC_DIR"
# 프로파일 파일 확인
if [ -f "$ITERM_PROFILE_FILE" ]; then
echo "✅ profile.json 발견"
# DynamicProfile 형식으로 변환하여 복사 (profile.json을 Profiles 배열로 래핑)
{
echo '{"Profiles": ['
cat "$ITERM_PROFILE_FILE"
echo ']}'
} > "$ITERM_DYNAMIC_DIR/NAD4Profile.json"
echo "✅ iTerm2 Dynamic Profile 생성 완료"
echo " 위치: $ITERM_DYNAMIC_DIR/NAD4Profile.json"
# profile.json에서 GUID 추출 (공백 유무 무관)
PROFILE_GUID=$(grep -o '"Guid"[[:space:]]*:[[:space:]]*"[^"]*"' "$ITERM_PROFILE_FILE" | head -1 | sed 's/.*:.*"\([^"]*\)"/\1/')
if [ -n "$PROFILE_GUID" ]; then
echo "✅ 프로파일 GUID: $PROFILE_GUID"
# iTerm2 환경설정에 기본 프로파일 GUID만 설정
defaults write com.googlecode.iterm2 "Default Bookmark Guid" "$PROFILE_GUID"
echo "✅ iTerm2 기본 프로파일 GUID 설정 완료"
else
echo "⚠️ 프로파일 GUID를 찾을 수 없습니다"
fi
else
echo "⚠️ $ITERM_PROFILE_FILE 파일을 찾을 수 없습니다."
fi
# iTerm2 재시작
echo "🔄 iTerm2 시작 중..."
sleep 1
if open -a iTerm 2>/dev/null; then
echo "✅ iTerm2 시작 완료"
else
echo "⚠️ iTerm2를 수동으로 실행해주세요"
fi
echo "" echo ""
@@ -582,16 +533,10 @@ echo ""
echo "📋 다음 단계:" echo "📋 다음 단계:"
echo "" echo ""
echo " 1️⃣ iTerm2 실행 확인" echo " 1️⃣ iTerm2 실행 확인"
echo " → iTerm이 자동으로 열렸는지 확인" echo " → iTerm2 실행 후 새 창(⌘N) 열기"
echo "" echo ""
echo " 2️⃣ iTerm2에서 프로파일 설정 (필수 - 30초):" echo " 2️⃣ nad4-profile이 기본 프로파일로 자동 설정됨"
echo " ┌──────────────────────────────────────────┐" echo " → 기존 세션은 유지됩니다. 새 창(⌘N)에서 확인하세요."
echo " │ iTerm2 > Settings (⌘,) │"
echo " │ → Profiles 탭 │"
echo " │ → 왼쪽에서 'nad4-profile' 선택 │"
echo " │ → 하단 'Other Actions...' 클릭 │"
echo " │ → 'Set as Default' 선택 │"
echo " └──────────────────────────────────────────┘"
echo "" echo ""
echo " 3️⃣ 새 창 열어서 프로파일 확인 (⌘N)" echo " 3️⃣ 새 창 열어서 프로파일 확인 (⌘N)"
echo " ✓ 어두운 배경" echo " ✓ 어두운 배경"
@@ -653,6 +598,7 @@ echo ""
echo "💡 설치된 앱 목록:" echo "💡 설치된 앱 목록:"
echo " ✅ iTerm2 (터미널)" echo " ✅ iTerm2 (터미널)"
echo " ✅ cmux (AI agent 멀티 터미널)" echo " ✅ cmux (AI agent 멀티 터미널)"
echo " ✅ Orca (AI agent 개발 환경)"
echo " ✅ VSCode + Claude 확장" echo " ✅ VSCode + Claude 확장"
echo " ✅ Claude Code CLI" echo " ✅ Claude Code CLI"
echo " ✅ Codex CLI" echo " ✅ Codex CLI"