FindFocus — приложение против прокрастинации

FindFocus — приложение против прокрастинации

11 апреля 2017

История Ивана Кузнецова прекрасно демонстрирует работу программы.

04 августа 2017

Иван Кузнецов — писатель-фрилансер с большим стажем и высоким рейтом. Недавно он начал писать занимательную статью об археологических раскопках в Южной Африке. Работая, Иван получил сообщение от друга в мессенджере Facebook, прочитал, ответил и, оставшись на вкладке «Мои видеозаписи», стал смотреть видео с котятами. Незаметно прошло 4 часа, в итоге срок сдачи был сорван.

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

FindFocus иерархический фильтр

С указанными настройками FindFocus разрешит Ивану посетить страницу facebook.com/findfocus, но все остальные страницы Facebook будут для него закрыты. Иван также сможет группировать приложения и сайты в профили.

FindFocus график
FindFocus настройки

05 августа 2017

Иван проснулся в 7 утра, включил компьютер с установленным FindFocus, и начал писать новые статьи для блога заказчика. Он трудился целый день, забыл пообедать и лег спать только в 2 часа ночи. Проснувшись на следующее утро, Иван не смог написать ни строчки, — он был полностью истощен. А в почте обнаружилось гневное письмо от заказчика, который нашел 103 ошибки в полученном вчера тексте.

Запланированные перерывы помогли бы писателю преодолеть тягу к творчеству и вынудили бы пойти поесть, сделать зарядку или немного поспать. В определенные промежутки времени FindFocus полностью блокирует компьютер, экран чернеет, и единственное, что остается Ивану — встать из-за стола и пойти наслаждаться жизнью: у него есть на это около 5 минут.

FindFocus пауза

04 сентября 2017

Иван уже месяц использует FindFocus. Он настроил профили и распределил их в соответствии с рабочим графиком. Он трудился с упоением до рокового вечера 4 сентября. Начало осени было дождливым, и у Ивана не было никакого настроения писать. Он хотел весь день смотреть видео с котятами, поэтому решил отключить блокировки и профили. К счастью, в FindFocus все настройки имеют несколько видов защиты: настраиваемый «фокусировочный текст», который необходимо набрать без единой ошибки, и режим «Форт Нокс», запрещающий любые правки настроек и профилей в определенный период времени. После 18 безуспешных попыток ввести текст на картинке ниже, Иван понял, что его работа не так плоха, а маленькие милые котята могут подождать профиля «Время котят».

FindFocus сложный текст

Подводя итог истории Ивана, можно выделить основные функции FindFocus.

01 Построение идеального распорядка дня с помощью настраиваемых профилей разрешенных и запрещенных приложений и сайтов.
02 Блокирование сайтов, перенаправление пользователя на мотивационные цитаты.
03 Блокирование приложений путем закрытия запрещенных приложений.
04 Периодические перерывы, полностью блокирующие компьютер.
05 Настраиваемые режимы защиты, запрещающие пользователю свободно отключать FindFocus.

Реализация

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

Приложение написано на C++/Objective-C с использованием фреймворка Qt. Пользовательский интерфейс написан на QML. Выбор технологий оправдан тем, что многочисленные настройки делают пользовательский интерфейс приложения очень емким. Указанные технологии позволили реализовать различные элементы управления: таблицы с настраиваемыми полями, счетчики и многое другое. Лицензирование и система обновлений основываются на платформе Sparkle.

Поздние версии приложения не требуют Accessibility API или прав администратора при установке и работе, сохраняя способность жестко контролировать активность пользователя с помощью средств автоматизации вместо системных и низкоуровневых библиотек.

Благодаря фреймворку Qt большая часть приложения является кроссплатформенной, что позволяет относительно легко портировать приложение на другие платформы, изолируя зависящие от платформы части кода при помощи методологии Pimple.