Skip to content

Add Pomodoro timer to dashboard#1457

Open
Mentigen wants to merge 6 commits into
caelestia-dots:mainfrom
Mentigen:feat/pomodoro-dashboard
Open

Add Pomodoro timer to dashboard#1457
Mentigen wants to merge 6 commits into
caelestia-dots:mainfrom
Mentigen:feat/pomodoro-dashboard

Conversation

@Mentigen
Copy link
Copy Markdown

@Mentigen Mentigen commented May 6, 2026

Summary

Adds a Pomodoro timer as a new tab in the dashboard.

  • Circular progress ring with drag-to-seek support
  • Work / short break / long break phases with a dot strip indicator
  • Play/pause, skip, and reset controls
  • Idle mode tracking after a break ends
  • Settings section: configurable durations, long break toggle, sound notifications with volume control
  • Persistent cycle and pomodoro counters

Test plan

  • Open dashboard and switch to the Pomodoro tab
  • Start, pause, and skip phases — ring and dot strip update correctly
  • Drag the ring to seek within the current phase
  • Open Settings, adjust durations via SpinBox (keyboard input works)
  • Toggle long break and sound, verify behaviour
  • Let a phase complete — sound plays, idle mode activates
  • Verify Media and other tabs are unaffected

Mentigen added 2 commits May 6, 2026 21:28
Adds a self-contained Pomodoro timer to the dashboard:
- PomodoroService singleton (services/PomodoroService.qml) manages
  timer state: 3-work/1-long-break cycle (6 phases), idle mode after
  breaks, animated ring progress, sound via mpv
- Pomodoro widget (modules/dashboard/Pomodoro.qml) shows a circular
  progress ring with drag-to-seek, phase dot strip, play/pause/prev/next
  controls, and a settings section (work/break/long-break durations,
  sound enable + volume)
- Content.qml: add Pomodoro tab between Media and Performance
SpinBox inputs in the Pomodoro settings panel were not receiving keyboard
input because needsKeyboard only tracked the Media tab. Now Pomodoro
exposes needsKeyboard tied to its CollapsibleSection, and Content.qml
propagates it up the chain so WlrLayershell requests keyboard focus.
@Mentigen Mentigen changed the title fix(dashboard): grant keyboard focus when Pomodoro settings are expanded Fix keyboard input not working in Pomodoro settings May 6, 2026
- Add pragma ComponentBehavior: Bound
- Qualify all svc accesses as root.svc in child elements
- Expand inline arrow functions to multi-line format with semicolons
- Expand inline Behavior block
@Mentigen Mentigen changed the title Fix keyboard input not working in Pomodoro settings Add Pomodoro timer to dashboard May 6, 2026
@sufficientpast
Copy link
Copy Markdown

this fits more likely to be a plugin imo #1384

@Mentigen
Copy link
Copy Markdown
Author

Mentigen commented May 7, 2026

Thanks for the pointer to #1384! I agree that a plugin system would be the ideal home for niche features like this. However, #1384 is still a feature request with no implementation yet - the dashboard tabs injection point listed there doesn't exist in code. There's no plugin mechanism to use right now.

In the meantime, this PR follows the exact same pattern as existing dashboard tabs, so the integration is minimal and self-contained. If the plugin system lands in the future, the Pomodoro module could be extracted into a standalone plugin without touching core.

Happy to hear the maintainers' view on whether to hold off or proceed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants