{"id":49351523,"url":"https://github.com/jsfr/gh-tray","last_synced_at":"2026-04-27T10:03:33.161Z","repository":{"id":345749023,"uuid":"1185134470","full_name":"jsfr/gh-tray","owner":"jsfr","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-20T16:36:09.000Z","size":89,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-21T05:40:34.424Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"F#","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/jsfr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-18T09:18:56.000Z","updated_at":"2026-03-20T16:36:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jsfr/gh-tray","commit_stats":null,"previous_names":["jsfr/gh-tray"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/jsfr/gh-tray","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsfr%2Fgh-tray","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsfr%2Fgh-tray/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsfr%2Fgh-tray/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsfr%2Fgh-tray/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jsfr","download_url":"https://codeload.github.com/jsfr/gh-tray/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsfr%2Fgh-tray/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32331306,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"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":[],"created_at":"2026-04-27T10:03:16.548Z","updated_at":"2026-04-27T10:03:33.133Z","avatar_url":"https://github.com/jsfr.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gh-tray\n\nA Windows system tray application that monitors your GitHub pull requests using the `gh` CLI.\n\nPRs are grouped into three categories:\n\n- **My PRs** — pull requests you authored\n- **Review Requested** — pull requests where your review is requested\n- **Involved** — pull requests you're otherwise involved in\n\nEach PR shows status indicators for draft, merge conflicts, CI status, and review status using emoji icons.\n\n![Screenshot of gh-tray context menu](images/screenshot.png)\n\n## Features\n\n- Polls GitHub for open PRs involving you\n- Groups and displays PRs in a context menu from the system tray\n- Multi-account support — select which `gh` CLI account to use\n- JSON config file with optional environment variable overrides\n- File logging for troubleshooting when not running from a terminal\n- Dark/light theme detection with automatic switching\n- Global hotkey to open the menu at cursor position (default: `Ctrl+Alt+Shift+G`)\n- Optional auto-start with Windows\n\n## Prerequisites\n\n- [GitHub CLI](https://cli.github.com/) (`gh`) installed and authenticated (`gh auth login`)\n- .NET 10 SDK (for building from source)\n\n## Install\n\n\u003c!-- ### winget\n\n```\nwinget install jsfr.gh-tray\n``` --\u003e\n\n### Scoop\n\n```\nscoop bucket add gh-tray https://github.com/jsfr/gh-tray\nscoop install gh-tray\n```\n\n### Installer\n\nDownload the latest `gh-tray-*-win-x64-setup.exe` from [GitHub Releases](https://github.com/jsfr/gh-tray/releases) and run it. The installer supports silent install with `/VERYSILENT /SUPPRESSMSGBOXES`.\n\n### Build from source\n\n```powershell\n.\\install.ps1\n```\n\nThis publishes a self-contained exe to `%LOCALAPPDATA%\\gh-tray` and registers it to start with Windows.\n\nTo uninstall:\n\n```powershell\n.\\install.ps1 -Uninstall\n```\n\n## Configuration\n\nConfiguration is read from `%APPDATA%\\gh-tray\\config.json`. All fields are optional — missing fields use defaults.\n\n```json\n{\n  \"account\": \"my-github-account\",\n  \"pollInterval\": 120,\n  \"logLevel\": \"Information\",\n  \"hotkey\": \"Ctrl+Alt+Shift+G\",\n  \"logFile\": \"C:\\\\Users\\\\me\\\\AppData\\\\Roaming\\\\gh-tray\\\\gh-tray.log\"\n}\n```\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `account` | string | (system default) | `gh` CLI account name (as shown in `gh auth status`) |\n| `pollInterval` | int | `120` | Polling interval in seconds |\n| `logLevel` | string | `Information` | Log level: `Debug`, `Information`, `Warning`, `Error` |\n| `hotkey` | string | `Ctrl+Alt+Shift+G` | Global hotkey binding |\n| `logFile` | string | (none) | Path to a log file; when set, logs are written to this file |\n\n### Environment variable overrides\n\nEnvironment variables override config file values when set:\n\n| Environment Variable | Overrides |\n|---|---|\n| `GH_TRAY_POLL_INTERVAL` | `pollInterval` |\n| `GH_TRAY_LOG_LEVEL` | `logLevel` |\n| `GH_TRAY_HOTKEY` | `hotkey` |\n\n## Development\n\nRequires [just](https://github.com/casey/just) as a task runner.\n\n```\njust build       # restore and build (Release)\njust run         # run the app (Debug)\njust fmt         # format with Fantomas\njust check       # formatting + lint + analyzers\njust publish 1.0 # publish self-contained exe\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsfr%2Fgh-tray","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsfr%2Fgh-tray","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsfr%2Fgh-tray/lists"}