Now updated with:
- main player window
- CustomTkinter-based playlist UI
- borderless minimal/music mode
- borderless always-on-top PiP window with hover controls
- VLC playback backend that rebinds the video surface without intentionally resetting playback
- optional YouTube resolving via
yt-dlp - best-effort embedded album art extraction via
mutagen
pip install -r requirements.txt
You also need desktop VLC installed so python-vlc can find the VLC runtime.
python main.py- The UI is fully CustomTkinter-based for the app windows.
- Video output is embedded through VLC into a Tk/CTk frame using the frame's native window handle.
- PiP and minimal mode switch by rebinding the VLC target widget instead of intentionally stopping playback.
- Album art is best-effort. Embedded art is supported for common audio formats when available.
- YouTube playback uses
yt-dlpif installed. If a URL cannot be resolved, the app falls back to trying the URL directly.
main.py– entrypointapp/player_backend.py– VLC wrapperapp/windows/main_window.py– primary app windowapp/windows/minimal_window.py– compact music mode windowapp/windows/pip_window.py– hover-control PiP windowapp/widgets/playlist_panel.py– CustomTkinter playlist viewapp/widgets/transport_bar.py– transport controlsapp/widgets/youtube_tab.py– YouTube queue/play tabapp/utils/artwork.py– embedded artwork extractionapp/utils/youtube.py– yt-dlp resolve helper