Settings
MixMusic's settings page by page, finding a setting by typing, settings.json, the command palette, refreshing a page and the keyboard shortcuts.
Open Settings with the gear in the sidebar, Ctrl , (⌘ , on macOS), or Settings in the command palette. What you change applies at once: there's nothing to save.
The pages of Settings
Settings has seven sections, named across its top: Appearance, Playback, Accounts, Plugins, Desktop, Shortcuts and About. Each is a list of groups, and each group a list of rows.
Appearance
How MixMusic looks; Look and feel tells all of it.
| Group | What's there |
|---|---|
| Layout | Blend, Expressive, Crate or Tiles. |
| Theme | Follow the computer, with In light mode and In dark mode; a card for each theme; get more themes, which opens the marketplace, and open themes folder. Themes that didn't load are listed with the reason. |
| Theme options | The options of a built-in theme that has some, as Aurora's drifting lights and glass blur. |
| Colour and type | Colours from a file (pywal, matugen or a file of your own) and its Colour file, Follow the artwork, Accent colour, Zoom, Text size, Density and Icons only in the sidebar. |
Playback
How MixMusic plays.
| Group | What's there |
|---|---|
| Spotify tracks | How Spotify tracks play: In MixMusic, from Spotify (Premium, on Windows), On Spotify Connect, with the Device that plays them, or In MixMusic, from YouTube Music. See Spotify. |
| Sound | Quality (best, or data saver), Crossfade (off, or 1 to 12 seconds), Even loudness, Volume levelling, Play 5.1 surround when a track has it, Autoplay, Skip songs made with AI and Skip songs you dislike. |
| Speed | Songs and Podcasts, each from 0.5× to 3×, at the tracks' own pitch, with normal to go back to 1×. |
| Music videos | Show the video of music videos, on the now playing page. |
| Equalizer | The Equalizer switch, a Preset (Flat, Bass boost, Treble boost, Vocal, Electronic, Rock, Acoustic, Late night or Lo-fi), and the preamp and ten bands, from −12 to +12 dB. |
| Lyrics | Translate lyrics to: the language the translate switch beside the lyrics shows them in. |
| Offline cache | Tracks kept and Covers kept, each with clear, and the cache's Size: off, 512 MB, 1 GB, 4 GB or 16 GB. |
| Downloads | How many tracks are downloaded and how much room they take, with show; their Folder, with open and change; Download on metered connections and Download songs added later. |
| Tools | yt-dlp, which MixMusic installs and keeps up to date, the JavaScript runtime it runs with (found by itself, or Deno, Node.js, Bun or QuickJS), and Own yt-dlp, the path to one of yours. |
Accounts
Your YouTube Music, Spotify and Last.fm accounts: signing in and out, the YouTube Music channel you use, the switch that adds what you play to your YouTube Music history, and the switch that pauses scrobbling. Accounts tells each step.
Plugins
Installed plugins: each plugin you have, with what it is, who made it, a switch that enables it, and a button that removes it. get plugins opens the marketplace, open plugins folder opens the folder of your own, and reload finds them again. Plugins that didn't load are listed with the reason. Marketplace tells more.
Desktop
The On the desktop group:
| Row | What it does |
|---|---|
| Close to the tray | Closing the window keeps the music playing; quit from the tray icon. Off at first. |
| Media keys | The keyboard's play, next and previous keys control MixMusic. On at first. |
| Notifications | Tells what starts playing while MixMusic's window isn't in front. On at first. |
| Show what plays in the window title | The window's title names the track that plays. On at first. |
| Show what plays on Discord | Your Discord profile shows what you listen to. On at first. Under it, Discord application ID, to show another application's name. |
| Player around the notch | The player around a MacBook's notch. On at first, and shown only on Macs with a notch. |
| Start at login | Starts MixMusic, hidden, when you sign in to your computer. |
| Settings file | open opens settings.json, show in folder shows it in its folder. |
| Reset settings | Puts back the settings of a new install, after asking. Your accounts, library and add-ons stay. |
On the desktop tells what each does.
Shortcuts
Every command, by group, with its keys: From any app first, the global shortcuts, then playback, go to, view, add-ons and settings, then the themes and the plugins' commands. See Keyboard shortcuts below.
About
| Group | What's there |
|---|---|
| MixMusic | The Version, with the system and how this copy was installed; whether a newer version is out, with what's new and install (or its download, for a copy that can't replace itself); the folder your data lives in; and source code, contribute, report a problem and open logs folder. |
| Updates | Check for updates, at start and every few hours, and Install updates without asking, which downloads them in the background for the next launch. |
| Licenses | The licenses of the code and the typefaces MixMusic includes, each with show. |
Without Install updates without asking, a new version asks in a pop-up:
install it, later, which asks again at the next start, or skip
this version. The .deb, the .rpm, the AppImage and the Flatpak can't
replace their own files, so they offer the new version's download instead.
report a problem opens a new issue on GitHub with your version,
system, theme and plugins filled in.
Find a setting by typing
The search the settings box, under the sections' names, finds settings as you type: by their name, their description, their group or their section, regardless of case, accents or spelling, so "color" finds Accent colour. Each setting found keeps its control, so you change it right there.
- Each group found has a link to its own section, which shows the group there.
- The search is part of the page's location: Back returns to it.
- It finds a shortcut by its keys too, as "ctrl+k", and a theme by its name.
- Whenever you type in the command palette, its last item is Search the settings for what you typed. The command Search the settings opens the box; it has no key at first, which Settings › Shortcuts can give it.
- The box doesn't take the keyboard's focus when Settings opens.
settings.json
MixMusic keeps your settings in settings.json, in its data folder:
| System | settings.json |
|---|---|
| Windows | %AppData%\MixMusic\settings.json |
| macOS | ~/Library/Application Support/MixMusic/settings.json |
| Linux | ~/.config/MixMusic/settings.json |
| Linux, the Flatpak | ~/.var/app/io.github.fzn0x.mixmusic/config/MixMusic/settings.json |
Settings › Desktop › Settings file opens it, or shows it in its folder, and
so does Open the settings file in the command palette. Settings › About
names the data folder. You can keep the file with your dotfiles: a
settings.json that is a link to another file stays a link.
Edit it while MixMusic runs
Save the file, and what you changed applies at once, as if you had changed it in Settings; a toast says "Applied settings.json". MixMusic reads the file again before it saves to it, so it doesn't write over an edit it hasn't read.
- A key you take out goes back to its default, as at a new install.
Taking out
spotifyClientIdsigns you out of Spotify, and plugins you add toenabledPluginsstart without asking. - A key MixMusic doesn't know stays until its next save, which drops it, and the toast says so. A value out of its range goes back into it, and the toast says that too.
- Encodings. Save it as UTF-8. A file with a byte order mark, or in UTF-16, as Windows PowerShell 5.1 writes it, reads too.
Its keys are short names of the settings, as theme, layout, zoom,
closeToTray, notchPlayer, shortcuts and globalShortcuts. Open the
file to see them all, each with its value: MixMusic writes every one.
When it has a mistake
A file that isn't valid JSON, as one with a comma before a }, is told a
moment after you save it: a toast says "settings.json has a mistake" with
the line and the column, as "line 4, column 1: a comma before } has nothing
after it", and a panel at the top of Settings says it too, with open
settings.json. Meanwhile:
- MixMusic goes on with the settings it had, and doesn't save to the file until it reads again. What you change in Settings is saved once it does.
- If MixMusic quits first, it keeps your text as
settings.json.brokenbeside it, and saves its settings in its place. - A file that doesn't read as MixMusic starts is kept the same way, as
settings.json.broken, and MixMusic starts with the settings of a new install; a toast says so, with show.
The command palette
Ctrl K (⌘ K on macOS) opens the command palette, which lists every command: MixMusic's, a "Theme:" command for each theme, and those of your plugins, each with its group and its keys.
- Type to keep the commands whose name or group holds what you typed.
- ↑ and ↓ move through the list, and Enter runs the command chosen.
- Once you type, the first item is Search for what you typed, which searches YouTube Music and Spotify, and the last is Search the settings for it.
Refresh a page
Refresh this page asks the services again for what the page shows, without restarting MixMusic: press F5 (⇧ ⌘ R on macOS), or the refresh button after the back and forward arrows. It's in the command palette and macOS's View menu too.
- The page keeps showing what it has until the answers come, with a spinner in the button meanwhile. If the refresh fails, as offline, the page keeps what it showed, and a toast says why.
- Home, searches, albums, artists, playlists, Explore, your Spotify and YouTube Music libraries, the lyrics, the marketplace and Settings' checks refresh. Plugins' pages and widgets render again.
- A playlist, an album or a mix you downloaded downloads the songs added to it since, as you refresh it.
- The button is dimmed on pages that always show what is current, as your liked songs and the stats.
- Ctrl R (⌘ R) stays Repeat.
Pull to refresh
Pull a page down past its top to refresh it: with two fingers on a touchpad, a finger on a touchscreen, or the mouse wheel turned up three notches or more while the page is at its top. A strip above the page grows as you pull and says when letting go refreshes.
Scrolling that carries the page up to its top never pulls, a fling's momentum included, and neither does scrolling sideways, Shift and the wheel over a shelf, or scrolling the lyrics on the now playing page. Pages whose refresh button is dimmed don't pull. While your system asks for less motion, the strip opens and closes at once.
Keyboard shortcuts
These are the keys of a new install. Ctrl on Windows and Linux
is ⌘ on macOS, and Alt is ⌥ there. Shortcuts of
a single key, as Space, M and the arrows, work
while you're not typing in a text field. The ID is the command's name in
settings.json.
Playback
| Command | Windows and Linux | macOS | ID |
|---|---|---|---|
| Play or pause | Space | Space | player.toggle |
| Next track | Ctrl → | ⌘ → | player.next |
| Previous track | Ctrl ← | ⌘ ← | player.previous |
| Forward 10 seconds | → | → | player.forward |
| Back 10 seconds | ← | ← | player.back |
| Volume up | ↑ | ↑ | player.volumeUp |
| Volume down | ↓ | ↓ | player.volumeDown |
| Mute | M | M | player.mute |
| Shuffle | Ctrl S | ⌘ S | player.shuffle |
| Repeat | Ctrl R | ⌘ R | player.repeat |
| Like what plays | Ctrl L | ⌘ L | player.like |
| Dislike what plays | Ctrl D | ⌘ D | player.dislike |
| Speed up | none | none | player.faster |
| Slow down | none | none | player.slower |
| Normal speed | none | none | player.normalSpeed |
| Start a radio of what plays | none | none | player.radio |
Go to
| Command | Windows and Linux | macOS | ID |
|---|---|---|---|
| Go home | Alt 1 | ⌥ 1 | go.home |
| Library | Alt 2 | ⌥ 2 | go.library |
| Liked songs | Alt 3 | ⌥ 3 | go.liked |
| Now playing | Alt 4 | ⌥ 4 | go.nowPlaying |
| Explore | Alt 5 | ⌥ 5 | go.explore |
| Search | Ctrl F | ⌘ F | go.search |
| Settings | Ctrl , | ⌘ , | go.settings |
| Downloads | none | none | go.downloads |
| Stats | none | none | go.stats |
| Marketplace | none | none | go.marketplace |
| Search the settings | none | none | go.settingsSearch |
View
| Command | Windows and Linux | macOS | ID |
|---|---|---|---|
| Command palette | Ctrl K | ⌘ K | view.palette |
| Show or hide the queue | Ctrl J | ⌘ J | view.queue |
| Show or hide the lyrics | Ctrl Shift L | ⇧ ⌘ L | view.lyrics |
| Mini player | Ctrl M | ⌘ M | view.mini |
| Collapse or expand the sidebar | Ctrl B | ⌘ B | view.sidebar |
| Refresh this page | F5 | ⇧ ⌘ R | view.refresh |
| Zoom in | Ctrl =, also Ctrl Shift = and Ctrl with the keypad's + | ⌘ =, also ⇧ ⌘ = and ⌘ with the keypad's + | view.zoomIn |
| Zoom out | Ctrl - | ⌘ - | view.zoomOut |
| Reset zoom | Ctrl 0 | ⌘ 0 | view.zoomReset |
| Show or hide the video of music videos | none | none | view.video |
Add-ons and settings
| Command | Windows and Linux | macOS | ID |
|---|---|---|---|
| Reload add-ons | none | none | addons.reload |
| Open the settings file | none | none | settings.openFile |
| Theme: name, one for each theme | none | none | theme.<theme id> |
Plugins' commands follow, with the keys their plugin gives them, if any.
Arrows, Space and the other keys
- ← and → go back and forward 10 seconds, and ↑ and ↓ turn the volume up and down. The search box keeps the arrows for its cursor, and sliders, lists and the stats page's chart keep them while they have the keyboard's focus.
- The arrows don't scroll a page: the mouse wheel, Page Up and Page Down, and Home and End do.
- After you click a button, a tile or a switch, Space still plays or pauses. A control you reach with Tab takes Space and Enter itself.
- The mini player takes no shortcuts but the zoom's.
- Keys that work from any app are the global shortcuts: see Global shortcuts.
Change a shortcut
In Settings › Shortcuts, each command's row shows its keys, or "none".
- Choose change on the row (or set, when it has none).
- Press the keys. Escape cancels, and Backspace removes the shortcut.
A command that had those keys gives them up, and a toast says it has no shortcut now. reset, on a row you changed, gives the command its own keys back, from the command you gave them to; reset all, at the top of the page, puts back every shortcut and removes every global shortcut.
In settings.json, shortcuts holds the keys you changed, by the
command's ID, written as "Mod+Shift+M": Mod is Ctrl, or
⌘ on macOS, the other modifiers are Ctrl, Alt, Shift and
Meta, and keys have names such as K, 5, F5, Space, Enter,
ArrowLeft and PageDown. An empty value, "", takes a command's
shortcut away. globalShortcuts holds the global shortcuts the same way.
"shortcuts": { "player.mute": "Mod+Shift+M", "view.mini": "" },
"globalShortcuts": { "player.toggle": "Mod+Alt+P" }