Now Playing Widget for Übersicht
April 21, 2026 · View on GitHub
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).
Features
- 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
Screenshots



Installation
- 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.
Player Priority
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).
Customization
Widget Size
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 size
- `100$ = \text{default} \text{size} (300 \times 300\text{px})
- = 25% \text{smaller} (225 \times 225\text{px})
- $125` = 25% larger (375×375px)
All elements (text, spacing, shadows) scale proportionally, maintaining visual consistency at any size.
Advanced Styling
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
Logging
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.
Troubleshooting
Widget Not Updating
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
Permissions Issues
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.
Privacy and Security
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.
Acknowledgments
License
This project is licensed under the MIT License - see the LICENSE file for details.