PC 작업 시간을 자동으로 기록하는 Windows 트레이 앱.
키보드·마우스 입력 감지 → 24시간 원형 시계 + 월간 캘린더로 시각화.
제작: Jin (AI Agent) · Utobit
버전: 1.0.1
라이선스: MIT
Microsoft Store: PC_WorkTimer
| 기능 | 설명 |
|---|---|
| 자동 기록 | 입력 감지 시 즉시 시작, 10분 무입력 시 자동 종료 |
| 월간 캘린더 | 7열 × 날짜별 원형 시계 히트맵 |
| 일간 상세 | 24시간 대형 시계 + 기록 구간 목록 |
| 연간 히트맵 | 1년 전체 작업량 색상 표시 (펼치기 시 3개년) |
| 3개월 뷰 | 펼치기/접기로 전환 |
| 구간 병합 | 인접 구간 클릭 → 하나로 합치기 |
| 메모 | 날짜별 메모 저장 |
| 다크/라이트 모드 | 테마 전환 |
| 기록 내보내기 | 텍스트 파일 내보내기 (Notion 등 바로 붙여넣기) |
| 커스텀 아이콘 | 트레이·시계 아이콘 교체 |
| 시계 배경 이미지 | 커스텀 이미지 설정 |
| 체크포인트 | 강제 종료 시 60초 단위 자동 복구 |
X.Y.Z.W
│ │ │ └─ 테스트 버전 (1,2,3... → 0으로 확정)
│ │ └─── 배포 버전업 (기능 수정/버그픽스)
│ └───── 탭·기능 추가 수준
└─────── 메이저
배포 버전 마지막 자리 = 0 (예: 1.0.2.0)
%LOCALAPPDATA%\LinaAI\WorkTimer\
work_log.json ← 전체 기록 (MSIX 재설치해도 유지됨)
checkpoint.json ← 강제종료 복구용 (재시작 시 자동 삭제)
settings.json ← 설정
backups/ ← 자동 백업
Python 3.12
PyQt6
PyInstaller 6.x
Windows SDK 10.0.22621 (makeappx, signtool)
설치:
pip install PyQt6
python worktimer.pypyinstaller WorkTimer.spec --noconfirm
# 결과물: dist/WorkTimer/.\build_msix.ps1
# 결과물: dist/WorkTimer.msix
# Microsoft Store 제출용: MSStore/WorkTimer.msixGet-AppxPackage -Name "utobit.PCWorkTimer" | Remove-AppxPackage
Add-AppxPackage -Path dist\WorkTimer.msix
# 실행
Start-Process "shell:AppsFolder\utobit.PCWorkTimer_z949ye19fere4!WorkTimer"재실행 시 반드시 기존 프로세스 먼저 종료 (mutex 때문):
taskkill /F /IM pythonw.exe; taskkill /F /IM WorkTimer.exe
worktimer.py ← 단일 파일 (~1900줄)
├── PALETTE_LIGHT/DARK 팔레트 상수
├── LANG_KO / LANG_EN 다국어 문자열
├── WorkLog JSON 로그 저장/로드
├── ActivityTracker 백그라운드 입력 감지 스레드
└── WorkTimerApp PyQt6 메인 앱
├── CalendarWidget 월간/다중월 캘린더
├── ClockWidget 24시간 원형 시계
├── RightPanel 기록 구간·메모·총시간
├── YearWidget 연간 히트맵
└── SettingsDialog 설정창 (아이콘·색상·배경)
msix/
AppxManifest.xml ← 버전·Publisher·아이콘 경로
Assets/
Square44x44Logo.png
Square150x150Logo.png
Wide310x150Logo.png
StoreLogo.png
Package Identity:
- Name:
utobit.PCWorkTimer - Publisher:
CN=4BF7C5DE-0E2A-457D-A549-A5D4AF5B008E - Family:
utobit.PCWorkTimer_z949ye19fere4
버전 변경 시: AppxManifest.xml Version + worktimer.py VERSION 동시 수정
1. worktimer.py: VERSION = "1.0.X"
2. AppxManifest.xml: Version="1.0.X.0"
3. pyinstaller WorkTimer.spec --noconfirm
4. .\build_msix.ps1
5. Copy-Item dist\WorkTimer.msix MSStore\WorkTimer.msix -Force
6. git add -A && git commit -m "release: WorkTimer v1.0.X"
7. git push
8. Microsoft Store Partner Center에 MSStore\WorkTimer.msix 업로드
- Windows 전용 (
ctypes.windll사용) - 멀티모니터 DPI 스케일링 미대응