TimeTrack
Time is tracked by logging the active, focused window of the user every second. The consolidate script is mean to be run on a 5 minute interval on the seconds, and consolidates the raw time log.
You then upload your consolidated time log to https://timetrack.slgotting.com, and you can inspect your time usage with a graphical UI
Compatibility
Right now this script is only usable on Linux. Tested working on Ubuntu 18. It should work on any linux distro if the following commands are available:
- xdotool
- wmctrl
- xprintidle
I may add support for Windows in the future but I wanted to get it out as it is right now.
Getting Started
Install package with
pip install timetrack-slg
Install the easy way
sudo install-timetrack-slg
Install the hard way
This is the hard way, make sure to look over any commands and see that they contain proper variable values
1. Set up systemd to automatically run script (on boot and always restart on fail)
| :warning: | Make sure to change username to your username |
|---|---|
| :warning: | Also your python file install might be at a location other than /home/username/.local/bin/timetrack-slg. To find location, run whereis timetrack-slg. Update ExecStart as necessary |
| :information_source: | The -s switch is set to .9766 because this is the interval I found gives me close to or exactly 1 run per second. See "Calculate your sleep time" for information on how to calculate what value you should use. |
| :information_source: | Get your DISPLAY variable with env | grep DISPLAY |
| :information_source: | Output file -o /home/username/timetrack-slg/time-log.json must be a json file |
| :information_source: | Run timetrack-slg -h to see all options |
:warning: Before running this command make sure you change the necessary variables using the above as guidance to doing so.
In your terminal, run:
echo '[Unit]
Description=Time tracker
After=multi-user.target
[Service]
User=username
Type=simple
Restart=always
Environment="DISPLAY=:0"
ExecStart=/home/username/.local/bin/timetrack-slg \
--output_filepath /home/username/timetrack-slg/time-log.json \
--sleep_time 0.9766 \
--time_til_idle 30 \
--config_filepath /home/username/.config/slg/time-log.yml
[Install]
WantedBy=multi-user.target' | sudo tee /etc/systemd/system/timetrack-slg.service >/dev/null
Restart systemctl daemon:
sudo systemctl daemon-reload
Then tell systemd to start this up at boot with:
sudo systemctl enable timetrack-slg.service
And start er up with:
sudo systemctl start timetrack-slg.service
2. Set up cron job to automatically consolidate log
Add this line to your crontab (changing username and paths where necessary):
*/5 * * * * /home/username/.local/bin/timetrack-consolidate-slg --input_filepath /home/username/timetrack-slg/time-log.json --config_filepath /home/username/.config/slg/time-log.yml --run_interval 5
This line consolidates the time-log.json file every 5 minutes so that our timelog filesize doesnt grow too big.
3. Success
If you've done everything correctly, you should have a time-log-consolidated.json generated in the input_filepath location (if at least 5 minutes have passed).
More Info
Calculate your sleep time
- Make sure timetrack-consolidate-slg is running in crontab every 5 minutes.
- Run the script without any -s flag set for a while. 10 minutes to be safe. Shouldn't need to do this more than once so find something else to do while waiting.
- Inspect your consolidate file and add up the times of a 5 minute block. The value should be relatively close to 300 (~ 290 - 299). Mine was 293
- Divide number by 300. So in my case I had 293 so ( 293 / 300 ) is .9766, hence the value you see above.
Note: Since we will simply overwrite any times that already exist, we can use a number lower than this and run the script more frequently (0.96 or even lower) to guarantee we have 300 data points every 5 minutes.
Metadata
Release files for timetrack-slg 0.1.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| timetrack-slg-0.1.11.tar.gz | 9.5 kB | Without provenance | Details for timetrack-slg-0.1.11.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| timetrack_slg-0.1.11-py3-none-any.whl | Python 3 | none | any | Details for timetrack_slg-0.1.11-py3-none-any.whl |
Total release size: 19.4 kB
Release files / timetrack-slg-0.1.11.tar.gz
| Download URL | timetrack-slg-0.1.11.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84e47d11159a2169c72655a95c21b576861cb53850380294cff762ebcc65a3cb
|
|
BLAKE2b-256 checksum How to use checksums |
2705c8ca0d29ec5279dba0b747e6c12b5b345c77a41aec6ba6e405c98e4c15e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.10.2
|
Release files / timetrack_slg-0.1.11-py3-none-any.whl
| Download URL | timetrack_slg-0.1.11-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4fc5b4b3620e0021575bd88a1ef64e05d20143abb5a39dcc251ab9c680ea74fb
|
|
BLAKE2b-256 checksum How to use checksums |
6fabc16d4403f0172d24510f3b482d9a8003957aaaa87989451fd3ee91eb849e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.10.2
|
Security for timetrack-slg 0.1.11
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.