{"id":38052214,"url":"https://github.com/adam-color/appusagegui","last_synced_at":"2026-04-26T17:03:30.416Z","repository":{"id":244890531,"uuid":"816589996","full_name":"Adam-Color/AppUsageGUI","owner":"Adam-Color","description":"Record your time spent in a specific application. Use cases include charging clients for remote work done in a specific app.","archived":false,"fork":false,"pushed_at":"2026-04-24T22:07:18.000Z","size":1057,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"Develop","last_synced_at":"2026-04-24T23:26:17.823Z","etag":null,"topics":["macos","productivity","remote-work","windows"],"latest_commit_sha":null,"homepage":"https://adamcolor.com/software","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Adam-Color.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-06-18T03:38:21.000Z","updated_at":"2026-04-24T22:07:22.000Z","dependencies_parsed_at":"2026-01-10T23:01:24.432Z","dependency_job_id":null,"html_url":"https://github.com/Adam-Color/AppUsageGUI","commit_stats":null,"previous_names":["techi-joe/appusagegui"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/Adam-Color/AppUsageGUI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adam-Color%2FAppUsageGUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adam-Color%2FAppUsageGUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adam-Color%2FAppUsageGUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adam-Color%2FAppUsageGUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Adam-Color","download_url":"https://codeload.github.com/Adam-Color/AppUsageGUI/tar.gz/refs/heads/Develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adam-Color%2FAppUsageGUI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32305043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["macos","productivity","remote-work","windows"],"created_at":"2026-01-16T20:11:47.159Z","updated_at":"2026-04-26T17:03:30.411Z","avatar_url":"https://github.com/Adam-Color.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![version](https://img.shields.io/badge/Version-1.10.0-white.svg)\n![license](https://img.shields.io/badge/License-GPL%20v3-blue.svg)\n![python](https://img.shields.io/badge/Python-3.14t-green.svg)\n\n# AppUsageGUI\n### Application Runtime Tracker\n\nThis program tracks the runtime of specified applications, organizing sessions into projects. Users can create multiple projects, each containing multiple tracking sessions, providing comprehensive time tracking and data analysis.\n\n## Installation\n\nTo install, follow the instructions for your platform found here:\n\n[Windows](docs/install_windows.md) | [macOS](docs/install_macos.md)\n\n## Contributing\n\n### Contributions are welcome and needed! Here is a TODO list:\n\n* Find a better way to filter out non-GUI apps\n* Add integrations with professional applications\n* Working pytest workflow\n* Full linux support with packages\n\n## Building\n\nFor building, it is recommended to use Python 3.14t\n\nInstall requirements:\n`pip install -r requirements.txt`\n\nRun build script:\n`python build.py`\n\nThe resulting AppUsageGUI folder will be created in dist/\n\nScripts to create macOS/Windows installers are located in dev/\n\n## How It Works\n\nAppUsageGUI is a cross-platform desktop application built with Python and Tkinter that monitors application usage time with project-based organization. The application works by:\n\n1. **Project Organization**: Users create projects to organize related tracking sessions, with each project containing multiple sessions\n2. **Session Creation**: Before tracking begins, users select a project and name their session\n3. **Process Monitoring**: Uses the `psutil` library to detect running applications and monitor their process status\n4. **Time Tracking**: Implements a precise time tracker that runs in a separate thread, capable of pausing and resuming\n5. **Session Management**: Creates named sessions within projects that can be saved, loaded, and continued across application restarts\n6. **Data Persistence**: Saves session data with integrity checking using hash verification, organized by project directories\n7. **Cross-Platform Support**: Handles Windows and macOS differences in process detection and GUI application filtering\n\nThe application follows a Model-View-Controller (MVC) architecture with separate logic and GUI components.\n\n### Key Concepts\n\n- **Projects**: Top-level containers that group related sessions together, stored in the `Projects/` directory\n- **Standalone Sessions**: Sessions not assigned to any project, stored directly in the `Sessions/` directory\n- **\"No Project\"**: A UI label for sessions that aren't assigned to any project (not an actual project directory)\n- **Sessions**: Individual time tracking instances that can belong to a project or exist standalone\n- **Session Files**: Each session consists of a `.dat` file (data) and `.hash` file (integrity check)\n- **Metadata**: Project information is stored in `projects_metadata.json` including creation dates and session counts\n\n## Features\n\n- **Project Management**: Organize sessions into projects for organization and management\n- **Session Tracking**: Track the total runtime of any executable with named sessions\n- **Session Continuation**: Continue from previous sessions within any project\n- **User Customizable Rules**: Configure custom tracking rules and application filtering\n- **Cross-Platform Support**: Works on Windows and macOS (macOS installation requires permissions)\n- **Data Integrity**: Session data integrity with hash verification\n- **Pause/Resume**: Pause and resume functionality during active tracking\n- **Smart Detection**: Automatic detection of GUI applications vs background processes\n- **Project Analytics**: View total time spent across all sessions within a project\n- **Migration Support**: Automatic migration of existing sessions to the new project structure\n\n## User Workflow\n\n### New Session Creation\nThe application now uses a streamlined workflow where users select their project and session name before starting the timer:\n\n1. **Main Menu** → \"Start new session\"\n2. **Create Session Window** → Select project and enter session name\n3. **Select App Window** → Choose application to track\n4. **Tracker Window** → Timer runs with pause/resume controls\n5. **Save Window** → Save session data\n6. **Session Total Window** → View results and statistics\n\n### Project Management\n- **Main Menu** → \"Manage Projects\" → View all projects with session counts and total time\n- **Create New Project** → Set up new project containers\n- **View Project Sessions** → Manage sessions within specific projects\n- **Delete Projects** → Remove projects and all associated sessions (with confirmation)\n\n### Continuing Existing Sessions\n- **Main Menu** → \"Continue previous session\" → Navigate through projects to find and resume sessions\n- Sessions can be continued across application restarts with full state preservation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadam-color%2Fappusagegui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadam-color%2Fappusagegui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadam-color%2Fappusagegui/lists"}