| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Project (project)
• Discuss (mail) • Employees (hr) |
| Lines of code | 752 |
| Technical Name |
systray_timesheet_timer |
| License | LGPL-3 |
| Website | https://armandi.es |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Project (project)
• Discuss (mail) • Employees (hr) |
| Lines of code | 752 |
| Technical Name |
systray_timesheet_timer |
| License | LGPL-3 |
| Website | https://armandi.es |
| Versions | 17.0 18.0 19.0 |
Systray Timesheet Timer
A persistent stopwatch in the Odoo systray that turns tracked time into timesheet entries in a single click.
What it does
Adds a small, always-visible stopwatch button to the Odoo top bar, next to notifications and chat. Click it, pick a project and a task (or create a new task on the fly), and press Start. The timer runs in the systray and follows you across every screen of Odoo. When you finish, press Stop and a timesheet line is created automatically against that task with the exact duration tracked.
Key features
- Always within reach. The stopwatch lives in the systray, so you do not need to navigate away from whatever you are doing in Odoo to start, pause, resume or stop tracking time.
- Pick a project & task fast. Project and task pickers come with a searchable autocomplete — type a few letters and pick the right one. You can also create a new task right from the panel without leaving the current view.
- Pause and resume. Got interrupted? Hit pause, deal with the interruption, then hit resume. Accumulated time is preserved as you toggle.
-
One-click stop & log. When you stop the timer, the module automatically creates a timesheet entry
(
account.analytic.line) on the selected task with the exact tracked duration converted to hours. - Cancel without trace. Changed your mind? Cancel discards the running timer entirely — no partial timesheet line is created.
- Optional description. Add a short note from the panel and it lands directly on the timesheet line as its description.
- Color-coded controls. Pause (blue), Resume (green) and Stop (red) live in the systray right next to the running timer, so common actions are one click away.
A quick walkthrough
Persistent across reloads & sessions
The timer state is stored server-side, per user, not in your browser. That means:
- Reloading the page keeps the timer running.
- Closing the browser, switching devices or logging out and back in keeps it running.
- The timer only pauses or stops on explicit user action.
The elapsed time is computed from wall-clock seconds, not from the open browser tab, so what you see is always the real time tracked.
Zero-friction setup
If you start a timer on a project that does not have Timesheets activated yet, the module activates them and creates the project's analytic account automatically. You do not need to touch project settings up-front — just start tracking time and the module wires everything for you.
Security
Each Odoo user only sees and controls their own timer. A record rule restricts the underlying model so users cannot
interfere with each other's running timers. The timesheet line is created with the current user's employee
(hr.employee), matching
the standard Odoo timesheet behavior.
Who is it for?
- Consultants, agencies and freelancers who bill or report by tracked hours.
- Internal teams that already use Odoo Projects and Timesheets and want a frictionless way to log time.
- Anyone who has been opening the Timesheets app, finding a row, typing hours by hand and saving — this module replaces that with one click in the systray.
Requirements
- Odoo 19.0 (Community or Enterprise).
- Dependencies (installed automatically):
web,project,hr_timesheet. - The user logging time must be linked to an
hr.employeerecord (standard Odoo timesheet requirement).
Support
Questions, bug reports, feature requests: write to odoo@armandi.es.
Please log in to comment on this module