activitime-python

Cross-platform time tracker : open-sourced, extensible, privacy-focused

https://github.com/scv35/activitime-python

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Cross-platform time tracker : open-sourced, extensible, privacy-focused

Basic Info
  • Host: GitHub
  • Owner: scv35
  • License: mpl-2.0
  • Language: Python
  • Default Branch: master
  • Size: 1.33 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 8 months ago · Last pushed 8 months ago
Metadata Files
Readme Contributing Funding License Code of conduct Citation Security

README.md

Records what you do so that you can know how you've spent your time.
All in a secure way where you control the data.


WebsiteForumDocumentationReleases
Contributor statsCI overview



Do you want to receive email updates on major announcements?
Signup for the newsletter!

Table of Contents * [About](#about) * [Screenshots](#screenshots) * [Is this yet another time tracker?](#is-this-yet-another-time-tracker) * [Feature comparison](#feature-comparison) * [Installation & Usage](#installation--usage) * [About this repository](#about-this-repository) * [Server](#server) * [Watchers](#watchers) * [Libraries](#libraries) * [Contributing](#contributing)

About

The goal of ActivityWatch is simple: Enable the collection of as much valuable lifedata as possible without compromising user privacy.

We've worked towards this goal by creating an application for safe storage of the data on the user's local machine and as well as a set of watchers which record data such as:

  • Currently active application and the title of its window
  • Currently active browser tab and its title and URL
  • Keyboard and mouse activity, to detect if you are AFK ("away from keyboard") or not

It is up to you as user to collect as much as you want, or as little as you want (and we hope some of you will help write watchers so we can collect more).

Screenshots

You can find more (and newer) screenshots on the website.

Installation & Usage

Downloads are available on the releases page.

For instructions on how to get started, please see the guide in the documentation.

Interested in building from source? There's a guide for that too.

Is this yet another time tracker?

Yes, but we found that most time trackers lack one or more important features.

Common dealbreakers:

  • Not open source
  • The user does not own the data (common with non-open source options)
  • Lack of synchronization (and when available: it's centralized and the sync server knows everything)
  • Difficult to setup/use (most open source options tend to target programmers)
  • Low data resolution (low level of detail, does not store raw data, long intervals between entries)
  • Hard or impossible to extend (collecting more data is not as simple as it could be)

To sum it up:

  • Closed source solutions suffer from privacy issues and limited features.
  • Open source solutions aren't developed with end-users in mind and are usually not written to be easily extended (they lack a proper API). They also lack synchronization.

We have a plan to address all of these and we're well on our way. See the table below for our progress.

Feature comparison

Basics

| | User owns data | GUI | Sync | Open Source | | ------------- |:------------------:|:------------------:|:--------------------------:|:------------------:| | ActivityWatch | :whitecheckmark: | :whitecheckmark: | WIP, decentralized | :whitecheckmark: | | Selfspy | :whitecheckmark: | :x: | :x: | :whitecheckmark: | | ulogme | :whitecheckmark: | :whitecheckmark: | :x: | :whitecheckmark: | | RescueTime | :x: | :whitecheckmark: | Centralized | :x: | | WakaTime | :x: | :whitecheckmark: | Centralized | Clients |

Platforms

| | Windows | macOS | Linux | Android | iOS | | ------------- |:------------------:|:------------------:|:------------------:|:------------------:|:-------------------:| | ActivityWatch | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: |:x: | | Selfspy | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | :x: |:x: | | ulogme | :x: | :whitecheckmark: | :whitecheckmark: | :x: |:x: | | RescueTime | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: |Limited functionality|

Tracking

| | App & Window Title | AFK | Browser Extensions | Editor Plugins | Extensible | | ------------- |:------------------:|:------------------:|:------------------:|:------------------:|:---------------------:| | ActivityWatch | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Selfspy | :whitecheckmark: | :whitecheckmark: | :x: | :x: | :x: | | ulogme | :whitecheckmark: | :whitecheckmark: | :x: | :x: | :x: | | RescueTime | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | :x: | :x: | | WakaTime | :x: | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | Only for text editors |

For a complete list of the things ActivityWatch can track, see the page on watchers in the documentation.

Architecture

```mermaid graph TD; aw-qt[aw-qt]; aw-notify[aw-notify]; aw-server[aw-server]; aw-webui[aw-webui]; aw-watcher-window[aw-watcher-window]; aw-watcher-afk[aw-watcher-afk]; aw-watcher-web[aw-watcher-web]; aw-sync[aw-sync];

aw-qt -- Manages --> aw-server; aw-qt -- Manages --> aw-notify -- Queries --> aw-server; aw-qt -- Manages --> aw-watcher-window -- Watches --> S1[Active window] -- Heartbeats --> aw-server; aw-qt -- Manages --> aw-watcher-afk -- Watches --> S2[AFK status] -- Heartbeats --> aw-server; Browser -- Manages --> aw-watcher-web -- Watches --> S3[Active tab] -- Heartbeats --> aw-server; SF -- Dropbox/Syncthing/etc --> SF; aw-server <-- Push/Pull --> aw-sync <-- Read/Write --> SF[Sync folder]; aw-server -- Serves --> aw-webui -- Queries --> aw-server;

%% User -- Interacts --> aw-webui; %% User -- Observes --> aw-notify; %% User -- Interacts --> aw-qt;

classDef lightMode fill:#FFFFFF, stroke:#333333, color:#333333; classDef darkMode fill:#333333, stroke:#FFFFFF, color:#FFFFFF;

classDef lightModeLinks stroke:#333333; classDef darkModeLinks stroke:#FFFFFF;

class A,B,C,D,E,G lightMode; class A,B,C,D,E,G darkMode;

%% linkStyle 0 stroke:#FF4136, stroke-width:2px; %% linkStyle 1 stroke:#1ABC9C, stroke-width:2px; ```

About this repository

This repo is a bundle of the core components and official modules of ActivityWatch (managed with git submodule). Its primary use is as a meta-package providing all the components in one repo; enabling easier packaging and installation. It is also where releases of the full suite are published (see releases).

Server

aw-server is the official implementation of the core service which the other ActivityWatch services interact with. It provides a REST API to a datastore and query engine. It also serves the web interface developed in the aw-webui project (which provides the frontend part of the webapp).

The REST API includes:

  • Access to a datastore suitable for timeseries/timeperiod-data
  • A query engine and language for such data

The webapp includes:

  • Data visualization & browser
  • Query explorer
  • Export functionality

Watchers

ActivityWatch comes pre-installed with two watchers:

  • aw-watcher-afk tracks the user active/inactive state from keyboard and mouse input
  • aw-watcher-window tracks the currently active application and its window title.

There are lots of other watchers for ActivityWatch which can track more types of activity. Like aw-watcher-web which tracks time spent on websites, multiple editor watchers which track spent time coding, and many more! A full list of watchers can be found in the documentation.

Libraries

  • aw-core - core library, provides no runnable modules
  • aw-client - client library, useful when writing watchers

Folder structure

Contributing

Want to help? Great! Check out the CONTRIBUTING.md file!

Questions and support

Have a question, suggestion, problem, or just want to say hi? Post on the forum!

Owner

  • Login: scv35
  • Kind: user
  • Location: Kadıköy, Istanbul, Turkey

Systems Programmer – Performance, Safety, and Scalability @cpp @golang @rust @rustwasm @python @java

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use or refer to this software in your research, please cite it."
authors:
- family-names: "Bjäreholt"
  given-names: "Erik"
  orcid: "https://orcid.org/0000-0003-1350-9677"
- family-names: "Bjäreholt"
  given-names: "Johan"
  orcid: "https://orcid.org/0000-0003-4789-3160"
title: "ActivityWatch"
version: 0.13.1
doi: 10.5281/zenodo.4957165
date-released: 2024-06-10
url: "https://github.com/ActivityWatch/activitywatch"

GitHub Events

Total
Last Year

Dependencies

.github/workflows/build.yml actions
  • ActivityWatch/check-version-format-action v2 composite
  • actions/cache v4 composite
  • actions/checkout v4 composite
  • actions/download-artifact v4 composite
  • actions/setup-node v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
  • dtolnay/rust-toolchain master composite
  • softprops/action-gh-release v1 composite
.github/workflows/codeql.yml actions
  • actions/checkout v4 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/dependabot-automerge.yml actions
  • ridedott/merge-me-action v2 composite
.github/workflows/diagram.yml actions
  • actions/checkout v4 composite
  • githubocto/repo-visualizer main composite
.github/workflows/greetings.yml actions
  • actions/first-interaction v1 composite
.github/workflows/test.yml actions
  • actions/download-artifact v4 composite
.github/workflows/winget.yml actions
  • vedantmgoyal2009/winget-releaser v2 composite
poetry.lock pypi
  • altgraph 0.17.4
  • colorama 0.4.6
  • coverage 7.6.1
  • exceptiongroup 1.2.2
  • importlib-metadata 8.5.0
  • iniconfig 2.0.0
  • macholib 1.16.3
  • mypy 1.12.0
  • mypy-extensions 1.0.0
  • packaging 24.1
  • pefile 2023.2.7
  • pluggy 1.5.0
  • psutil 6.0.0
  • py-cpuinfo 9.0.0
  • pyinstaller 6.11.0
  • pyinstaller-hooks-contrib 2024.9
  • pytest 8.3.3
  • pytest-benchmark 4.0.0
  • pytest-cov 5.0.0
  • pywin32-ctypes 0.2.3
  • setuptools 75.2.0
  • tomli 2.0.2
  • typing-extensions 4.12.2
  • urllib3 1.26.20
  • zipp 3.20.2
pyproject.toml pypi