Sign in

iiinova is part of the Atmosphere — an open, public network where you own your identity.

mtoc.app

@mtoc.app
23 followers 7 following 28 posts

Visually-rich local music library app for Linux mtoc.app Lead developer: @3fz.org flathub.org/en/apps/org._3fz.mtoc

PostsRepliesMedia
mtoc.app @mtoc.app · 11/01/2026
mtoc 2.6 introduces a playback history list. quickly access your recent plays, open history and queue by clicking the left and right of the artwork, enqueue your history in reverse order.
231 3
mtoc.app @mtoc.app · 09/12/2025
New release: mtoc 2.5 with favorites, improved drag-and-drop reordering for queues and playlists, new shuffle options and context menus. Available later today on Flathub.
promotional banner for the mtoc 2.5 release. It features a wavy purple background, a screenshot of mtoc (music player app) displaying the library and now playing interfaces, and the text: 
mtoc 2.5
New in 2.5:
- Favorites
- Improved drag-and-drop lists
- Playlists, Album, and Discography Shuffle options in context menus
- Additional bug fixes
011 1
mtoc.app @mtoc.app · 04/12/2025
Coming soon: mtoc 2.5 will include a favorites feature. Click the heart to add tracks to a dynamic playlist. The filled heart is tinted with your system accent color 💜
031 3
mtoc.app @mtoc.app · 27/10/2025
Patch notes: mtoc 2.3.3 - Fixes a bug in the Flatpak build where the album art thumbnails didn't appear in MPRIS system media player widgets. - Improved case-insensitive artist grouping and search results. - Light/dark theme now switches without restarting the app when in "system" mode.
Screenshot of the system tray media player widget on KDE plasma, showing the album art, progress bar, and playback controls. Now playing: Dream Theater, Octavarium
010 1
mtoc.app @mtoc.app · 21/10/2025
mtoc 2.3.2, coming today, includes a new context menu with playback controls and a playlist picker for the system tray.
screenshot of a system tray context menu, showing playback controls, shuffle and repeat toggles, and a playlists menu
220 2
mtoc.app @mtoc.app · 15/10/2025
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/...
mini player showing the effect
000 0
mtoc.app @mtoc.app · 15/10/2025
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.
                ShaderEffectSource {
                    id: textureSource1
                    anchors.centerIn: parent
                    width: compositionLayer1.width
                    height: compositionLayer1.height
                    sourceItem: compositionLayer1
                    visible: false
                    live: true
                    hideSource: true
                }
                
                MultiEffect {
                    id: effect1
                    anchors.centerIn: parent
                    width: textureSource1.width
                    height: textureSource1.height
                    source: textureSource1
                    blurEnabled: true
                    blur: Math.min(1.0, root.blurRadius / 256.0)
                    blurMax: 64
                    visible: sourceImage1.status === Image.Ready || sourceImage1.status === Image.Loading
                    opacity: root.currentImageIndex === 0 ? root.backgroundOpacity : 0
                    autoPaddingEnabled: false
                    
                    Behavior on opacity {
                        NumberAnimation {
                            duration: 300
                            easing.type: Easing.InOutQuad
                        }
                    }
                }
            }
100 1
mtoc.app @mtoc.app · 15/10/2025
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).
                    Image {
                        id: sourceImage1
                        anchors.fill: parent
                        anchors.margins: 40
                        fillMode: Image.PreserveAspectCrop
                        cache: false  // Don't cache blurred backgrounds
                        asynchronous: true
                        source: root.image1Source
                        sourceSize.width: 512
                        sourceSize.height: 512
                        
                        onStatusChanged: {
                            if (status === Image.Error) {
                                console.warn("BlurredBackground: Failed to load image:", source);
                            }
                        }
                    }
                }
100 1
mtoc.app @mtoc.app · 15/10/2025
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.
    // Only create the image and blur effect if we have a valid source
    Loader {
        id: imageLoader
        anchors.fill: parent
        active: root.source != "" || root.image1Source != "" || root.image2Source != ""
        z: 1
        
        sourceComponent: Item {
            anchors.fill: parent
            clip: true  // Clip the overflowing content
            
            // Image layer 1
            Item {
                id: imageLayer1
                anchors.fill: parent
                
                // Composition layer with black padding
                Item {
                    id: compositionLayer1
                    anchors.centerIn: parent
                    width: parent.width + 80
                    height: parent.height + 80
                    visible: false
                    
                    Rectangle {
                        anchors.fill: parent
                        color: "black"
                    }
100 1
mtoc.app @mtoc.app · 15/10/2025
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.
    // Handle source changes and trigger crossfade
    onSourceChanged: {
        if (source != "") {
            // Update the non-visible layer with the new source
            if (currentImageIndex === 0) {
                // Layer 1 is visible, update layer 2
                // Clear the old source first to release memory
                if (image2Source != "") {
                    image2Source = ""
                }
                image2Source = source
            } else {
                // Layer 2 is visible, update layer 1
                // Clear the old source first to release memory
                if (image1Source != "") {
                    image1Source = ""
                }
                image1Source = source
            }
            // Toggle to the layer with the new image
            currentImageIndex = 1 - currentImageIndex
        } else {
            // Source is empty, clear both images to show black background
            image1Source = ""
            image2Source = ""
            currentImageIndex = 0
        }
    }
100 1
mtoc.app @mtoc.app · 15/10/2025
Code vibe check: blurred background with edge brightness falloff. This effect is used wherever there's a blurred background derived from the album art: separate instances for the library pane and now playing pane/compact now playing bar, and in the mini player. 🧵
mtoc main window showing the blurred background effect
131 3
mtoc.app @mtoc.app · 14/10/2025
Out today: mtoc 2.3. This update adds support for displaying lyrics, and a new file watcher enabling automatic library updates.
mtoc 2.3 promotional banner featuring a screenshot of the app showing the main window with library and lyrics displayed, "Get it on Flathub" badge, and the following text:

New in 2.3

Lyrics: embedded and external, synced lyrics with line highlighting and click-to-seek

File Watcher: fast, automatic library updates when adding and removing files from your music directory

New Settings Options: minimize to tray, single-click to play tracks
122 2
mtoc.app @mtoc.app · 05/10/2025
Hello world! This is the official account for mtoc, a music player and library browsing app for Linux. Stay tuned for feature highlights, release notes, and development progress. mtoc aims to create a polished, visually-pleasing music experience with album art in the spotlight. Find it on Flathub.
screenshot of the mtoc main window, showing the library and now playing screens
021 2