← Back to Skills
DevOps

hidpi-mouse

zeyuyuyu By zeyuyuyu 👁 21 views ▲ 0 votes

Universal HiDPI mouse click handling for Linux desktop automation.

GitHub
---
name: hidpi-mouse
description: Universal HiDPI mouse click handling for Linux desktop automation. Auto-detects scale factor or allows calibration for any screen resolution/DPI. Converts Claude display coordinates to xdotool screen coordinates.
metadata: {"os": ["linux"], "requires": {"bins": ["xdotool", "scrot", "python3"]}}
user-invocable: false
---

# HiDPI Mouse Skill

Universal mouse coordinate handling for desktop automation across different screen configurations.

## πŸš€ Quick Start

```bash
# Click at Claude display coordinates (auto-scales)
./scripts/click.sh 500 300

# First time? Run calibration for best accuracy
./scripts/calibrate.sh
```

## πŸ“ How It Works

When Claude displays a screenshot, it scales it down. This skill converts coordinates:

```
Claude Display Coords β†’ Scale Factor β†’ xdotool Screen Coords
```

The scale factor depends on:
- Screen resolution (1080p, 1440p, 4K, etc.)
- DPI settings (96, 144, 192, etc.)
- Claude's display viewport

## πŸ”§ Scripts

### click.sh - Click at coordinates
```bash
./scripts/click.sh <x> <y>           # Auto-scaled click
./scripts/click.sh --raw <x> <y>     # No scaling (screen coords)
./scripts/click.sh --double <x> <y>  # Double click
./scripts/click.sh --right <x> <y>   # Right click
```

### calibrate.sh - Setup & Configuration
```bash
./scripts/calibrate.sh              # Interactive calibration
./scripts/calibrate.sh info         # Show current config
./scripts/calibrate.sh test         # Test current scale
./scripts/calibrate.sh set 2.08     # Manually set scale
./scripts/calibrate.sh reset        # Reset to auto-detect
```

### detect-scale.sh - Get scale factor
```bash
./scripts/detect-scale.sh           # Returns scale (e.g., 2.08)
```

### Other scripts
```bash
./scripts/move.sh <x> <y>           # Move mouse
./scripts/drag.sh <x1> <y1> <x2> <y2>  # Drag
./scripts/reliable_click.sh <x> <y> [--window "Name" --relative]
```

## 🎯 Calibration (Recommended for New Systems)

For best accuracy on your specific system:

```bash
./scripts/calibrate.sh
```

This will:
1. Create a calibration image with markers at known positions
2. Ask you where the markers appear in Claude's display
3. Calculate and save the exact scale factor

## πŸ“Š Common Scale Factors

| Screen | DPI | Typical Scale |
|--------|-----|---------------|
| 1920Γ—1080 | 96 | 1.0 - 1.2 |
| 2560Γ—1440 | 96 | 1.3 - 1.5 |
| 3024Γ—1772 | 192 | 2.08 |
| 3840Γ—2160 | 192 | 2.0 - 2.5 |

## πŸ” Troubleshooting

### Clicks are offset
```bash
# Run calibration
./scripts/calibrate.sh

# Or manually adjust
./scripts/calibrate.sh set 2.1  # Try different values
```

### Check current configuration
```bash
./scripts/calibrate.sh info
```

### Reset everything
```bash
./scripts/calibrate.sh reset
rm -f /tmp/hidpi_scale_cache
```

## πŸ“ Configuration Files

- `~/.config/hidpi-mouse/scale.conf` - User-set scale (highest priority)
- `/tmp/hidpi_scale_cache` - Auto-detected scale cache (1 hour TTL)

## 🌐 Universal Compatibility

This skill auto-adapts to:
- βœ… Different screen resolutions (1080p to 4K+)
- βœ… Different DPI settings (96, 120, 144, 192, etc.)
- βœ… HiDPI/Retina displays
- βœ… Multi-monitor setups (primary display)

## πŸ’‘ Usage Tips

1. **Always calibrate** on a new system for 100% accuracy
2. **Re-calibrate** if you change display settings
3. **Use `--raw`** if you already have screen coordinates
4. **Check `calibrate.sh info`** to see current settings

## πŸ“ Example Workflow

```bash
# 1. Take screenshot
scrot /tmp/screen.png

# 2. View in Claude, identify button at display coords (500, 300)

# 3. Click it
./scripts/click.sh 500 300

# 4. If off-target, calibrate
./scripts/calibrate.sh
```

---

*Tested on: Ubuntu/Debian with X11, various resolutions and DPI settings*
devops

Comments

Sign in to leave a comment

Loading comments...