Note: this page describes how the current versions work starting with v8.3.0. Earlier versions used other formats that can still be read but not written.
The mtxcfg file format is generally UTF-8 encoded JSON. It reflects closely how the data is stored internally when the GUI runs. Here are a couple of points to be aware of if you want to create such files yourself or if you want to edit them.
Making the format more readable
The GUI uses a compact format of JSON by default in which all superfluous whitespaces have been removed. You can enforce a properly indented format by having the environment variable »MTX_JSON_FORMAT« set to the value »indented« before starting the GUI.
Note that existing job queue files will only be written if the associated job changes in any way. If you want to enforce such a change simply change it's status (e.g. by setting it to »start manually«).
Notes about a couple of the memers used in the files:
»objectId« is just a numeric value uniquely identifying each object within the file. The GUI uses memory addresses, but you could just as well use serial numbers.
properties are the key/value pairs output by mkvmerge --identify-for-mmg. Note that mkvmerge escapes certain characters, and that escaping has already been undone when the values are stored in the .mtxcfg.
The »type« member for a track is the numeric track type. See this list: audio equals 0, all following are numbered sequentially.
Tye »type« member for containers is the numeric container type. See this list: unkown equals 0, all following are numbered sequentially.
The job queue
Each job in the queue gets assigned a Globally Unique Identifier. Those are used for the file name as well in order to ensure that each job file has a unique name. This also facilitates copying those job files to another installation without clashing with any existing job queue file on that installation, be it on the same computer or on other computers.
If you you want to manually add your own jobs to the queue without the GUI and you're worried about having to name the files in a similar way: don't be. The GUI should pick up all files in the jobQueue directory whose extension is ».mtxcfg« and assign a GUID automatically.
There's one important distinction between .mtxcfg saved from the merge tool and the .mtxcfg used in the jobQueue. The files in the jobQueue contain more information on the top level, and the merge configuration is nested one level down in the »muxConfig« key.
Think of structures/classes in a programming language. There's a class called »MuxConfig« and one called »Job«. »Job« contains a member of type »MuxConfig«, and that's how they're stored in the jobQueue. Manually-saved .mtxcfg files from the merge tool, however, only contain the »MuxConfig« instance and aren't wrapped in an instance of »Job«.