Skip to main content

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

  1. Install:

    uv tool install tool-tray
    
  2. Run:

    tooltray
    
  3. Paste the config code when prompted

  4. Done! The tray icon shows tool versions and updates.

For Admins

Generate a config code to share with your team:

tooltray encode --token ghp_xxx --tool myapp:myorg/myapp
# Output: TB-eyJ0b2tlbi...

Share the output code via your internal channels.

Commands

Command Description
tooltray Run tray app (shows setup if not configured)
tooltray setup Re-run setup dialog
tooltray encode Generate config code for sharing
tooltray --help Show help
tooltray --version Show version

Encode Options

tooltray encode --token TOKEN --tool NAME:ORG/REPO [--tool ...] [--prefix PREFIX]

Examples:

# Single tool (default TB- prefix)
tooltray encode --token ghp_xxx --tool myapp:myorg/myapp

# Multiple tools
tooltray encode --token ghp_xxx \
  --tool cli:acme/cli \
  --tool api:acme/api

# Custom prefix for branding
tooltray encode --prefix ACME --token ghp_xxx --tool cli:acme/cli

Tray Menu

Item Description
myapp 1.0.0 → 1.1.0 ⬆ Update available
myapp 1.0.0 Up to date
myapp (not installed) Not yet installed
Update All Install/update all tools
Check for Updates Refresh version info
Setup... Re-paste config code
Quit Exit the app

Config Code Format

The config code is a prefix + base64-encoded JSON with the GitHub token and tool list:

TB-eyJ0b2tlbiI6ImdocF94eHgiLCJ0b29scyI6W3sibmFtZSI6Im15YXBwIiwicmVwbyI6Im15b3JnL215YXBwIn1dfQ==

Decodes to:

{
  "token": "ghp_xxx",
  "tools": [
    {"name": "myapp", "repo": "myorg/myapp"}
  ]
}

The prefix (default TB) can be customized with --prefix for org branding.

Config is stored at:

  • Windows: %LOCALAPPDATA%\tooltray\config.json
  • macOS: ~/Library/Application Support/tooltray/config.json
  • Linux: ~/.config/tooltray/config.json (or $XDG_CONFIG_HOME/tooltray/)

Requirements

  • Python 3.12+
  • uv
  • tkinter (usually included with Python)

Architecture

Internal channel: "TB-eyJ0b2tlbi..." (config code)
     │
     ▼ (user pastes on first run)
┌─────────────────────────────────┐
│ tooltray (system tray)          │
│ ┌─────────────────────────────┐ │
│ │ 🔧 Tool Tray                │ │
│ │ myapp       1.0.0 → 1.1.0 ⬆ │ │
│ │ Update All                  │ │
│ │ Check for Updates           │ │
│ │ Setup...                    │ │
│ │ Quit                        │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────┘
     │
     ▼ (uv tool install git+https://oauth2:TOKEN@github.com/...)
   Private GitHub Repos

Development

# Run directly
uv run tooltray

# Test encode command
uv run tooltray encode --token test123 --tool myapp:myorg/myapp

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tool_tray-0.1.1.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tool_tray-0.1.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file tool_tray-0.1.1.tar.gz.

File metadata

  • Download URL: tool_tray-0.1.1.tar.gz
  • Upload date:
  • Size: 6.8 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

Hashes for tool_tray-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4cbc75d9976fcb3e67e385ff9839656c437f09befb8d8b4a2a9f91e3510ded74
MD5 b00f5bf9fe33e62e9a19208667ec9780
BLAKE2b-256 7f461f2188e515a3104384a1fe222ce132d4cf6fa6b766c2d10ed547bd9e7079

See more details on using hashes here.

File details

Details for the file tool_tray-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tool_tray-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.2 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

Hashes for tool_tray-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dd233261dc3994ec8f5d9387461fe29da192a3c08bd7f3bd46080f4f5130ec7a
MD5 0966f47cbaf8b4b9b58fa1fdc286e240
BLAKE2b-256 9f2eec04039b53c07b8751df1e86efe32cc7586bcbe7bfa4e763d2ae4ff92eb6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page