Skip to content

Latest commit

ย 

History

History
162 lines (119 loc) ยท 3.14 KB

File metadata and controls

162 lines (119 loc) ยท 3.14 KB

focus

macOS ์Šคํฌ๋ฆฐ ํƒ€์ž„ ์ถ”์  ๋„๊ตฌ. ์•ฑ ์‚ฌ์šฉ ์‹œ๊ฐ„๊ณผ ์ฐฝ ์ œ๋ชฉ์„ ์ž๋™์œผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜

swift build -c release
cp .build/release/focus "$HOME/.local/bin/"
cp .build/release/focusd "$HOME/.local/bin/"

์‚ฌ์šฉ๋ฒ•

๋ฐ๋ชฌ ๊ด€๋ฆฌ

# launchd ์—์ด์ „ํŠธ ์„ค์น˜ (๋กœ๊ทธ์ธ ์‹œ ์ž๋™ ์‹œ์ž‘)
focus install

# launchd ์—์ด์ „ํŠธ ์ œ๊ฑฐ
focus uninstall

์‚ฌ์šฉ ์š”์•ฝ (๊ธฐ๋ณธ ์ปค๋งจ๋“œ)

# ์˜ค๋Š˜ ์•ฑ๋ณ„ ์š”์•ฝ
focus
focus summary

# ํŠน์ • ๋‚ ์งœ
focus summary 2026-01-29

# ๋‚ ์งœ ๋ฒ”์œ„
focus summary --from 2026-01-27 --to 2026-01-29

# ์ฐฝ๋ณ„ ์š”์•ฝ
focus summary --window

# JSON ์ถœ๋ ฅ
focus summary --json

์„ธ์…˜ ๋กœ๊ทธ

# ์ตœ๊ทผ ์„ธ์…˜
focus log

# ๊ฒ€์ƒ‰ (์•ฑ ์ด๋ฆ„ ๋˜๋Š” ์ฐฝ ์ œ๋ชฉ)
focus log "Safari"
focus log "GitHub"

# ์•ฑ ํ•„ํ„ฐ
focus log --app Safari

# ๋‚ ์งœ ํ•„ํ„ฐ
focus log --date 2026-01-29
focus log --from 2026-01-27 --to 2026-01-29

# ๊ฒฐ๊ณผ ์ˆ˜ ์ œํ•œ
focus log --limit 20

# ์ƒ์„ธ ์ถœ๋ ฅ
focus log --verbose

# JSON ์ถœ๋ ฅ
focus log --json

์„ธ์…˜ ์‚ญ์ œ

# dry run (์‚ญ์ œ ๋Œ€์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ)
focus delete --id 42
focus delete --app Safari
focus delete --date 2026-01-29
focus delete --from 2026-01-27 --to 2026-01-29
focus delete --all

# ์‹ค์ œ ์‚ญ์ œ (-y ๋˜๋Š” --yes)
focus delete --id 42 -y
focus delete --app Safari --date 2026-01-29 -y

๋ฐ์ดํ„ฐ ์ €์žฅ ์œ„์น˜

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: ~/.local/share/focus/focus.db
  • PID ํŒŒ์ผ: ~/.local/share/focus/focusd.pid
  • ๋กœ๊ทธ ํŒŒ์ผ: ~/.local/share/focus/focusd.log
  • ์„ค์ • ํŒŒ์ผ: ~/.config/focus/config.json

์ œ์™ธ ์„ค์ •

ํŠน์ • ์•ฑ์ด๋‚˜ ์œˆ๋„์šฐ๋ฅผ ์ถ”์ ์—์„œ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ฐ๋ชฌ ์žฌ์‹œ์ž‘ ์—†์ด ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

์„ค์ • ํŒŒ์ผ ์œ„์น˜

~/.config/focus/config.json

๊ธฐ๋ณธ๊ฐ’

์„ค์ • ํŒŒ์ผ์ด ์—†์œผ๋ฉด ๋‹ค์Œ ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค:

  • ์ œ์™ธ ์•ฑ: com.apple.loginwindow (์‹œ์Šคํ…œ ๋กœ๊ทธ์ธ ํ™”๋ฉด)
  • ์ œ์™ธ ์œˆ๋„์šฐ: ์—†์Œ

์„ค์ • ์˜ˆ์‹œ

{
  "excludedApps": [
    { "bundleId": "com.apple.loginwindow", "comment": "System login" },
    { "bundleId": "com.1password.1password", "comment": "Password manager" }
  ],
  "excludedWindows": [
    {
      "bundleId": "com.apple.Safari",
      "titlePattern": "*Private*",
      "comment": "Safari private browsing"
    },
    {
      "bundleId": "*",
      "titlePattern": "*password*",
      "caseSensitive": false,
      "comment": "Any password window"
    }
  ]
}

ํ•„๋“œ ์„ค๋ช…

excludedApps

  • bundleId: ์ œ์™ธํ•  ์•ฑ์˜ Bundle ID (ํ•„์ˆ˜)
  • comment: ์„ค๋ช… (์„ ํƒ)

excludedWindows

  • bundleId: ๋Œ€์ƒ ์•ฑ์˜ Bundle ID, *๋Š” ๋ชจ๋“  ์•ฑ (ํ•„์ˆ˜)
  • titlePattern: ์œˆ๋„์šฐ ์ œ๋ชฉ ํŒจํ„ด (ํ•„์ˆ˜)
    • *: 0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž
    • ?: ๋‹จ์ผ ๋ฌธ์ž
  • caseSensitive: ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—ฌ๋ถ€ (๊ธฐ๋ณธ๊ฐ’: true)
  • comment: ์„ค๋ช… (์„ ํƒ)

ํ•„์š” ๊ถŒํ•œ

  • ์•ฑ ์ „ํ™˜ ์ถ”์ : ๊ถŒํ•œ ๋ถˆํ•„์š”
  • ์ฐฝ ์ œ๋ชฉ ์ถ”์ : ์‹œ์Šคํ…œ ์„ค์ • > ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ณด์•ˆ > ์†์‰ฌ์šด ์‚ฌ์šฉ ๊ถŒํ•œ ํ•„์š”

๊ฐœ๋ฐœ

# ๋นŒ๋“œ
swift build

# ํ…Œ์ŠคํŠธ
swift test

# ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ
swift build -c release