FocuS

Rating: 
5
Your rating: None Average: 5 (1 vote)

FocuS — Focus & Meditation Timer for SailfishOS

FocuS is a native Sailfish OS timer for meditation, focus sessions, and interval training. No internet required — all data stays local.

Features

- Custom timers with multiple phases (meditation, pause, etc.)
- Phase sounds (6 sounds + silent option)
- Repetitions (1–100×) for interval training
- Live Cover with countdown & play/pause/stop
- History & stats: calendar view, daily/monthly summaries
- Android import from MeditationTimer (ZIP, merge/replace)
- 100% offline — no network, no accounts, all data local

Tech Highlights

- Pure Rust core (no Qt) — fully testable with cargo test
- Clock-free core — time injected, active_seconds as single truth
- MVVM + ViewState — single rebuild per tick/command
- Atomic persistence (tmp+rename), JSON/JSONL, timer versioning
- Android import (from https://play.google.com/store/apps/details?id=com.vanniktech.meditationt...
- Green-IT: clock-free core, 1s polling, chrono→time, atomic writes

License: GPL-3.0-or-later | Source: Codeberg (https://codeberg.org/koleesch/focus)

Created with AI assistance.

Screenshots: 
Application versions: 
AttachmentSizeDate
File focus-1.0.0-1.aarch64.rpm656.55 KB12/09/2026 - 15:39
File focus-1.0.0-1.armv7hl.rpm670.34 KB12/09/2026 - 15:39
File focus-1.0.1-1.aarch64.rpm656.38 KB13/09/2026 - 12:31
File focus-1.0.1-1.armv7hl.rpm670.77 KB13/09/2026 - 12:31
File focus-1.0.2-1.armv7hl.rpm672.17 KB15/09/2026 - 15:37
File focus-1.0.2-1.aarch64.rpm662.07 KB15/09/2026 - 15:37
File focus-1.0.3-1.aarch64.rpm662.08 KB17/09/2026 - 10:53
File focus-1.0.3-1.armv7hl.rpm675.98 KB17/09/2026 - 10:53
Changelog: 

- Fix: Persist direct mutations (create/delete/duplicate/reset) immediately
- Fix: SessionSaved event removed, Finished(Session) used for session persistence
- Refactor: with_force_save for direct mutators, with_maybe_save for editor flow
- Fix: set_name and set_repeat_count now buffer via editor (commit_config)

Comments

p1rat's picture

great app, clean and simple for intervall training.

would be great, if possible to rename phases and have personal sounds.

koleesch's picture

Currently phases don’t have names. Could you explain your use case for naming them?

Personal sounds is a feature I’d also like to implement.