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 setup:

    tooltray setup
    
  3. Paste the config code when prompted

  4. Run the tray:

    tooltray
    

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 encode Generate config code for sharing
tooltray autostart Manage system startup
tooltray desktop-icon Create desktop shortcuts
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

Desktop Icons

# Requires: uv tool install tool-tray[desktop]
tooltray desktop-icon databridge

Tray Menu

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
Update All Install/update all tools
Check for Updates Refresh version info
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 | curl (required)
launch = "databridge"         # Command to launch (optional)
build = "npm install"         # Build command for git/curl (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

Optional:

  • pyshortcuts for desktop icons (uv tool install tool-tray[desktop])

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.2.2.tar.gz (10.4 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.2.2-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tool_tray-0.2.2.tar.gz
  • Upload date:
  • Size: 10.4 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.2.2.tar.gz
Algorithm Hash digest
SHA256 570dd7237b0159272d10128ff12495ab2f660c7022ca7f3f959baf1d3225f0f4
MD5 12e9d1529dd29d4c1983e8ede4a33553
BLAKE2b-256 90efb8b385b6795a5b42478054551173f3d6e96b08105fa4cf0777d5c426d9c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tool_tray-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 15.0 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.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 375ab6f86d4f8c9c9fdb641b15d7ca9f5f1bde72a08084612dc5847f2587319d
MD5 e1157f4df8273a1c7317b4b371e4c381
BLAKE2b-256 bd955d2cbf819399fbf9e7e6d503b36c47a00c9b5f36c082369bad26e890e7c6

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