← На главную

Трекинг времени в ActivityWatch

Октябрь 2026 · 9 мин чтения

Превью статьи

Ссылка на GitHub проекта


Когда ты работаешь весь день на удалёнке, часто возникает необходимость понять, сколько времени ты потратил на ту или иную задачу. Рационально ли ты проводишь время за компьютером или зависаешь в соцсетях, не замечая этого?

Достаточно долго я пользовался исключительно программой ManicTime. И бесплатного варианта подписки мне всегда хватало. Вбил фильтр по программе, в которой ты открывал удалённый рабочий стол, — получил общее время, проведённое за работой.

Почему захотелось изменений

Вопрос: Если ManicTime устраивал, зачем что-то менять?

Ответ: В окне ManicTime я всегда видел пустую графу тегов и понимал, что они могут упростить подсчёт времени. Но в бесплатной версии их приходилось ставить руками на таймлайне за конкретный день. Автоматизации уже требовали платной версии, а мне хотелось настроить свои правила распределения.

Вопрос: А зачем теги, если и без них подсчёт был несложный?

Ответ: Пока работа идёт на удалённом сервере, достаточно отфильтровать программу для подключения — вот и все рабочее время. Но при локальной работе один проект дробится на кучу софта: рабочие чаты, пакеты для 2D и 3D, документы, ссылки на Фигму и облачные рендерфермы. Тут уже хочется собрать все эти записи в один проект, а не считать каждую программу отдельно.

Тогда-то я и решил попробовать ActivityWatch, который уже видел раньше, но на тот момент не придал ему значения.

ActivityWatch автоматически записывает, какие приложения и окна я использую, точно так же, как и ManicTime. Но готовый интерфейс не совсем подходил под мои задачи, поэтому я сделал поверх него собственную панель — ActivityWatch Projects. ActivityWatch собирает записи, а моя панель распределяет их по проектам и типам активности и показывает результаты в удобном для меня виде.

Правила работают и с уже записанной историей: настроил один раз — получил распределение времени за прошлые дни в пределах заданных дат. Не нужно размечать каждый день заново. При этом данные остаются локально на моём компьютере.

Сравнение интерфейсов
Для сравнения оба интерфейса выглядят полно и информативно. Но на первый взгляд не очень понятны

А в чём выгода?

Главный плюс, который я получил при переходе на новую систему, — я могу полностью контролировать все варианты фильтрации данных. И я могу быстро и точно настроить все системы группировок. А их я сделал две — независимые и параллельные.

Особенность этих двух параллельных веток — они не влияют друг на друга и подсчитываются независимо. Один и тот же отрезок времени может относиться только к одному проекту, но типовых тегов может быть несколько. Если на него претендуют сразу два проекта, он попадает на проверку и не прибавляется к обоим.

Например, час в рабочем чате относится и к конкретному проекту, и к типу «Мессенджеры». Так я вижу, сколько времени ушло на проект и сколько — на общение внутри него. При этом час остаётся одним часом: две классификации не удваивают общее время.

А также, поскольку проекты стали очень чётко отслеживаться, я могу все тайминги проекта получить практически в один клик мыши.

Немного о графиках

Весь интерфейс разбит на два основных блока.

Верхняя часть — для работы с базой записей. Она сделана для создания групп или тегов, а также для того, чтобы проще было находить, что ещё не определяется в системе ваших типов записей.

Верхние графики
Тут собрано все, что можно редактировать и группировать

Нижняя — познавательная. График, в котором можно быстро оценить основные человеко-часы и понять, что ты делаешь не так в своей жизни. Ну или наоборот — всё так.

Нижние графики
А в этом графике можно любоваться результатами настроенной системы

Реализация

Активность записывается автоматически, но программа не знает, какие окна, сайты и файлы относятся к моим проектам. Поэтому сначала нужно задать правила распределения. Для этого в интерфейсе есть несколько вариантов настройки — от общего к частному.

Примерный порядок действий

Что и для чего нужно

Пройдёмся по экрану сверху вниз: сначала общая картина дня, затем проекты и типы активности, а внизу — нагрузка за большой период.

