Extension Icon

AirSync

Control your AirSync app directly from Raycast
Overview

AirSync Raycast Extension

Control your AirSync macOS app directly from Raycast with this powerful extension.

Features

This extension provides 9 commands to interact with your AirSync app:

1. πŸ“± Show Status

View detailed information about your connected Android device:

  • Device name
  • IP address and port
  • ADB connection status
  • Notification count
  • Device version

2. πŸ”Œ Disconnect Device

Quickly disconnect from your currently connected device with visual feedback.

3. πŸ”„ Reconnect Device

Reconnect to your last connected device on the current network.

4. πŸ”” View Notifications

Browse and interact with all notifications from your Android device:

  • View notification title, body, and source app with app icons
  • Reply to notifications with a text input form
  • Execute notification actions (Mark as Read, etc.)
  • Dismiss notifications with ⌘D
  • Copy notification content
  • Two-row layout with full-width detail view

5. 🎡 Media Controls

View and control media playback on your device:

  • Track title, artist, and album art
  • Playing/paused status
  • Volume level with visual bar
  • Like/dislike status
  • Interactive controls:
    • βŒ˜β‡§P: Play/Pause toggle
    • βŒ˜β‡§N: Next track
    • βŒ˜β‡§B: Previous track
    • βŒ˜β‡§L: Like/Unlike track
    • ⌘R: Refresh
    • ⌘C: Copy track info

6. πŸŽ₯ Android Mirror

Launch full device mirroring to view your entire Android screen on macOS.

7. πŸ–₯️ Desktop Mode

Launch desktop mode mirroring (requires Android 15+).

8. πŸ“± Mirror App

Browse and mirror specific apps from your device:

  • List all installed apps with icons
  • Filter by user apps or system apps
  • See which apps are listening for notifications
  • Connect ADB directly from the view (⌘A)
  • Launch any app in mirroring mode

9. πŸ”— Connect ADB

Connect to your device via ADB for mirroring features. Provides detailed feedback for:

  • Successful connection
  • Connection already in progress
  • ADB not found (with installation instructions)
  • Device not found
  • Various connection errors

Requirements

  • macOS with AirSync app installed and running
  • Raycast installed
  • Node.js 20+ (for development)

Installation

From Source

  1. Clone this repository:
git clone https://github.com/sameerasw/airsync-raycast.git
cd airsync-raycast
  1. Install dependencies:
npm install
  1. Run in development mode:
npm run dev
  1. Build for production:
npm run build

Development

Project Structure

airsync-raycast/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ status.tsx              # Device status command
β”‚   β”œβ”€β”€ disconnect.tsx          # Disconnect command
β”‚   β”œβ”€β”€ reconnect.tsx           # Reconnect command
β”‚   β”œβ”€β”€ notifications.tsx       # Notifications list with actions
β”‚   β”œβ”€β”€ reply-notification.tsx  # Reply form for notifications
β”‚   β”œβ”€β”€ media.tsx               # Media player with controls
β”‚   β”œβ”€β”€ launch-mirroring.tsx    # Full device mirroring
β”‚   β”œβ”€β”€ desktop-mode.tsx        # Desktop mode mirroring
β”‚   β”œβ”€β”€ mirror-app.tsx          # App-specific mirroring
β”‚   β”œβ”€β”€ connect-adb.tsx         # ADB connection command
β”‚   └── utils/
β”‚       └── applescript.ts      # AppleScript utilities
β”œβ”€β”€ assets/
β”‚   └── extension-icon.png      # Extension icon (512x512)
β”œβ”€β”€ package.json                # Extension manifest
└── tsconfig.json               # TypeScript configuration

AppleScript Commands Used

The extension communicates with AirSync using these AppleScript commands:

Device Management

  • tell application "AirSync" to get status - Get device status (returns JSON)
  • tell application "AirSync" to disconnect - Disconnect from device
  • tell application "AirSync" to reconnect - Reconnect to device
  • tell application "AirSync" to connect adb - Connect via ADB

Notifications

  • tell application "AirSync" to get notifications - Get notifications (returns JSON array)
  • tell application "AirSync" to notification action "id|action_name|reply_text" - Perform notification action
  • tell application "AirSync" to dismiss notification "id" - Dismiss notification

Media Controls

  • tell application "AirSync" to get media - Get media info (returns JSON)
  • tell application "AirSync" to media control "toggle" - Play/pause
  • tell application "AirSync" to media control "next" - Next track
  • tell application "AirSync" to media control "previous" - Previous track
  • tell application "AirSync" to media control "like" - Like/unlike track

Mirroring

  • tell application "AirSync" to launch mirroring - Launch full device mirroring
  • tell application "AirSync" to desktop mode - Launch desktop mode
  • tell application "AirSync" to get apps - Get list of apps (returns JSON)
  • tell application "AirSync" to mirror app "package_name" - Mirror specific app

Scripts

  • npm run dev - Run in development mode with Raycast
  • npm run build - Build the extension
  • npm run lint - Lint the code
  • npm run fix-lint - Fix linting issues

License

MIT License - see LICENSE file for details.

Author

Created by @sameerasw

Links


Made with ❀️ for the AirSync community