A sleek Now Playing widget for Übersicht that displays the current track information along with album artwork.
Currently supports:
- Spotify
- Apple Music
Inspired by long abandoned apps like Bowtie and CoverSutra, but focused solely on track information display, not control (I never really used those apps to control my media player).
- Proportional Scaling: Resize the entire widget with a single constant while maintaining visual consistency
- Intelligent Track Formatting: Automatically styles secondary content (parentheses, brackets, dash-separated text) at 80% size with smart line breaking
- Optimized Artwork:
- Apple Music uses base64 data URLs for instant artwork display
- Spotify uses smart URL-based caching to avoid redundant downloads
- Modern Typography: Apple system fonts for native macOS integration
- Reliable Player Detection: Uses
pgrepfor robust process detection - Unified State Management: All track and state information stored in a single JSON file
- Configurable Logging: Multiple log levels with automatic rotation and retention management
- Make sure you have Übersicht installed
- Download the ZIP file from Releases.
- Move the extracted folder (
now-playing.widget) into your "Widgets" folder (Ubersicht -> "Open Widgets Folder") - That's it! The widget works out of the box with no additional configuration required.
When multiple music players are running at the same time, the widget will display information based on player priority. The default priority is:
- Spotify
- Apple Music
The first player in the list gets priority when multiple players are active. If only one player is running or playing, that player will be displayed regardless of priority.
Player priority is currently set in lib/get_track_metadata.sh (line 29: PLAYER_PRIORITY).
The widget includes a proportional scaling system for easy resizing. Edit the WIDGET_SCALE constant in now-playing.jsx (line 16):
const WIDGET_SCALE = 100; // Default size100= default size (300×300px)75= 25% smaller (225×225px)125= 25% larger (375×375px)
All elements (text, spacing, shadows) scale proportionally, maintaining visual consistency at any size.
For detailed customization, all styling is configured in the className export in now-playing.jsx:
- Colors, fonts, and shadows
- Widget positioning (default: bottom-left)
- Opacity when paused
The widget includes simple logging for debugging. Edit the constants at the top of lib/logging.sh to configure:
LOG_MODE: Set toOFF,ERROR,WARN,INFO, orDEBUG(default:ERROR)LOG_RETENTION_DAYS: Days to keep old logs (default: 7)LOG_MAX_SIZE_MB: Max log size before rotation (default: 5MB)
Logs are stored in the logs/ directory with automatic rotation (api.log → api.1.log → api.2.log, etc.). Higher numbers indicate older log files.
If the widget isn't updating with the current track:
- Make sure your music player (Spotify or Apple Music) is running and playing music
- Check the widget's console output for errors in Übersicht
- Refresh the widget in Übersicht
- Enable debug logging in
lib/logging.shand check the logs
The widget uses AppleScript to communicate with your music players. If you encounter permission issues, ensure Übersicht has the necessary accessibility permissions in System Preferences > Security & Privacy > Privacy > Automation.
The widget uses macOS AppleScript to retrieve track information directly from Spotify and Apple Music. No data is sent to any external servers. All communication happens locally on your machine.
This project is licensed under the MIT License - see the LICENSE file for details.


