Skip to content

Files on disk

Everything lives in $XDG_CONFIG_HOME/muxget, or ~/.config/muxget.

file holds
state downloads, queues, download folder, nerd font choice
theme the remembered theme name
rules routing rules
channels channels to sync, with each one's last sync date
aria2c.args, yt-dlp.args, wget.args backend flags
crawl.args crawl defaults, from the crawler tab
themes/*.toml your own themes
creds/ one 0600 credentials file per running download

What persists

Your download list, your queues (their names, slots, schedules and pauses), the download folder and the theme are saved as you change them. There is no save step, and no way to forget.

The state file

# ~/.config/muxget/state
dir = /home/you/Downloads
nerd = false
queue = default|3||0|
queue = media|7|22:00-06:00 mon-fri retry=3|1|paused
download = 0|done|100|https://example.com/linux.iso
download = 1|queued|12.5|https://example.com/x.iso
over = /tmp/here||2M||wget|--recursive --level=2
tries = 1
line fields
queue name|slots|schedule|id|paused
download queue|status|percent|url
over dir|name|rate|user|backend|args
pid the process that was running
tries retries already spent

over, pid and tries attach to the download line above them. The url is the last unsplit field, so one containing a | survives. A line that does not parse is skipped rather than losing the whole file, and fields added in later versions are optional, so an older file still loads.

What comes back

was comes back as
done, failed, cancelled the same, as history
paused paused
a paused queue paused
running queued, resuming from its partial file
queued queued
retries spent still spent
a password gone, type it again

Resuming a row that was paused in an earlier run puts it back in the queue rather than trying to continue a process that died with that session.

Next: how it works underneath.