Agentero
에이전트를 연결해 로컬 Vault에 연구 컨텍스트를 보관·Zotero에서 무결점 이동·읽고 이해·재활용
Tomatick은 하나의 아이콘에 타이머·스톱워치·알람·뽀도로를 결합하고 실행 기록을 타임스탬프와 함께 저장합니다
A menu bar timer, stopwatch, alarm, and pomodoro in one icon, with a timestamped history of every run. A single Go binary. Open source, MIT, no tracking.
생산성Go · AstroGitHub @MichalAFerber온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Go rewrite of Tomatick — cross-platform (macOS, Windows, Linux) menu bar / system tray timer, stopwatch, alarm & pomodoro with timestamped history.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Class A (OSS/MIT). A menu bar / system tray timer, stopwatch, alarm and pomodoro — all in one icon, with a timestamped history of everything you run.
This is a Go rewrite of the original macOS-only Python
Tomatick, built so a single codebase
runs on macOS, Windows, and Linux. Config and history use the same JSON /
SQLite schema, so a config.json from the Python app loads here.
25m, 1h30m, 90s, 2:30), with a
live M:SS countdown in the tray (menu-bar title on macOS; tooltip + menu on
Windows). Pause / Reset / Stop.Everything is driven from the tray icon's menu: start a session → it appears in the menu → click its item to pause/stop it (or dismiss a ringing alarm).
Requires Go 1.25+. On Linux you also need the usual Fyne OpenGL/X11 headers
(libgl1-mesa-dev, xorg-dev). On Windows, a gcc (MinGW) is required because
Fyne uses CGO.
git clone https://github.com/MichalAFerber/tomatick2.git
cd tomatick2
go test ./...
go run ./cmd/tomatick
A tomato icon appears in the menu bar (macOS), notification area (Windows), or system tray (Linux). Click it to open the menu.
On Linux, a tray host that speaks StatusNotifierItem / AppIndicator is required (GNOME needs an extension; KDE and most other desktops work out of the box).
The timing, scheduling, history, and settings logic has no GUI dependencies:
go test ./internal/sessions ./internal/alarms ./internal/history ./internal/settings ./internal/core
go test ./... also compiles the UI packages (needs CGO + platform GUI libs).
# current OS
go build -o tomatick ./cmd/tomatick
# packaged bundles (run on the target OS, or use fyne-cross)
make package-mac # Tomatick.app, Dock-hidden
make package-windows # Tomatick.exe
make package-linux # Tomatick.tar.xz
fyne package must be installed. Pin it to the fyne.io/fyne/v2 version in
go.mod — the packager decides the bundle layout, so a floating @latest
changes it under you between releases. The release workflow pins the same
version:
go install fyne.io/fyne/v2/cmd/[email protected]
fyne.io/fyne/v2/cmd/fyne is deprecated upstream in favor of
fyne.io/tools/cmd/fyne (the old binary still works and prints a migration
notice on every run). Stay on the path above for now: fyne.io/tools is a
separate module with its own version numbers, not locked to fyne.io/fyne/v2,
so swapping it in here — and in .github/workflows/release.yml — needs its
own verification that packaging output doesn't change, not a drive-by edit.
On macOS the bundle is unsigned; on first launch right-click → Open to get past Gatekeeper, or:
xattr -dr com.apple.quarantine /Applications/Tomatick.app
Tomatick is a tray app — no Dock icon on macOS (runtime
LSUIElement / accessory policy). Look for the tomato in the menu bar. To start
it at login, use the icon's menu → Settings → Launch at login.
| OS | Directory |
|---|---|
| macOS | ~/Library/Application Support/Tomatick/ |
| Windows | %AppData%\Tomatick\ |
| Linux | ~/.local/share/Tomatick/ |
config.json # pomodoro settings, alarms, sound, launch-at-login
history.db # SQLite event history
Honor TOMATICK_SUPPORT_DIR to redirect both files (used by tests).
| Capability | macOS | Windows | Linux |
|---|---|---|---|
| Tray title text | yes (next to the icon) | tooltip + menu | title where the tray supports it |
| Sounds | /System/Library/Sounds | %WINDIR%\Media | bundled ding + paplay/aplay |
| Keep awake | caffeinate | SetThreadExecutionState | systemd-inhibit |
| Launch at login | LaunchAgent us.tomatick | HKCU Run key | ~/.config/autostart/ |
| Focus / DND | Shortcuts app, by name | ignored | ignored |
| Global hotkey | Accessibility permission | RegisterHotKey | X11 grab |
cmd/tomatick/ # main
internal/
sessions/ # Timer / Stopwatch / Pomodoro (pure logic)
alarms/ # Alarm model + scheduling (pure logic)
history/ # SQLite history store
settings/ # config.json load/save
core/ # tick, wiring, no GUI
ui/ # Fyne tray + settings windows
sound/ notify/ keepawake/ autostart/ hotkey/ focus/
assets/ # tomato art, bundled ding.wav
The product site lives at tomatick.us (source still in the Python repo).
| Component | License | Used for |
|---|---|---|
| Fyne | BSD-3-Clause | windows, dialogs, system tray |
| fyne.io/systray | Apache-2.0 | tray title / icon |
| modernc.org/sqlite | BSD-3-Clause | history database (pure Go) |
| golang.design/x/hotkey | MIT | global hotkey |
The menu-bar tomato icon (red / white / black themes) and the app icon are
original artwork, generated by scripts/make_icon.py.
Released under the MIT License — © 2026 Michal Ferber.