Skip to content

Show your face in a floating camera overlay during screen recordings

License

Notifications You must be signed in to change notification settings

ishaq-ansari/ShowMe

Repository files navigation

ShowMe πŸ“Ή

A lightweight macOS menu bar app for YouTubers and content creators

Show your face in a floating camera overlay during screen recordings

macOS Swift License


✨ Features

  • πŸŽ₯ Live Camera Preview - Display your FaceTime HD camera in a floating window
  • πŸ“ Always On Top - Keep the camera above all other windows during recording
  • πŸͺŸ Draggable & Resizable - Position and size the window exactly where you need it
  • πŸ”„ Mirror Camera - Flip the camera view horizontally
  • ⚑ Performance Optimized - Minimal CPU and memory usage during screen recordings
  • 🚫 No Dock Icon - Sits quietly in the menu bar
  • πŸŽ›οΈ Quick Controls - Easy access to all features from the menu bar
  • πŸ”’ Privacy First - No recording, no data collection, camera only when you want it

🎬 Perfect For

  • YouTubers doing tutorial videos
  • Streamers wanting picture-in-picture
  • Educators recording lessons
  • Presenters during screen shares
  • Anyone who wants to show their face during recordings

πŸ“Έ Screenshots

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ShowMe [πŸ“Ή] (Menu Bar)          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                 β”‚
        β”‚   Your Face     β”‚  ← Floating camera window
        β”‚                 β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Quick Start

For Users

  1. Download the latest ShowMe-1.0.dmg from releases
  2. Open the DMG and drag ShowMe to Applications
  3. Launch ShowMe from Applications
  4. Grant camera permissions when prompted
  5. Click the camera icon in the menu bar to show/hide your camera

For Developers

Prerequisites

  • macOS 13.0+ (Ventura or later)
  • Xcode 15.0+
  • Apple Developer Account (for code signing and notarization)

Build from Source

# Clone the repository
git clone https://github.com/yourusername/ShowMe.git
cd ShowMe

# Open in Xcode
open ShowMe.xcodeproj

# Or build from command line
./build.sh

πŸ› οΈ Building & Distribution

Development Build

# Build the app
./build.sh

# Run the app
open build/ShowMe.app

Release Build (Code Signed & Notarized)

# Complete build pipeline: build + sign + notarize + DMG
./build-release.sh \
  "Developer ID Application: Your Name (TEAMID)" \
  your-apple-id@example.com \
  your-app-specific-password \
  YOURTEAMID

Individual Steps

# 1. Build only
./build.sh

# 2. Code sign
./sign.sh "Developer ID Application: Your Name (TEAMID)"

# 3. Notarize
./notarize.sh your-apple-id@example.com app-specific-password TEAMID

# 4. Create DMG
./create-dmg.sh

πŸ“‹ Code Signing Setup

1. Get a Developer ID Certificate

  1. Join the Apple Developer Program ($99/year)
  2. Go to Certificates, Identifiers & Profiles
  3. Create a Developer ID Application certificate
  4. Download and install it in Keychain Access

2. Find Your Signing Identity

security find-identity -v -p codesigning

Look for something like:

1) ABC123DEF456 "Developer ID Application: Your Name (TEAMID)"

3. Create App-Specific Password

  1. Go to Apple ID Account
  2. Sign in
  3. In the Security section, click Generate Password under App-Specific Passwords
  4. Label it "ShowMe Notarization"
  5. Save the generated password

4. Update Bundle Identifier

In ShowMe.xcodeproj, change the bundle identifier from com.yourcompany.ShowMe to your own (e.g., com.yourname.ShowMe)

🎯 Usage Guide

Menu Bar Controls

Click the πŸ“Ή icon in the menu bar to access:

  • Show/Hide Camera - Toggle the camera preview window (⌘C)
  • Settings
    • Always On Top - Keep window above all others
    • Mirror Camera - Flip the camera horizontally
    • Window Size - Quick size presets (Small, Medium, Large, Extra Large)
  • About ShowMe - Version and info
  • Quit ShowMe - Close the app (⌘Q)

