{"id":16702609,"url":"https://github.com/dkandalov/activity-tracker","last_synced_at":"2025-09-11T02:37:37.720Z","repository":{"id":66534409,"uuid":"9345176","full_name":"dkandalov/activity-tracker","owner":"dkandalov","description":"Plugin for IntelliJ IDEs to track and record user activity","archived":false,"fork":false,"pushed_at":"2024-09-29T20:11:52.000Z","size":34406,"stargazers_count":72,"open_issues_count":4,"forks_count":14,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-07T23:43:41.941Z","etag":null,"topics":["data","intellij","plugin"],"latest_commit_sha":null,"homepage":"https://plugins.jetbrains.com/plugin/8126?pr=idea","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkandalov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-04-10T12:05:05.000Z","updated_at":"2025-02-01T08:59:51.000Z","dependencies_parsed_at":"2024-04-07T00:34:02.699Z","dependency_job_id":"1c07f292-0db0-48ad-b572-ae912847f22b","html_url":"https://github.com/dkandalov/activity-tracker","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/dkandalov/activity-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkandalov%2Factivity-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkandalov%2Factivity-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkandalov%2Factivity-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkandalov%2Factivity-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkandalov","download_url":"https://codeload.github.com/dkandalov/activity-tracker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkandalov%2Factivity-tracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274568463,"owners_count":25309281,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data","intellij","plugin"],"created_at":"2024-10-12T19:05:30.337Z","updated_at":"2025-09-11T02:37:37.688Z","avatar_url":"https://github.com/dkandalov.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://github.com/dkandalov/activity-tracker/workflows/CI/badge.svg)](https://github.com/dkandalov/activity-tracker/actions)\n\n## Activity Tracker\nThis is a proof-of-concept plugin for IntelliJ IDEs to track and record user activity.\nCurrently, the main feature is recording user activity into CSV files.\n\nTo install the plugin use `IDE Settings -\u003e Plugins -\u003e Marketplace -\u003e Search for \"Activity Tracker\"`.\n\nTo use the plugin see the \"Activity tracker\" widget in the IDE status bar.\n\n\u003cimg src=\"https://raw.githubusercontent.com/dkandalov/activity-tracker/master/screenshot.png\" alt=\"screenshot\" title=\"screenshot\" style=\"text-align:center\"/\u003e\n\n## Why?\nThe main idea is to mine recorded data for interesting user or project-specific insights,\ne.g. time spent in each part of the project or editing/browsing ratio.\nIf you use the plugin and find an interesting way to analyze the data, feel free to get in touch on\n[Mastodon](https://mastodon.social/@dkandalov),\n[Twitter](https://twitter.com/dmitrykandalov) or\n[GitHub](https://github.com/dkandalov/activity-tracker/issues).\n\n## Help\nTo open plugin popup menu:\n - click on the \"Activity tracker\" widget in the IDE status bar or\n - use the \"Activity Tracker Popup\" action (`ctrl+alt+shift+O` shortcut)\n\n### Popup menu actions\n - **Start/Stop Tracking** - activate/deactivate recording of IDE events.\n Events are written to `ide-events.csv` file. This file is referred to as the \"current log\".\n - **Current Log**\n    - **Show Stats** - analyse the current log and open the tool window which shows time spent editing each file.\n    - **Open in IDE** - open the current log file in IDE editor.\n    - **Open in File Manager** - open the current log in file manager\n        (can be useful to navigate to log file location path).\n    - **Roll Tracking Log** - rename the current log file by adding date postfix to it.\n        The intention is to keep previous data and clear the current log.\n    - **Clear Tracking Log** - remove all data from the current log.\n - **Settings**\n    - **Track IDE Action** - enable capturing IDE actions.\n    - **Poll IDE State** - enable polling IDE state (every 1 second) even if there is no activity.\n        Enable this option to get more accurate data about time spent in/outside of IDE.\n    - **Track Keyboard** - enable tracking keyboard events. __**Beware!**__\n        If you enter sensitive information (like passwords), it might be captured and stored in the current log file.\n    - **Track Mouse** - enable tracking mouse click events.\n      Note that because of the high volume of mouse move and wheel events, they are logged at most every 250 milliseconds.\n\n### Log file format\nThe event log file is written as [CSV RFC4180](https://tools.ietf.org/html/rfc4180) in UTF-8 encoding.\n\n - **timestamp** - time of the event in `yyyy-MM-dd'T'HHmmss.SSSZ` format\n   (see [createDateTimePrintFormat() method](https://github.com/dkandalov/activity-tracker/blob/6ca1342e8c71c96f5f7a1c52095c61317cc78650/src/main/activitytracker/TrackerEvent.groovy#L109-L109)).\n   In plugin version 0.1.3 it was [ISO-8601 extended format](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_OFFSET_DATE_TIME).\n   In plugin version 0.1.2 it was `yyyy/MM/dd kk:mm:ss.SSS` format.\n - **user name** - current user name. The intention is to be able to merge logs from several users.\n - **event type**, **event data** - content depends on the type of captured event.\n    - **IDE actions**: event type = `Action`, event data = `[action id]` (e.g. `Action,EditorUp`);\n                       or event type = `VcsAction`, event data = `[Push|Update|Commit]`;\n                       or event type = `CompilationFinished`, event data = `[amount of errors during compilation]`.\n    - **Executions**: event type = `Execution`, event data = `[Run|Debug|Coverage]:[Run configuration name]:[full commandline instruction]`.\n    - **IDE polling events**: event type = `IdeState`, event data = `[Active|Inactive|NoProject]`,\n      where `Inactive` means IDE doesn't have focus, `NoProject` means all projects are closed.\n    - **keyboard events**: event type = `KeyEvent`, event data = `[eventId]:[keyChar]:[keyCode]:[modifiers]`\n      (see [AWT KeyEvent](https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html)).\n    - **mouse events**: event type = `MouseEvent`, event data can be\n        - `click:[button]:[clickCount]:[modifiers]`\n        - `move:[x]:[y]:[modifiers]`\n        - `wheel:[wheelRotation]:[wheelModifiers]`\n\n      (see java [MouseEvent](https://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseEvent.html)\n      and [MouseWheelEvent](https://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseWheelEvent.html) for details).\n - **project name** - the name of the active project.\n - **focused component** - can be `Editor`, `Dialog`, `Popup`, or tool window id (e.g. `Version Control` or `Project`).\n - **current file** - absolute path to file open in the editor (even when the editor has no focus).\n - **PSI path** - [PSI](http://www.jetbrains.org/intellij/sdk/docs/basics/architectural_overview/psi_elements.html)\n                  path to currently selected element, format `[parent]::[child]`.\n                  Empty value if the file was not parsed by IDE (e.g. plain text file).\n - **editor line** - caret line number in Editor.\n - **editor column** - caret column number in Editor.\n - **task/change list name** - the name of the current task (`Main Menu -\u003e Tools -\u003e Tasks \u0026 Contexts`) \n                               or current VCS change list name if the \"Task Management\" plugin is not installed.\n\n\n### Example of log file\n```\n2015-12-31T17:42:30.171Z,dima,IdeState,Active,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,\n2015-12-31T17:42:30.35Z,dima,Action,EditorLineEnd,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,\n2015-12-31T17:42:30.351Z,dima,KeyEvent,401:97:79:8,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,24,\n2015-12-31T17:42:30.566Z,dima,Action,EditorLineStart,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,24,\n2015-12-31T17:42:30.568Z,dima,KeyEvent,401:97:85:8,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,\n2015-12-31T17:42:30.998Z,dima,KeyEvent,401:65535:157:4,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,\n2015-12-31T17:42:31.17Z,dima,IdeState,Active,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,\n2015-12-31T17:42:32.169Z,dima,IdeState,Inactive,,,,,-1,-1,\n2015-12-31T17:42:33.168Z,dima,IdeState,Inactive,,,,,-1,-1,\n```\n\n### How to use log file?\nThis is up to you.\n\n## Contributing\nThe most interesting part is the analysis of the recorded data.\nAll suggestions and code are welcome (even if it's not a JVM language, e.g. a Python snippet).\nIf you have a question, feel free to create an issue.\n\nWorking on the plugin:\n - to edit code, open project in IJ IDEA importing Gradle configuration \n - to build use `./gradlew buildPlugin` task which will create `build/distributions/activity-tracker-plugin.zip`\n - to run use `./gradlew runIde` task\n - alternatively, you can use [LivePlugin](https://github.com/dkandalov/live-plugin) \n as an [entry point](https://github.com/dkandalov/live-plugin/wiki/Liveplugin-as-an-entry-point-for-standard-plugins).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkandalov%2Factivity-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdkandalov%2Factivity-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkandalov%2Factivity-tracker/lists"}