самый результативный тайм менеджмент познанный мной в поисках решения проблемы - как бы не ебошить работу до 6 утра - disable for an hour в f.lux
по исходным требованиям тулза работает. проверял пол года.
@zhc JFYI, это не его велосипед, это http://arbtt.nomeata.de/ . Оно точно работает на линуксах и должно бы работать на винде. На маке (если у тебя таки мак) никто, видимо, запускать не пробовал, но если тебе будет интересно попробовать (возможно, придётся поставить Haskell Platform и выполнить четыре команды, чтобы скачать сорцы — сконфигурить — собрать), я вызываюсь помочь.
@minoru у меня таки не мак, на основном ноутбуке арч, с которого я пока не знаю куда валить ибо системд, и венда на десктопе для ковыряния в ксп и прочих вендоонли прогах.
основная проблема - околонулевое свободное время, изза моей жуткой мизантропии, мегалономании и технофетещизма, продуцирующих страсть делать все критичные и важные вещи исключительно самостоятельно - от разводки труб, переварки стояков, установки кондишена, еботни с тнями и личинками, проектированию велорам и проч и проч. и это не касательно основной трудовой деятельности.
алсо - спасиб.
@komar Да.
Оно работает очень просто: с заданной периодичностью пишет в лог перечень всех твоих открытых окон напару с их заголовками. Всё. Потом ты запускаешь arbtt-stats, он применяет к семплам из лога правила, которые ты прописал в ~/.arbtt/categorize.cfg, и выдаёт резульат.
@komar $time >= 8:00 && $time < 12:00 ==> tag time-of-day:morning,
$time >= 14:00 && $time < 18:00 ==> tag time-of-day:afternoon,
Ну еб твою мать.
Кто там хаскель разумеет — расскажите, как оно информацию об открытых окнах и десктопах собирает и о простое, да я свое напишу.
@komar Я и сам блюю и от конфига, и от кода (соснул с тем, чтобы сделать -stats параллельным, ибо там одна большущая левая свёртка). Но оно работает, так что пофигу.
@minoru Итак, интересующая тебя функциональность реализована в src/Capture/X11. Далее пошаговое объяснение с командами xprop, которые делают (примерно) то же самое:
Вытягивается номер текущего десктопа (xprop -root | egrep '^_NET_CURRENT_DESKTOP')
Вытягиваются имена всех десктопов (xprop -root | egrep '^_NET_DESKTOP_NAMES')
В семпл пишется имя текущего активного десктопа.
Вытягивается список открытых окон (xprop -root | egrep '^_NET_CLIENT_LIST').
активно ли это окно на данный момент (тут какая-то магия, которую мне лень разбирать, тебе должно хватить xprop -id 0x1200005 | egrep 'Client accepts input or input focus: True' ; echo $? — 0 если в фокусе, в противном случае 1)
Время простоя arbtt-capture спрашивает у xscreensaver. Там какая-то магия, если интересно, читай src/Graphics/X11/XScreenSaver.hsc. Оно как-то дёргает xscreensaver, но я не вникал, как. Локально у меня его (xscreensaver'а) нет, потестить не могу, но судя по нагугленному ману, тебе понадобится xscreensaver-command -time (обязательно прочти ман по поводу этой опции, там caveat!)
@minoru Итак, интересующая тебя функциональность реализована в src/Capture/X11. Далее пошаговое объяснение с командами
xprop
, которые делают (примерно) то же самое:xprop -root | egrep '^_NET_CURRENT_DESKTOP'
)xprop -root | egrep '^_NET_DESKTOP_NAMES'
)xprop -root | egrep '^_NET_CLIENT_LIST'
).xprop -id 0x1200005 | egrep '^WM_NAME'
)xprop -id 0x1200005 | egrep '^WM_COMMAND'
)xprop -id 0x1200005 | egrep 'Client accepts input or input focus: True' ; echo $?
— 0 если в фокусе, в противном случае 1)src/Graphics/X11/XScreenSaver.hsc
. Оно как-то дёргает xscreensaver, но я не вникал, как. Локально у меня его (xscreensaver'а) нет, потестить не могу, но судя по нагугленному ману, тебе понадобитсяxscreensaver-command -time
(обязательно прочти ман по поводу этой опции, там caveat!)Как-то так.