Skip to content

Mrmothy/BugShot

Repository files navigation

BugShot

Python License

A lightweight screenshot and annotation tool for developers and QA.

Draw a box on screen → optionally resize → annotate → save or copy instantly.

About

BugShot was created to simplify the workflow of capturing and communicating UI bugs during development and QA. Instead of juggling multiple tools for screenshots, resizing, and annotation, BugShot provides a streamlined workflow in a single lightweight application.

This project is fully open source and intended to evolve with community feedback.

BugShot is also an experiment in AI-assisted software development, where AI agents are used as development partners to help design, implement, and iterate on features.

The project focuses on:

  • Fast screenshot capture
  • Built-in annotation tools
  • Optional standardized image sizing
  • Simple configuration
  • Cross-platform Python support

Demo

Contents

  • About
  • Demo
  • Features
  • Requirements
  • Quick Start
  • Workflow
  • Settings
  • Troubleshooting
  • AI-Assisted Development
  • Project Status
  • Contributing
  • License

Features

  • Region screenshot capture
  • Optional preset image resizing
  • Built-in annotation tools (arrows, blur, shapes)
  • Copy to clipboard or save instantly
  • Global hotkey support
  • Multi-monitor support
  • Lightweight Python application

Requirements

  • Python 3.9+
  • macOS, Windows, or Linux

Installing Python (if needed)

Check if Python is installed:

python3 --version

If you see Python 3.9 or higher, you’re set. If the command is missing or the version is too old:

  • macOS (Homebrew): Install Homebrew if you don’t have it, then run:
    brew install python@3.12
    Use python3 or the path brew shows (e.g. /opt/homebrew/bin/python3) for the steps below.
  • Windows: Install from python.org or the Microsoft Store; ensure “Add Python to PATH” is checked.
  • Linux: Use your package manager (e.g. sudo apt install python3 python3-venv on Debian/Ubuntu).

Quick start (clone and run)

# Clone the repo
git clone https://github.com/Mrmothy/bugShot
cd bugShot

# Create a virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate   # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run the app
python app.py

On first run, a settings window opens. Save location, output size, and hotkey are preconfigured in config.json (in the repo); you can change them in the UI and click Save settings. The Save settings button highlights when you change anything so you know to save.

macOS: For the global hotkey to work, add Terminal (or your Python app) under System Settings → Privacy & Security → Accessibility and enable it. Without this, the hotkey won’t be detected; the app and Capture now still work.

Multi-monitor: When you have more than one monitor, a monitor picker appears first: choose which screen to capture (e.g. "Monitor 1 — 1920×1080" or "Monitor 2 — 2560×1440"). Then the overlay and region selection run on that screen only. With one monitor, the picker is skipped. Requires the mss dependency (included in requirements.txt).

Workflow

  1. Capture – Draw a rectangle on screen (or use Capture now in the app, or press the hotkey). The selection is cropped.
  2. Resize (optional) – If “Scale to preset size” is on, the crop is scaled to your configured width×height; otherwise the drawn size is kept.
  3. Annotate – The editor opens. Add arrows, blur regions, rectangles, or ellipses. Use ⌘S / Ctrl+S to save to your save location, or ⌘C / Ctrl+C to copy to clipboard, then the window closes.

The full-screen image used for selection is not saved to disk (only a temp file that is removed after the crop).

How to run

Method Command Use case
App (recommended) python app.py Settings UI, Capture now button, and hotkey in one window. Leave it open; hotkey works from any app.
Hotkey only python hotkey_launcher.py No UI. Listens for the hotkey; press it to capture. Quit with Ctrl+C.
One-off capture python bugshot.py Single capture (overlay → editor). No hotkey listener.

Settings (config.json)

The repo includes a default config.json. If it’s missing (e.g. you deleted it), the app creates one on first run. Edit it by hand or use the app UI (recommended).

Key Description
save_location Where “Save to Desktop” writes (e.g. "~/Desktop"). Filenames: bugshot_YYYYMMDD_HHMMSS.png.
use_preset_size true = scale crop to output_width × output_height before the editor. false = keep the drawn size. Toggle in the app with “Scale to preset size” / “Keep drawn size”.
output_width, output_height Target size in pixels when use_preset_size is true.
canvas_color RGB list for the background when scaling (e.g. [255, 255, 255] for white).
hotkey Global hotkey (e.g. "ctrl+shift+b" or "cmd+shift+b" on macOS).

Troubleshooting

  • Hotkey does nothing – On macOS, grant Accessibility to Terminal (or Python). Restart the app or hotkey_launcher.py after enabling.
  • “Hotkey stopped” in the app – The hotkey helper process exited (e.g. no Accessibility). Grant permission and click Save settings to restart the listener.
  • Import or module errors – Run pip install -r requirements.txt from the project directory and use the same Python when running python app.py or python bugshot.py.

AI-Assisted Development

BugShot is developed with the help of AI coding assistants and agents.

AI tools are used to help with:

  • feature prototyping
  • architecture suggestions
  • debugging assistance
  • documentation generation
  • rapid iteration of ideas

All design decisions, testing, and final code integration are reviewed and directed by the project maintainer.

The goal is to explore how human creativity and AI tooling can work together to accelerate open-source development.

Project Status

BugShot is currently in active development.

Features and functionality may evolve as the project grows. Feedback, bug reports, and feature suggestions are welcome.

Contributing

Contributions are welcome.

If you'd like to help improve BugShot:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request

Ideas, bug reports, and feature suggestions are also appreciated via GitHub Issues.

License

This project is licensed under the MIT License.

See the LICENSE file for details.


v0.1.0 – Initial public release

About

Lightweight screenshot and annotation tool for developers. Capture → resize → annotate → save or copy instantly.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages