banner
mtoc.app
@mtoc.app
Visually-rich local music library app for Linux
by @3fz.org
https://flathub.org/en/apps/org._3fz.mtoc
This update also enables synchronization between the lyrics highlighting and progress bar position while playback is paused, a small change that you will appreciate if you like to pause the song and move the progress slider to read the lyrics at a given point before resuming.
October 21, 2025 at 4:02 AM
The system tray icon, previously broken in the 2.3 and 2.3.1 builds distributed on Flathub, is now fixed with the addition of the --talk-name=org.kde.StatusNotifierWatcher permission in the Flatpak manifest.
October 21, 2025 at 4:02 AM
The result is subtle but creates good contrast at the edges of containers with a variety of contents: important for an interface that's entirely drawn on a "translucent" frosted glass effect. github.com/asa-degroff/...
October 15, 2025 at 12:11 PM
but no part of the resulting image will actually be black. And since the blur is radial, there is also a subtle rounded effect at the corners, which closely emulates how light passing through a rectangular aperture looks in real life. A simpler linear gradient was tried, but didn't achieve this.
October 15, 2025 at 12:11 PM
Why create a composition layer 80px larger than the parent and then clip it to size? The blur effect works by averaging colors of neighboring pixels. With the black border being outside of the parent dimensions, black will be smoothly blended in,
October 15, 2025 at 12:11 PM
The effect: the composite layer has the blur applied (the blur radius is 64, the code may be a bit sloppy here from past experimentation). The opacity transition is set to 300ms inOutQuad for a smooth look. This effect is purely decorative, so the animation duration doesn't slow down the UX.
October 15, 2025 at 12:11 PM
The album art image: this is then placed on top of the black layer with 40px margins all around (centering it within the black rectangle). The size is capped at 512px (cropped to fit parent aspect ratio) for efficiency (smaller can make it look chunky, but anything larger will get blurred anyway).
October 15, 2025 at 12:11 PM
Setup: source check, anchor to parent, clip: true. This sets the result to match the size of the parent container.
Composition layer with black padding: this is key to the subtle edge falloff. Another layer is created, 80px larger in both dimensions than the base layer, and filled with black.
October 15, 2025 at 12:11 PM
First: why two layers? During animated opacity transitions, both images will be visible for the duration of the transition. This achieves the effect smoothly without transitioning to a solid color in between images. Loading them as two layers and changing the sources makes this easy.
October 15, 2025 at 12:11 PM
Other new features toggleable in settings include:
- minimize to tray when closing the main window
- single-click to play tracks
October 14, 2025 at 12:41 AM
The new file watcher is implemented using the QFileSystemWatcher class to watch your chosen music directories for changes. Newly added (or removed) music will be automatically reflected in the library - no manual scanning or restarting required.
October 14, 2025 at 12:41 AM
External lyrics are automatically matched to audio files in the same directory. Exact base file name matches are paired, and fuzzy matching as a fallback finds the closest matching file name to pair lyrics with tracks. To populate your library with lyrics, check out LRCGET:
Install LRCGET on Linux | Flathub
Download synced LRC lyrics
flathub.org
October 14, 2025 at 12:41 AM
mtoc supports the standard lyrics tag for unsynced lyrics; embedded synced lyrics are supported using the SYLT standard for MP3 files.
External lyrics, synced and unsynced, are supported using the .lrc standard (.txt will also work). Shoutout to @s20n.dev for the lyrics implementation.
October 14, 2025 at 12:41 AM