Repository navigation
Releases: Soham109/glasspad
Release list
Glasspad 0.6.0
Added
- Sound settings: Media's sound button (and Remote's More menu) opens the Mac's Sound settings: pick the output and the input, output volume, mute, balance, input volume and alert volume, like System Settings > Sound. Rows show only when the Mac can change them.
Fixed
- Sound output: the output list no longer offers loopback devices that meeting apps install (Zoom, Microsoft Teams), where picking one silenced the Mac. Alerts move with the output when they followed it, as in System Settings. A display's speakers that take no volume from the Mac say so instead of showing a dead slider.
Install
Follow the install guide for your Mac or PC and your iPhone or Android phone.
- Mac:
Glasspad-0.6.0-macos-arm64.zip, installed bypackaging/macos/install-app.sh, or built from source withinstall.sh. - Windows:
Glasspad-0.6.0-windows-x64-setup.exeorGlasspad-0.6.0-windows-arm64-setup.exe(per user, no admin), orinstall.ps1. Not code signed, so Windows asks once. - Android:
Glasspad-0.6.0-android.apk. - iPhone:
install.shon a Mac, orGlasspad-0.6.0-ios-unsigned.ipawith AltStore or SideStore from a PC (a free Apple ID renews it every 7 days).
Check the download
SHA256SUMS lists every file's SHA-256. Check them with shasum -a 256 -c SHA256SUMS (sha256sum -c on Linux), and check where a file was built with gh attestation verify <file> --repo Soham109/glasspad.
Glasspad 0.5.0
Added
- Game mode: the phone as a full screen game controller for a Mac or a Windows PC, on iPhone and Android. Open it from the mode menu. Tap ✕ to go back to the mode you were in, or tap the name at the top to open the mode menu; the first time, a line under the bar says so. On Android, Back leaves Game too.
- Game layouts: Xbox, PlayStation (shape labels), Nintendo, Simple, Racing (tilt steering, big pedals), Fight (eight buttons) and Retro.
- Game skins: Glass, Graphite, Classic, Mono, Arcade, Neon, Retro, Paper, Minimal and Pro.
- Game layout editor: drag, resize, add or remove controls on a grid, with a dead zone, turbo or toggle for each control. A built-in layout is copied before you edit it.
- Game profiles: they say which key or mouse button each control presses (Shooter, Platformer, Racing and Emulator to start from). A profile tied to a game is picked when that game is in front. Labels can show letters, shapes or the mapped keys. Profiles and layouts are kept on the computer for every phone you pair.
- Tilt aim: aim with the phone's gyroscope, off unless you turn it on.
- Haptic limits: every game haptic is a short tap, at most 16 a second and 80% strength, a rest after 20 minutes, and nothing while the phone is hot, in Low Power Mode or battery saver, or under 15% battery.
- Feel the game: the computer turns its own sound into taps and rumble on the phone, only while Game is open and the setting is on. Sound is never recorded or sent. On a Mac it needs the Screen Recording permission.
- Game on Windows: Glasspad tries a virtual controller that games read as a gamepad, and falls back to keys and mouse when Windows refuses; the phone says which one is in use. Keys are pressed by scan code so games that read raw input see them. The virtual controller has not yet been tested with a game on a real PC.
- Game on a Mac: keys and mouse, with relative mouse motion for games that lock the pointer. A true controller on a Mac needs an Apple entitlement this app does not have.
- Scroll strip: an optional slim strip along the right, left or bottom edge of the trackpad that scrolls with one thumb, for holding the phone upright. It scrolls with the same speed, natural scrolling and momentum as two fingers, with light ticks while it turns. Off by default; Settings, Trackpad, Scroll Strip, with a live preview. Works with a Mac or a PC, on iPhone and Android, with no protocol change. Two-finger scrolling on the trackpad is unchanged.
- Scroll strip options: Speed from Slow to Fast (how far the page moves per bit of thumb travel, and the flick with it); Width as a slider from thin to a little past the old Wide; Length, the full edge or half of it (centered, or the lower half where the thumb rests); Momentum on or off (off stops the moment you lift); and Keep Scrolling at the Ends, where resting the thumb near an end keeps scrolling, faster nearer the end, like a jog wheel, with a small chevron at each end. Ticks and the scroll direction stay as they were, and every default matches the strip's first version exactly.
Fixed
- Split screen: full-screen split puts both windows in place without macOS asking you to pick the second one; if it can't, the windows go side by side and your phone says why.
Install
Follow the install guide for your Mac or PC and your iPhone or Android phone.
- Mac:
Glasspad-0.5.0-macos-arm64.zip, installed bypackaging/macos/install-app.sh, or built from source withinstall.sh. - Windows:
Glasspad-0.5.0-windows-x64-setup.exeorGlasspad-0.5.0-windows-arm64-setup.exe(per user, no admin), orinstall.ps1. Not code signed, so Windows asks once. - Android:
Glasspad-0.5.0-android.apk. - iPhone:
install.shon a Mac, orGlasspad-0.5.0-ios-unsigned.ipawith AltStore or SideStore from a PC (a free Apple ID renews it every 7 days).
Check the download
SHA256SUMS lists every file's SHA-256. Check them with shasum -a 256 -c SHA256SUMS (sha256sum -c on Linux), and check where a file was built with gh attestation verify <file> --repo Soham109/glasspad.
Glasspad 0.4.0
Added
- Windows host: Glasspad for Windows 10 and 11 (x64 and arm64), a tray app with Settings, pairing and the Allow prompt. It moves the pointer, scrolls, clicks and drags, types, plays media and shows what is playing, changes volume and brightness, switches apps and moves windows across displays.
- Android app: Glasspad for Android 10 and later, with the iPhone app's screens, themes and layouts: trackpad, keyboard, media, Dock, Actions with the button editor, Remote, Present, Clipboard, Displays, Macros and StandBy. Pairs by QR code, a pasted link or a typed address.
- Every combination: a Mac or a PC works with an iPhone or an Android phone.
- Phones name the computer: they say "your Mac" or "your PC", from what the computer reports about itself.
- Phones show only what works: with a PC, the phone hides what Windows cannot do, such as Macros, Night Shift, Launchpad and the sound output picker. With a Mac nothing changes.
- Typed address: the Android app can connect by address and port on networks that block discovery.
- iPhone with a PC: each release has an unsigned
.ipafor AltStore or SideStore, which can install it with a free Apple ID, so a Mac is not needed. - Downloads in each release: the Mac app as a zip, the Windows installers, the Android app and the iPhone
.ipa, with oneSHA256SUMSand a build attestation for every file. - Installers:
install.ps1for Windows andpackaging/macos/install-app.shfor a Mac without Xcode, plus Homebrew, winget and Scoop manifests. - Protocol spec: docs/protocol.md describes the wire format in full, with test vectors every implementation passes.
Fixed
- iPhone install with your own Apple ID:
install.shnow builds a bundle id for your Apple team, so a free Apple ID other than the owner's can install the app.
Changed
- Mac: it tells the phone that it is a Mac and what it can do. Phones from 0.3.0 ignore this and work as before.
Install
Follow the install guide for your Mac or PC and your iPhone or Android phone.
- Mac:
Glasspad-0.4.0-macos-arm64.zip, installed bypackaging/macos/install-app.sh, or built from source withinstall.sh. - Windows:
Glasspad-0.4.0-windows-x64-setup.exeorGlasspad-0.4.0-windows-arm64-setup.exe(per user, no admin), orinstall.ps1. Not code signed, so Windows asks once. - Android:
Glasspad-0.4.0-android.apk. - iPhone:
install.shon a Mac, orGlasspad-0.4.0-ios-unsigned.ipawith AltStore or SideStore from a PC (a free Apple ID renews it every 7 days).
Check the download
SHA256SUMS lists every file's SHA-256. Check them with shasum -a 256 -c SHA256SUMS (sha256sum -c on Linux), and check where a file was built with gh attestation verify <file> --repo Soham109/glasspad.
Glasspad 0.3.0
Security
- Pairing: the iPhone and Mac now agree their own key on the first connection (an X25519 key exchange mixed with the QR code's secret). Once your iPhone has paired, a copy of the QR code or the pairing link is useless.
- Allow on the Mac: before a new iPhone can control your Mac, the Mac asks whether to allow it. Allow needs a click; pressing Return does not answer it. No answer within 30 seconds counts as Don't Allow.
- Every connection: each connection adds a fresh key exchange, so a key stolen later cannot unlock traffic recorded earlier.
- Pairing code: the Mac itself ends the code after 5 minutes, even if its window stays open or the Mac sleeps.
- Copy Link: the link is marked private, so clipboard history apps skip it, and it is cleared when pairing ends.
- Clipboard: Get from Mac never sends an item that a password manager marked private, and the iPhone says why.
- Album artwork: downloads use HTTPS only, at most 2 MB, and never come from an address on your local network.
- Installer: it refuses sources that are not HTTPS and downloads only over HTTPS.
Added
- Activity log: connections and media commands (which route each took and whether it worked) go to
~/Library/Logs/Glasspad/activity.logon the Mac, capped at 256 KB, with no titles or typed text. Mac Settings > Advanced > Troubleshooting > Show Log opens it. - Live Activity: it also shows on Apple Watch (in the Smart Stack) and in CarPlay.
- Install a fixed release:
GLASSPAD_REF=v0.3.0builds that release instead of the newest code. See Install.
Changed
- Update both apps: iPhones already paired keep working and move to the new key on their next connection, with no question asked. A 0.2.x iPhone cannot pair anew with an updated Mac until it is updated, and it says so. An updated iPhone still works with a 0.2.x Mac.
- Mac icon: redrawn to match the iPhone icon.
- Live Activity: it fits the narrow Dynamic Island in landscape.
- Wording: one name for each thing, US spelling, clearer errors and shorter help text. Left-Handed now says it moves Present's buttons. The Photos prompt no longer says "Deck". About mentions album artwork.
Fixed
- Media and Remote: the Mac's now-playing helper sends what plays as soon as it starts and refreshes every 5 seconds again. Before, it stayed silent until the player changed, so the phone could show an old state.
- Media and Remote: with the helper stopped, play or pause no longer goes to a paused Spotify or Music while a browser was the Mac's now playing app. It goes to the Mac's now playing instead.
- Media and Remote: on macOS 15.4 and later, the media key is used when the helper is not running, since macOS ignores Glasspad's own MediaRemote commands there.
- iPhone memory and battery: less memory and less work when idle. The Photo theme keeps its full-size photo only while it is on screen, Dock icons and website logos are capped, and screens that are still stop redrawing.
Install
Follow the install guide. It builds Glasspad on your Mac with Xcode and a free Apple ID.
Check the download
SHA256SUMS lists the source tarball's SHA-256. Check it with shasum -a 256 -c SHA256SUMS, and check where it was built with gh attestation verify glasspad-0.3.0.tar.gz --repo Soham109/glasspad.
Glasspad 0.2.1
Changed
- Next, Previous or Play or Pause tapped again while the phone reconnects counts once, so a slide is not skipped and play does not undo itself.
Removed
- The phone's own low battery note at 20% and 10%. iOS already shows its Low Battery alert at those levels. The Mac still shows the iPhone's battery.
Glasspad 0.2.0
Added
- Themes: 39 in all, including Grain (Grain, Grain Dark, Risograph, Film) and Tinted themes where everything takes one color.
- Present: a laser pointer on the slides' display, a talk clock with a tap at 5 and 1 minute left, and the screen stays on during a talk (until it is left alone for 30 minutes).
- Lock Screen controls: the Live Activity shows Remote's Back 10, Play or Pause and Forward 10 with what is playing, or Present's Back, Next and the running timer.
- Siri and Shortcuts: Open Glasspad Mode and Open Glasspad Layout. Mission Control from Siri works and says what happened.
- Mode menu: swipe the pill sideways to flip back to the previous mode or layout.
- Keyboard: Glasspad draws its own Mac keyboard, sized to fit, with the Mac's letters.
- Window highlight: pick a window on the phone and the Mac outlines it for a second.
- Battery: the Mac shows the iPhone's battery, and the phone mentions it once at 20% and 10%.
- Remote: the More menu lists the Mac's sound outputs.
- Renewal: iPhone Settings > About shows when the app needs renewing. Mac Settings > iPhone shows the last renewal and any problem in plain words.
- Website: Features and Compare menus, six feature pages and three comparisons, one footer everywhere, and Install as the main button.
Changed
- The connection to the Mac recovers faster. Taps wait briefly for a quick reconnect, and the phone says why the Mac is away: asleep, Glasspad off, locked, or this iPhone forgotten.
- Displays and Arrange are calmer, with less text.
- Clipboard moved out of the mode menu. It opens from the end of Keyboard's shortcut row, or from the Library.
- The Live Activity shows Remote, Media and Present controls instead of the trackpad's connection status.
- Siri's Open Mission Control waits for the Mac's answer and never sends a second try that could close it again.
- iPhone installs are optimized builds, lighter on battery.
Fixed
- Leaving Keyboard no longer leaves memory behind, and trying themes holds far less memory.
- Lower idle cost on the Mac and the iPhone: fewer redraws, no needless checks, timers only when needed.
- A macro stopped right after a step reports the right step.
Glasspad 0.1.2
Added
- Arrange: Split Screen opens a sheet showing which windows go where before anything moves. Choose Left & Right, Top & Bottom, Quarters or Full Screen (Split View), pick the windows and the display, then one tap.
- Window buttons for the four quarters and Return to Previous Size.
Fixed
- Mission Control, Show Desktop and App Windows did nothing: macOS stopped Mission Control when it was started directly. They now ask the Dock.
- Split Screen failed when the two windows were on different displays, and refused windows in full screen. The second window now moves to the right display first, and full-screen windows leave full screen first, as macOS does.
- Window tiling finds the Mac's Move & Resize items by their internal names, so it works in every language, and never makes the menu bar icon wait.
- Tiling leaves room for Stage Manager's strip.
- Eject All could freeze the menu bar icon while a disk was busy.
- Brightness buttons now reach the laptop screen when an external display is the main one.
- Displays moves full-screen windows and brings background windows forward.
- When paste access is denied in macOS, getting the Mac's clipboard says why instead of coming back empty.
- Labels on bright buttons are dark so they stay readable.
Update: run the installer again, or scripts/install-mac.sh and scripts/install-phone.sh in ~/Projects/glasspad.
Glasspad 0.1.1
- Fixed: the Mac menu bar icon could stop responding while Media looked up Spotify or Music, because macOS never answered a permission check. That check now never makes the app wait.
- Update: run the installer again, or
scripts/install-mac.shin~/Projects/glasspad. - Everything else is as in 0.1.0.
Glasspad 0.1.0
A control surface for your Mac, on your iPhone. A small menu bar app on the Mac and an app on the iPhone, on the same Wi-Fi. Free, private and open source.
Highlights
- Trackpad: move, click, scroll, pinch and swipe between Spaces, with a tap you can feel on every click. Follows your Mac's own trackpad settings.
- Keyboard: type or dictate, with modifier keys, shortcuts, arrows and F1 to F12.
- Media: what is playing in Spotify, Music or a browser, with artwork, scrubbing, sound output, volume and screen brightness.
- Dock: your Mac's Dock. Tap to open, hold to hide or quit, and hide the Mac's own Dock.
- Actions: buttons that follow the app in front, for more than 70 apps.
- Pinned: your own buttons, including Do Not Disturb, Night Shift, Keep Awake, Split Screen, window tiling, screenshots, apps and websites with their real logos. Folders keep them tidy; the Library finds anything.
- Macros and Shortcuts: record steps on your Mac once and replay them with a tap, or run any shortcut.
- Remote: a touch pad like the Siri Remote. Its keys follow the player, and Search types on the Mac.
- Present: Next and Back, a timer, and a laser you steer with one finger.
- Clipboard: text and images, both ways.
- Displays: every display and its windows. Move a window to another display or tile it, and set brightness, resolution and Night Shift.
- Layouts: up to three modes on one screen.
- StandBy: a clock beside Now Playing or your calendar while the iPhone charges, in dim red at night.
- Themes: 28 themes in four groups: Classic, Glass, Color, and Photo.
- Private: paired by QR code, encrypted, no account.
The full list is in the changelog.
Install
Paste this into Terminal on your Mac:
curl -fsSL https://raw.githubusercontent.com/Soham109/glasspad/main/install.sh | bashWhat it does, in order:
- Checks for Xcode and finishes its one-time setup (opens the App Store if Xcode is missing).
- Downloads XcodeGen, the tool that makes the Xcode project, and checks it against its published checksum.
- Downloads the Glasspad source to
~/Projects/glasspad. - Finds your Apple Development certificate (asks you to sign in to Xcode if there is none).
- Builds the Mac app, installs it in Applications and opens the Accessibility page in System Settings.
- Builds the iPhone app and installs it, waiting while you turn on Developer Mode and trust the app.
- Sets up automatic renewal, so your Mac renews the iPhone app before it expires.
It waits for you wherever Apple needs a click, and it is safe to run again: finished steps are skipped. Then click Glasspad in the menu bar, choose Pair Your iPhone… and scan the code.
Requirements
- A Mac on macOS 14 or later, with Xcode 26 or later (free on the App Store).
- An iPhone on iOS 18 or later, and a cable for the first install.
- A free Apple ID.
- With a free Apple ID, apps you install yourself stop opening after 7 days. Your Mac renews Glasspad over Wi-Fi when the install is 5 days old.
Known limitations
- Glasspad is not on the App Store. You build it on your Mac with Xcode.
- Renewal needs the Mac awake and the iPhone reachable within those 7 days. If it lapses, run the installer again.
- Both devices should be on the same Wi-Fi. When the iPhone cannot find the Mac there, it tries a direct Wi-Fi link between the two, which is less steady.
- One iPhone controls the Mac at a time.
- The Mac app needs Accessibility permission. Spotify and Music control asks for Automation permission, which is optional.
- Some features use parts of macOS that Apple does not document: native gestures, now playing, Night Shift and Do Not Disturb (pressed in Control Center). A macOS update can break them. Gestures then fall back to keyboard shortcuts, and Do Not Disturb to a shortcut you already have.
- Apart from installing, the only request that leaves your Wi-Fi is a new Website button asking its site for the site's name and logo.
- There has been no independent security audit.
Verified on real hardware
- Checked on an iPhone 18 Pro (iOS 27) with a MacBook Pro (macOS 27): Trackpad with haptics, Keyboard, Media, Dock and Actions, plus installing and renewing over Wi-Fi.
- Covered by automated tests only so far, including a real encrypted phone and Mac session on one machine: Do Not Disturb, Night Shift, Keep Awake, window tiling, Displays, Remote keys per player, Layouts, StandBy and the pairing camera.
- To check those on your own Mac, run
scripts/live-check.sh --install. It walks through each one, asks before every step and puts everything back. Results go to~/Library/Logs/Glasspad/.
Links
- Website: https://glasspad.sohamaggarwal.com
- Guide: https://glasspad.sohamaggarwal.com/guide
- Bugs and ideas: https://github.com/Soham109/glasspad/issues