Трекинг времени в ActivityWatch
Когда ты работаешь весь день на удалёнке, часто возникает необходимость понять, сколько времени ты потратил на ту или иную задачу. Рационально ли ты проводишь время за компьютером или зависаешь в соцсетях, не замечая этого?
Достаточно долго я пользовался исключительно программой ManicTime. И бесплатного варианта подписки мне всегда хватало. Вбил фильтр по программе, в которой ты открывал удалённый рабочий стол, — получил общее время, проведённое за работой.
Почему захотелось изменений
Вопрос: Если ManicTime устраивал, зачем что-то менять?
Ответ: В окне ManicTime я всегда видел пустую графу тегов и понимал, что они могут упростить подсчёт времени. Но в бесплатной версии их приходилось ставить руками на таймлайне за конкретный день. Автоматизации уже требовали платной версии, а мне хотелось настроить свои правила распределения.
Вопрос: А зачем теги, если и без них подсчёт был несложный?
Ответ: Пока работа идёт на удалённом сервере, достаточно отфильтровать программу для подключения — вот и все рабочее время. Но при локальной работе один проект дробится на кучу софта: рабочие чаты, пакеты для 2D и 3D, документы, ссылки на Фигму и облачные рендерфермы. Тут уже хочется собрать все эти записи в один проект, а не считать каждую программу отдельно.
Тогда-то я и решил попробовать ActivityWatch, который уже видел раньше, но на тот момент не придал ему значения.
ActivityWatch автоматически записывает, какие приложения и окна я использую, точно так же, как и ManicTime. Но готовый интерфейс не совсем подходил под мои задачи, поэтому я сделал поверх него собственную панель — ActivityWatch Projects. ActivityWatch собирает записи, а моя панель распределяет их по проектам и типам активности и показывает результаты в удобном для меня виде.
Правила работают и с уже записанной историей: настроил один раз — получил распределение времени за прошлые дни в пределах заданных дат. Не нужно размечать каждый день заново. При этом данные остаются локально на моём компьютере.
А в чём выгода?
Главный плюс, который я получил при переходе на новую систему, — я могу полностью контролировать все варианты фильтрации данных. И я могу быстро и точно настроить все системы группировок. А их я сделал две — независимые и параллельные.
- По проектам. Это или оплачиваемые проекты — фриланс и разные задачи, — или отдельные категории для личных занятий. Вместе с ещё не распределёнными записями и временем, которое требует проверки, они складываются во все записанное активное время. Простой за компьютером в подсчёт не входит.
- Типовая. Это подсчёт времени, которое уходит на разные типы времяпрепровождения, будь то листание ТикТока или общение с ЛЛМ. Эти теги не влияют на подсчёты времени проектов, и каждый живёт сам по себе.
Особенность этих двух параллельных веток — они не влияют друг на друга и подсчитываются независимо. Один и тот же отрезок времени может относиться только к одному проекту, но типовых тегов может быть несколько. Если на него претендуют сразу два проекта, он попадает на проверку и не прибавляется к обоим.
Например, час в рабочем чате относится и к конкретному проекту, и к типу «Мессенджеры». Так я вижу, сколько времени ушло на проект и сколько — на общение внутри него. При этом час остаётся одним часом: две классификации не удваивают общее время.
А также, поскольку проекты стали очень чётко отслеживаться, я могу все тайминги проекта получить практически в один клик мыши.
Немного о графиках
Весь интерфейс разбит на два основных блока.
Верхняя часть — для работы с базой записей. Она сделана для создания групп или тегов, а также для того, чтобы проще было находить, что ещё не определяется в системе ваших типов записей.
Нижняя — познавательная. График, в котором можно быстро оценить основные человеко-часы и понять, что ты делаешь не так в своей жизни. Ну или наоборот — всё так.
Реализация
Активность записывается автоматически, но программа не знает, какие окна, сайты и файлы относятся к моим проектам. Поэтому сначала нужно задать правила распределения. Для этого в интерфейсе есть несколько вариантов настройки — от общего к частному.
Примерный порядок действий
- Создаётся новая сущность — проект или тег. Изначально он пуст и никак не влияет на подсчёты.
- Если вы уже некоторое время работали над проектом, вы уже точно знаете, в каких каталогах ведётся работа, какие имена у файлов и как называются программы. Вот это и будет той информацией, которая используется для категоризации записей.
- Для каждой сущности можно выбрать даты начала и окончания. Это сделано для того, чтобы можно было указывать софт «крупными мазками». Например, в течение этой недели я использовал Krita только для этого проекта. Значит, можно указать просто эту программу, и в рамках этих дат она будет учитываться как проектная.
- Далее вводятся заголовки, которые относятся к нужному проекту или тегу. Можно упрощённо задавать конкретные названия. А можно использовать регулярные выражения (с предпросмотром результата этого выражения).
- После крупных общих правил на любую запись можно назначить проект или тег, даже если она не попала в эти правила.
Что и для чего нужно
Пройдёмся по экрану сверху вниз: сначала общая картина дня, затем проекты и типы активности, а внизу — нагрузка за большой период.
Период и итоговые часы
В самом верху выбирается день, неделя, месяц или свой диапазон дат. Все панели под ним показывают данные за этот период. Четыре числа сразу отвечают на вопросы: сколько времени ушло на рабочие проекты, сколько ещё не распределено, сколько требует проверки и сколько относится к занятиям вне рабочих проектов.
Распределение времени и таймлайн
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 (большой зелёный всплеск в правой части графика) видно, что выходные были рабочими. Нагрузка кардинально не менялась в середине проекта, но вот общения становилось явно больше ближе к сдаче.
Общий тренд за семь дней помогает увидеть за отдельными скачками общую картину нагрузок.
Нажатие на день открывает его в верхнем отчёте. Можно выделить несколько дней и разобрать весь отрезок. Так от общего графика я быстро перехожу к конкретным записям, которые хочется проверить.
Проект ещё развиваю: нахожу неточности, исправляю их и добавляю недостающий функционал. Рад буду, если кому-то пригодится!