Skip to content

devmv1979-star/sfpoint_flotantededibujo

 
 

Repository files navigation

SFPoint Logo

SFPoint

Open-source screen annotation tool for macOS and Windows. Presentify alternative at $0 cost.

macOS Windows Python PyQt6 Cost License


What is SFPoint?

SFPoint is a screen annotation overlay for macOS and Windows. Toggle a hotkey, draw on your screen, keep teaching. Arrows, rectangles, circles, freehand, text, laser pointer — all on a transparent overlay that auto-fades after 3 seconds.

Built as a replacement for Presentify ($6.99). SFPoint is free, open-source, and fully customizable.

Features

  • 7 annotation tools — arrow, rectangle, circle, freehand, text, laser pointer, highlighter
  • Toggle-based shortcuts — Ctrl+key to activate, same key or Esc to deactivate
  • Auto-fade — annotations disappear after 3 seconds (configurable)
  • Laser pointer — ambar Google Slides-style, click-through (doesn't block mouse), morado ripple on click
  • No focus stealing — overlay floats above everything without interrupting your work (native OS APIs)
  • Click-through — laser always passes clicks through; other tools only capture when active
  • Floating toolbar — draggable pill showing current tool and color
  • Rebindable shortcuts — settings panel (Ctrl+S) to customize keybindings
  • Brand colors — morado (#8B5CF6) + ambar (#F59E0B) from SaaS Factory

Quick Start

macOS

Prerequisites: macOS 15+, Python 3.12+, Homebrew

# Clone
git clone https://github.com/daniel-carreon/sfpoint.git
cd sfpoint

# Python environment
python3.12 -m venv venv
source venv/bin/activate
pip install -r mac/requirements.txt

# Run
python3 main.py

Optional: Shell aliases — add to your ~/.zshrc:

alias sfpoint='pkill -f "sfpoint/main.py" 2>/dev/null; sleep 0.5; PYTHONPATH=~/Developer/software/sfpoint/venv/lib/python3.12/site-packages /opt/homebrew/Cellar/python@3.12/3.12.13/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python ~/Developer/software/sfpoint/main.py &>/dev/null & disown; echo "SFPoint running"'
alias sfpoint-off='pkill -f "sfpoint/main.py" 2>/dev/null; echo "SFPoint stopped"'

Windows

Prerequisites: Windows 10+, Python 3.12+ (from python.org)

:: Clone
git clone https://github.com/daniel-carreon/sfpoint.git
cd sfpoint

:: Python environment
python -m venv venv
venv\Scripts\activate
pip install -r win\requirements.txt

:: Run
python main.py

Double-click launcher: run win/start_sfpoint.bat directly (activates venv automatically).


Usage

Action Shortcut
Arrow Ctrl+A
Rectangle Ctrl+R
Circle Ctrl+C
Freehand Ctrl+F
Text Ctrl+T (type, Enter to place)
Laser pointer Ctrl+P (ambar glow trail)
Hide toolbar Ctrl+H
Settings Ctrl+S
Undo Cmd+Z (macOS) / Ctrl+Z (Windows)
Clear all Cmd+Shift+Z (macOS) / Ctrl+Shift+Z (Windows)
Deactivate Esc or press same shortcut again

All tool shortcuts are toggle-based: press once to activate, press again (or Esc) to deactivate.


Permissions

macOS

Required in System Settings > Privacy & Security:

  1. Accessibility — for global hotkeys and overlay interaction (add your Terminal app)
  2. Input Monitoring — for keyboard listener (add your Terminal app)

Windows

No special permissions needed. If your antivirus blocks hotkeys, add an exception for pynput or the sfpoint folder.


Architecture

Ctrl+Key (pynput) --> Toggle Tool On/Off --> Canvas Overlay (PyQt6 + platform backend)
                    |
                  QPainter Rendering
                    |
                Auto-Fade (3s delay + 0.5s fade)
                    |
              Floating Toolbar (pill UI)

Key technical decisions:

  • Platform abstraction layer (plat/) — macOS uses PyObjC/AppKit/CoreGraphics, Windows uses Win32 API via ctypes
  • Click-through togglesetIgnoresMouseEvents_ on macOS, WS_EX_TRANSPARENT on Windows
  • Qt QueuedConnection for thread-safe signals between pynput and UI
  • QPainter for all rendering (shapes, laser trail with radial gradients, text)
  • Toggle-based hotkeys instead of hold-based for better ergonomics

Build It Yourself with Claude

Want to build this from scratch? Copy PRP.md and paste it to Claude (or any AI assistant) with:

"Build this project following the PRP phases. Execute all phases sequentially, validating each one before moving to the next."

The PRP contains the complete blueprint: architecture, gotchas, anti-patterns, and validation steps. It's designed so an AI agent can build the entire project in a single session.

See CLAUDE.md for detailed development instructions and troubleshooting.


Customization

All configuration lives in config.py:

# Shortcuts (toggle-based Ctrl+key)
TOOL_SHORTCUTS = {
    "a": TOOL_ARROW, "r": TOOL_RECT, "c": TOOL_CIRCLE,
    "f": TOOL_FREEHAND, "t": TOOL_TEXT, "p": TOOL_LASER,
}

# Fade timing
FADE_DELAY = 3.0        # seconds before fade starts
FADE_DURATION = 0.5      # seconds for fade animation

# Laser pointer (subtle, elegant)
LASER_DOT_RADIUS = 5.0
LASER_GLOW_RADIUS = 14.0
LASER_TRAIL_LENGTH = 18  # clean, short trail

# Toolbar
TOOLBAR_HEIGHT = 34
TOOLBAR_WIDTH = 180

Custom shortcuts are saved to settings.json via the settings panel (Ctrl+S).


Cost Comparison

Presentify SFPoint
Cost $6.99 one-time Free
Customizable Limited Fully
Open source No Yes
Laser pointer Red Ambar (Google Slides-style)
Auto-fade Yes Yes (configurable)
Rebindable shortcuts No Yes

Troubleshooting

macOS

Problem Solution
Tool doesn't activate Grant Accessibility + Input Monitoring to your Terminal
Overlay steals focus Verify pyobjc-framework-Cocoa: pip install pyobjc-framework-Cocoa
Python version error Requires 3.12+ — brew install python@3.12
sfpoint alias not found Run source ~/.zshrc after adding aliases
Background launch fails Must use Framework Python binary (see CLAUDE.md)

Windows

Problem Solution
Hotkeys don't work Antivirus may block pynput — add sfpoint folder as exception
Overlay not on top Run app at same privilege level as target app (avoid admin/user mismatch)
Cursor doesn't hide in laser mode Known Win32 ShowCursor quirk — toggle laser off/on to reset
python not found Reinstall Python 3.12+ with PATH option enabled
win/start_sfpoint.bat closes instantly Run from cmd or PowerShell to read the error

License

MIT License. Do whatever you want with it.


Built with Claude Opus 4.6 in a single session.
From daniel-carreonSFPoint

About

Open-source screen annotation tool for macOS. Presentify alternative at $0 cost.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 98.7%
  • Other 1.3%