Multi-Mode Option

Ventoy will define a json object for every plugin to set the configuration.
For example, control for Golbal Control Plugin, theme for Theme Plugin, menu_alias for Menu Alias Plugin ...

All these objects are multi-mode options.

What does that mean?
Take theme plugin for example, you can set a theme object in ventoy.json and it will take effect in all BIOS mode.

{
    "theme": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1920x1080"
    }
}

Also, you can set theme_legacy theme_uefi theme_ia32 theme_aa64 theme_mips and correspondingly they will take effect in x86 Legacy BIOS, x86_64 UEFI, IA32 UEFI, ARM64 UEFI and MIPS64 UEFI mode.

{
    "theme_legacy": {
        "display_mode": "CLI"        
    },
    "theme_uefi": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1920x1080"
    },
    "theme_ia32": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1920x1080"
    },
    "theme_aa64": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1920x1080"
    },
    "theme_mips": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1920x1080"
    }
}

You can also use the two styles at the same time. For example you can set a theme_legacy and a theme
Then theme_legacy will be used for Legacy BIOS mode and theme will be used for other mode.

{
    "theme_legacy": {
        "display_mode": "CLI"        
    },
    "theme": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1920x1080"
    }
}

Similarly:
control corresponded to control_legacy, control_uefi, control_ia32, control_aa64 and control_mips
auto_install corresponded to auto_install_legacy, auto_install_uefi, auto_install_ia32, auto_install_aa64 and auto_install_mips ...

Notes

1. For an object xxx the corresponded dual mode option are xxx_legacy, xxx_uefi, xxx_ia32, xxx_aa64 and xxx_mips, case-sensitive
2. You can use the two styles at the same time. For example, you can set a control_uefi and a control
3. You can only set one of the dual mode options. For example, you can only use theme_uefi and don't set others.
4. All the sub options in the object have no difference.


ventoy.json Example

{
    "control_legacy": [
        { "VTOY_DEFAULT_MENU_MODE": "1" },
        { "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
    ],
    
    "control_uefi": [
        { "VTOY_DEFAULT_MENU_MODE": "0" },
        { "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
    ],
    
    "control_ia32": [
        { "VTOY_DEFAULT_MENU_MODE": "0" },
        { "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
    ],
    
    "control_aa64": [
        { "VTOY_DEFAULT_MENU_MODE": "0" },
        { "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
    ],
    
    "control_mips": [
        { "VTOY_DEFAULT_MENU_MODE": "0" },
        { "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
    ],
    
    "theme_legacy": {
        "display_mode": "CLI"        
    },
    
    "theme_uefi": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1920x1080"
    },
    
    "theme_ia32": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "800x600"
    },
    
    "theme_aa64": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1024x768"
    },
    
    "theme_mips": {
        "file": "/ventoy/theme/theme.txt",
        "gfxmode": "1024x768"
    }
}