Период и итоговые часы

В самом верху выбирается день, неделя, месяц или свой диапазон дат. Все панели под ним показывают данные за этот период. Четыре числа сразу отвечают на вопросы: сколько времени ушло на рабочие проекты, сколько ещё не распределено, сколько требует проверки и сколько относится к занятиям вне рабочих проектов.

Распределение времени и таймлайн

Распределение активного времени и таймлайн дня
Нажимать на Not assigned можно на обеих строках. В верхнем варианте будет список за весь период, а в нижнем — за этот конкретный выбранный маленький кусочек

Active-time breakdown показывает долю каждой категории в активном времени. Your timeline показывает, когда именно я ей занимался. Цвета одинаковые в обеих панелях, поэтому легко сопоставить общую долю и отдельные отрезки дня. Тёмные промежутки на таймлайне — время без активности, без записей или ещё не наступившее.

Что ещё не распределено

Список активности без проекта

Нажатие на Not assigned открывает записи, которым пока не нашлось проекта. Самые длинные можно поднять наверх и разобрать первыми. Прямо из строки можно добавить правило для проекта (+ Project), правило для типа активности (+ Type) или назначить время вручную (Assign).

Записи можно фильтровать, а также включать сортировку двух типов: от самых продолжительных или от самых новых.

Добавление правила из конкретной записи

Например, выбираю проект и характерное слово из заголовка окна. До сохранения уже видно, какие записи попадут под правило и как изменятся часы. Такое правило подхватит и подходящие записи из прошлых дней в пределах заданных дат.

Карточки проектов

Карточки проектов с подсчитанным временем

Каждая карточка — отдельный проект: общее время, сколько из него пришлось на приложения и браузер, и список найденной активности. Explain time помогает понять, откуда взялись часы, Edit открывает настройки, а Export hours — выгрузку отчёта.

Настройки проекта и автоматические правила

В настройках задаются название, цвет, категория и правила. Можно искать по заголовку окна, адресу сайта или данным редактора, ограничивать правило конкретной программой и датами. Preview matches позволяет проверить совпадения до сохранения.

Выгрузка часов проекта

В отчёте выбираются период, строки и нужные столбцы. Самый простой вариант — дата и часы проекта за каждый день. Результат можно скачать или скопировать в таблицу, а удачную настройку сохранить для следующих отчётов.

Типы активности

Типы активности и их доля во времени

Эта панель отвечает на другой вопрос: не «над каким проектом я работал», а «чем занимался». Здесь отдельно считаются мессенджеры, видео, работа с ЛЛМ и любые свои типы. В списке Show activity within можно выбрать все активное время или конкретную категорию и посмотреть, например, сколько общения было внутри рабочего проекта. Типы могут пересекаться, поэтому их проценты не обязательно складываются в 100%.

Ручные назначения

Под карточками находится свёрнутый список Manual assignments. Здесь хранятся отрезки, которым я назначил проект вручную. Это удобно для разовых случаев, когда создавать отдельное правило нет смысла. Ручное назначение имеет приоритет над автоматическим.

Нагрузка по дням

График нагрузки за выбранный период

Внизу — Daily workload: сколько часов набралось в каждый день и на что они ушли. У графика свой период, независимый от верхних панелей. Можно выбрать один проект или все сразу, включать нужные линии и сравнивать нагрузку с дневной целью.

Например, по проекту OKKO (большой зелёный всплеск в правой части графика) видно, что выходные были рабочими. Нагрузка кардинально не менялась в середине проекта, но вот общения становилось явно больше ближе к сдаче.

Общий тренд за семь дней помогает увидеть за отдельными скачками общую картину нагрузок.

Нажатие на день открывает его в верхнем отчёте. Можно выделить несколько дней и разобрать весь отрезок. Так от общего графика я быстро перехожу к конкретным записям, которые хочется проверить.


Проект ещё развиваю: нахожу неточности, исправляю их и добавляю недостающий функционал. Рад буду, если кому-то пригодится!

Ссылка на GitHub проекта