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 the tray:

    tooltray
    
  3. 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


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.3.12.tar.gz (14.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.3.12-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tool_tray-0.3.12.tar.gz
  • Upload date:
  • Size: 14.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.3.12.tar.gz
Algorithm Hash digest
SHA256 9a9ac96f0cabb776ae0013fc058bc53f3d7b0d73d935dc4fe730c19369ca63f5
MD5 bf1001a420a3bcd2a6198f4490ef5d7a
BLAKE2b-256 6d22bc7cda56e2a2d820cc2282fec0a8f87952595ef75b8729b76ba70016332e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tool_tray-0.3.12-py3-none-any.whl
  • Upload date:
  • Size: 20.1 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.3.12-py3-none-any.whl
Algorithm Hash digest
SHA256 52e279f4e5775e3cb611c104c57ed48ed04bbe4b7e866b9e975e9284a1a2dcd2
MD5 45b10f325b161b523884efcb48b340da
BLAKE2b-256 5bd4bced1f504ee7e868bb3835b6f9b0c486f04118abec1bd06efbec48dc23f0

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