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 โ+Dor 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 (โ+Spaceby default)
- Type "soma" or "Browse SomaFM Stations"
- Browse stations in the grid or search for specific genres/stations
- Press Enteror use number keys1-9to play
- Use โ+Dto 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 lintto ensure code quality
- Run npm testto 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