System tray tool manager for private GitHub tools via uv
Project description
Tool Tray
System tray app to manage and update Python tools from private GitHub repos via uv.
Quick Start
For Users
-
Install:
uv tool install tool-tray
-
Run the tray:
tooltray
-
On first run, setup dialog opens automatically - paste your config code
For Admins
Generate a config code to share with your team:
tooltray encode --token ghp_xxx --repo myorg/myapp
# Output: TB-eyJ0b2tlbi...
Each repo must have a tooltray.toml manifest (see below).
Commands
| Command | Description |
|---|---|
tooltray |
Run tray app |
tooltray setup |
Configure via CLI (paste config code) |
tooltray reset |
Remove config and start fresh |
tooltray init |
Create tooltray.toml template in current dir |
tooltray encode |
Generate config code for sharing |
tooltray autostart |
Manage system startup |
tooltray logs |
View log file |
tooltray cleanup |
Remove orphaned desktop icons |
tooltray --help |
Show help |
tooltray --version |
Show version |
Encode Options
tooltray encode --token TOKEN --repo ORG/REPO [--repo ...] [--prefix PREFIX]
Examples:
# Single repo (default TB- prefix)
tooltray encode --token ghp_xxx --repo myorg/myapp
# Multiple repos
tooltray encode --token ghp_xxx \
--repo acme/cli \
--repo acme/api
# Custom prefix for branding
tooltray encode --prefix ACME --token ghp_xxx --repo acme/cli
Autostart
tooltray autostart --enable # Add to system startup
tooltray autostart --disable # Remove from startup
tooltray autostart --status # Check if enabled
Logs
tooltray logs # Show last 50 lines
tooltray logs -f # Tail in real-time
tooltray logs --path # Print log file path
Cleanup
Remove orphaned desktop icons (icons for tools no longer in config):
tooltray cleanup --dry-run # Show what would be removed
tooltray cleanup # Prompt and remove
tooltray cleanup --force # Remove without prompting
Tray Menu
When not configured:
| Item | Description |
|---|---|
[!] Not configured |
Status indicator |
| Setup... | Open setup dialog |
| Quit | Exit the app |
When configured:
| Item | Description |
|---|---|
> myapp 1.0.0 |
Click to launch |
> myapp 1.0.0 -> 1.1.0 * |
Update available, click to launch |
myapp (not installed) |
Not yet installed |
| Orphaned Icons | Shows icons needing cleanup (if any) |
| Clean Up (n) | Remove orphaned icons |
| Update All | Install/update all tools |
| Check for Updates | Refresh version info |
| Configure... | Open setup dialog to reconfigure |
| Quit | Exit the app |
Project Manifest (tooltray.toml)
Each managed repo must have a tooltray.toml in its root:
name = "databridge" # Display name (required)
type = "uv" # uv | git (required)
launch = "databridge" # Command to launch (optional)
build = "npm install" # Build command for git type (optional)
desktop_icon = true # Create desktop shortcut (default: false)
icon = "assets/icon.png" # Path to icon in repo (optional)
autostart = false # Add to system autostart (default: false)
Repos without tooltray.toml are skipped.
Config Code Format
The config code is a prefix + base64-encoded JSON:
TB-eyJ0b2tlbiI6ImdocF94eHgiLCJyZXBvcyI6WyJteW9yZy9teWFwcCJdfQ==
Decodes to:
{
"token": "ghp_xxx",
"repos": ["myorg/myapp"]
}
Config is stored at:
- Windows:
%LOCALAPPDATA%\tooltray\config.json - macOS:
~/Library/Application Support/tooltray/config.json - Linux:
~/.config/tooltray/config.json
Requirements
- Python 3.12+
- uv
Development
# Run directly
uv run tooltray
# Test encode command
uv run tooltray encode --token test123 --repo myorg/myapp
# Type check
uv run basedpyright src/
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tool_tray-0.3.4.tar.gz.
File metadata
- Download URL: tool_tray-0.3.4.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c59d9ce41658a5a5215b19c5314f8a995b8904e722388a089658e5bc3bccfc2
|
|
| MD5 |
77bd02088107245da573e410c2930074
|
|
| BLAKE2b-256 |
f33384467dc12651eeeeccf3b8e091c077dad401dc56f53d749467196285d0bd
|
File details
Details for the file tool_tray-0.3.4-py3-none-any.whl.
File metadata
- Download URL: tool_tray-0.3.4-py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5d0390b8e64d0132b24163abeae24c348c8f4bcd275c54b88d9d745566eb69e
|
|
| MD5 |
6d57bccb7b2812d65cdab78cd5ca2c97
|
|
| BLAKE2b-256 |
5ab4afe4c9c23a6b20e705a550cafdfd7db8aeb3d1a4c0772221f50f12eaa839
|