I have this in a cron: * 08-23 * * * ~/.local/bin/with-i3 '~/.local/bin/record-active-window'
this is record-active-window: # set LOGFILE to whatever place you want to record things.
echo "DATE = $(date +%s 2>&1)" >> $LOGFILE
echo "IDLE = $(xprintidle)" >> $LOGFILE
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | sed 's/.*# //') WM_CLASS WM_NAME 2>&1 >> $LOGFILE
this is with-i3 #!/bin/bash
source <(cat /proc/`ps -e | grep ' i3$' | awk '{print $1}'`/environ | sed -r -e 's/([^\x00]*)\x00/export \1\n/g')
bash -c "$*"
I was too lazy to figure out what env vars were missing from the cron (probably dbus socket) so i copied them all from the i3 process aboveThat plus the habit to lock the screen while I'm away from it works fairly reliable. edit: you also have the idle time in case you want to ignore result where you've been idle for way too long (forgot to lock screen) edit2: a sample log entry (idle is in miliseconds, date is unix timestamp in seconds) DATE = 1550608681
IDLE = 2456
WM_CLASS(STRING) = "google-chrome", "Google-chrome"
WM_NAME(UTF8_STRING) = "Edit | Hacker News - Google Chrome"
If only Slack changed the window title when I change chats, I could also track how much time I spend talking where :) The web version does it though, so I might stop using the electron app... |