Window Controls

  • Drag - Click and drag anywhere on the window to move it
  • Resize - Drag the corners or edges to resize
  • Close - Click the red button to hide (doesn't quit the app)

Keyboard Shortcuts

  • ⌘C - Show/Hide camera preview
  • ⌘Q - Quit ShowMe

πŸ—οΈ Architecture

Technology Stack

  • SwiftUI - Modern UI framework
  • AppKit - Window management and menu bar integration
  • AVFoundation - Camera capture and preview
  • Core Animation - Smooth preview rendering

Project Structure

ShowMe/
β”œβ”€β”€ ShowMeApp.swift              # Main app entry point, menu bar setup
β”œβ”€β”€ CameraManager.swift          # Camera capture and preview logic
β”œβ”€β”€ CameraWindowController.swift # Floating window management
β”œβ”€β”€ Info.plist                   # App configuration and permissions
β”œβ”€β”€ ShowMe.entitlements         # Security entitlements
β”œβ”€β”€ ShowMe.xcodeproj/           # Xcode project
β”œβ”€β”€ build.sh                    # Build script
β”œβ”€β”€ sign.sh                     # Code signing script
β”œβ”€β”€ notarize.sh                 # Notarization script
β”œβ”€β”€ create-dmg.sh               # DMG creation script
└── build-release.sh            # Complete build pipeline

Key Components

ShowMeApp.swift

  • App lifecycle management
  • Menu bar item creation
  • User interactions and settings
  • Permission requests

CameraManager.swift

  • AVCaptureSession setup
  • Camera device management
  • Preview layer creation
  • Mirror transformation

CameraWindowController.swift

  • Floating window configuration
  • Always-on-top behavior
  • Drag and resize handling
  • Preview layer integration

🎨 UI/UX Design Decisions

Menu Bar App Pattern

  • Why: Unobtrusive, always accessible, doesn't clutter the Dock
  • Benefit: Perfect for utility apps that run in the background

Floating Window

  • Always on Top: Essential for screen recording - you want the camera visible
  • Borderless Option: Cleaner look for recordings
  • Rounded Corners: Modern macOS aesthetic

Performance Optimization

  • Lazy Camera Start: Camera only activates when window is shown
  • Efficient Preview: Uses hardware-accelerated video layers
  • Memory Management: Properly releases resources when hidden

Privacy

  • No Recording: Only preview, never saves or uploads video
  • Clear Permissions: Explicit camera permission request with explanation
  • Open Source: Users can verify what the app does

🚒 Distribution Options

Option 1: Mac App Store (Recommended for Beginners)

Pros:

  • Automatic updates
  • Built-in trust (users don't see security warnings)
  • Discoverability

Cons:

  • 30% revenue share with Apple
  • Strict review process
  • Sandboxing requirements

Steps:

  1. Create an App Store distribution certificate
  2. Create an App ID
  3. Create a provisioning profile
  4. Archive in Xcode
  5. Upload via Xcode Organizer
  6. Submit for review

Option 2: Direct Distribution (For Power Users)

Pros:

  • Full control
  • No revenue share
  • Faster updates

Cons:

  • Users see "developer cannot be verified" warning (until notarization)
  • Manual update mechanism needed

Steps:

  1. Get Developer ID certificate
  2. Sign the app (./sign.sh)
  3. Notarize with Apple (./notarize.sh)
  4. Create DMG (./create-dmg.sh)
  5. Upload to your website

Option 3: GitHub Releases (Free & Open Source)

Pros:

  • Free hosting
  • Version tracking
  • Community contributions

Cons:

  • No automatic updates
  • Need to handle security warnings

Steps:

  1. Build and sign the app
  2. Create DMG
  3. Create a GitHub release
  4. Upload the DMG as an asset

πŸ” Security & Privacy

Permissions Required

  • Camera Access - To display the video preview
    • Requested on first launch
    • Can be revoked in System Settings > Privacy & Security > Camera

Hardened Runtime

The app uses Apple's Hardened Runtime for enhanced security:

  • Code injection protection
  • Memory corruption protections
  • Secure system call handling

Notarization

Notarization ensures:

  • No known malware
  • Proper code signing
  • Verified by Apple
  • Safe to distribute outside the App Store

πŸ› Troubleshooting

Camera not showing

  1. Check permissions: System Settings > Privacy & Security > Camera
  2. Restart the app: Quit and relaunch
  3. Check camera connection: Try in Photo Booth or FaceTime
  4. Close other camera apps: Only one app can use the camera at a time

Window disappears after recording

  • The window might be on a different space/desktop
  • Use Mission Control to find it, or quit and relaunch

Performance issues

  • Close other camera apps
  • Reduce preview window size
  • Check Activity Monitor for CPU usage

"App is damaged and can't be opened"

This happens if the app isn't properly signed/notarized:

# Remove quarantine attribute
xattr -cr /Applications/ShowMe.app

For distribution, always sign and notarize properly.

πŸ›£οΈ Roadmap

v1.1 (Planned)

  • Multiple camera support
  • Shape overlays (circle, rounded rectangle)
  • Custom borders and shadows
  • Hotkey to show/hide camera
  • Remember window position

v1.2 (Planned)

  • Recording capability (optional)
  • Chroma key / green screen effect
  • Preset positions (top-left, bottom-right, etc.)
  • Opacity control

v2.0 (Future)

  • Virtual camera driver integration
  • OBS Studio plugin
  • Cloud sync for settings

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Inspired by the needs of content creators everywhere
  • Built with Apple's excellent AVFoundation framework
  • Thanks to the macOS developer community

πŸ“ž Support

⭐ Star History

If you find ShowMe useful, please consider starring the repository!


Made with ❀️ for content creators

Download β€’ Documentation β€’ Report Bug

About

Show your face in a floating camera overlay during screen recordings

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published