SomaFM for Raycast
Browse and play SomaFM internet radio stations directly from Raycast.
Note: "SomaFM" is the correct branding for this service. The Raycast linter may suggest "Somafm" but we're keeping the official branding.
Features
π― Current Features (v1.0)
π Quick Access
- Menu Bar Access: Always-visible menu bar icon shows your favorite stations
- Click the π΅ icon in your menu bar
- Play any favorite station with one click
- Updates automatically when you add/remove favorites
π΅ Stream Playback
- Smart Player Detection: Automatically plays streams in your preferred media player
- Supports IINA, VLC, and Music.app
- Falls back to system default if no supported player is found
- High-Quality Streams: Uses MP3 format for best compatibility
- Quick Feedback: Shows loading status and confirms which player opened
- Now Playing: See what's currently playing on each station
- Grid view shows current track in subtitle
- List view shows with π΅ icon
- Auto-refreshes every 30 seconds
π¨ Beautiful Interface
- Grid View: Visual 3-column layout with station artwork
- List View: Compact view with listener counts
- Toggle Views: Switch between grid and list with
β+Shift+V
- Station Details: See genre, current listeners, and descriptions
β Favorites & History
- Favorites: Star your favorite stations for quick access
- Favorites appear at the top of the list
- Toggle with
β+D
or the star action
- Persists between sessions
- Recently Played: Automatically tracks your last 5 played stations
- Shows ALL recently played stations (including favorites)
- Stations appear in both Recently Played AND their regular section
- Clear history with the menu action when needed
- Helps you quickly return to stations you just discovered
π Smart Search
- Search by station name, genre, or description
- Prioritizes name matches for better results
- Real-time filtering as you type
π Organization & Sorting
- Sort Options:
- Sort by Name (
β+1
) - A-Z or Z-A
- Sort by Listeners (
β+2
) - Least to most or most to least
- Genre Grouping: Toggle genre groups with
β+G
- Station Sections: Favorites β Recently Played β All Stations
β¨οΈ Keyboard Shortcuts
Enter
- Play selected station
1-9
- Quick play stations 1-9
β+D
- Toggle favorite
β+Shift+V
- Switch between grid/list view
β+1
- Sort by name
β+2
- Sort by listeners
β+G
- Group by genre
β+β₯+C
- Copy stream URL
β+R
- Refresh station list
Installation
- Install Raycast (macOS only)
- Clone this repository
- Run
npm install && npm run build
- Import the extension into Raycast
Recommended Media Players
For the best experience, install one of these media players:
- IINA - Modern media player for macOS (recommended)
- VLC - Cross-platform media player
Without these, streams will open in Music.app or your default browser.
Usage
Browse & Play
- Open Raycast (
β+Space
by default)
- Type "soma" or "Browse SomaFM Stations"
- Browse stations in the grid or search for specific genres/stations
- Press
Enter
or use number keys 1-9
to play
- Use
β+D
to favorite stations you love
Menu Bar
- Look for the π΅ icon in your menu bar
- Click to see all your favorite stations
- Click any station to play immediately
- The menu updates automatically when you add/remove favorites
About SomaFM
SomaFM is a listener-supported, commercial-free internet radio station broadcasting from San Francisco. With over 30 unique channels of underground/alternative radio, SomaFM has been serving up electronic music, indie rock, and more since 2000.
Consider supporting SomaFM if you enjoy their stations!
Development
This extension is built with:
Project Structure
src/
βββ browse-stations.tsx # Main browse command
βββ menu-bar-player.tsx # Menu bar extension
βββ types/ # TypeScript interfaces
βββ utils/ # API, player, and storage utilities
βββ hooks/ # React hooks for state management
To Contribute
- Fork the repository
- Create a feature branch
- Make your changes
- Run
npm run lint
to ensure code quality
- Run
npm test
to ensure tests pass
- Submit a pull request
License
MIT - See LICENSE file for details
Credits
- Station data and streams provided by SomaFM
- Extension icon and station artwork Β© SomaFM
- Built with β€οΈ using Raycast