MakeHuman2 uses JSON-based configuration files to store application settings and preferences. There are two types of configuration files:
- makehuman2_default.conf: The default system configuration shipped with MakeHuman2
- makehuman2.conf: The user's personal configuration file
These files control application behavior, UI preferences, data locations, API settings, and keyboard shortcuts.
File Locations and loading order
System Default Configuration
The default configuration is included with the application:
/data/makehuman2_default.conf
This file provides the baseline settings when no user configuration exists.
User Configuration
The user configuration file is stored in platform-specific locations:
| macOS | ~/Library/Application Support/MakeHuman2/makehuman2.conf |
| Linux | ~/.config/makehuman2/makehuman2.conf |
| Windows | %APPDATA%\makehuman2\makehuman2.conf |
Configuration Loading Process
When MakeHuman2 starts, it loads configuration settings in this priority order:
- Check for user configuration: If makehuman2.conf exists in the user config folder, load it
- makehuman2.conf not available: it is the first start, ask user for his home path with GUI, the "typical home path" is proposed, rest is taken
from makehuman2_default.conf
- Apply defaults: Any missing keys are filled in with hardcoded default values
- Override with environment:The `MH_HOME_LOCATION` environment variable can override path_home (aka <UserDataDir>)
If the configuration is incomplete or this is the first run, MakeHuman2 will automatically create a user configuration file with all necessary settings.
File Format
Both configuration files use JSON format:
{
"basename": null,
"noSampleBuffers": false,
"redirect_messages": false,
"remember_session": false,
"theme": "makehuman.qss",
"units": "metric",
"apihost": "127.0.0.1",
"apiport": 12345
}
Configuration Options
| basename string or null Default: null |
Specifies which base mesh to load at startup (e.g., hm08, mh2bot)
- If null, the application shows the base mesh selection screen
- If set to a valid base name, that mesh loads automatically |
"basename": "hm08" |
| noSampleBuffers Boolean Default: false |
Controls OpenGL multisampling (method to display multiple transparent layers)
false - Enable multisampling for smoother rendering (recommended)
true - Disable multisampling (may improve performance on older hardware) |
"noSampleBuffers": false |
| redirect_messages Boolean Default: false |
Controls whether application messages and errors are logged to a file.
false - Messages only appear in the console
true - Messages are written to the log file specified in path_error
Related Setting: Requires path_error to be set (automatically added to user config).
| "redirect_messages": false |
| remember_session Boolean Default: false |
Controls whether MakeHuman2 saves and restores the working session.
false - Start fresh each time
true - Restore the last loaded character and settings on startup |
"remember_session": true |
| theme String Default: makehuman.qss |
Specifies the Qt stylesheet file used for the application UI.
- Theme files are located in data/themes/ and can be added also in user data
- Must be a valid .qss file |
"theme": "makehuman.qss" |
| units String Default: "metric" |
Sets the measurement system used throughout the application.
"metric"- Centimeters, meters, kilograms
"imperial"- Inches, feet, pounds |
"units": "imperial" |
| apihost String Default: "127.0.0.1" |
The IP address the MakeHuman2 API server listens on, this allows external applications (like Blender) to communicate with MakeHuman2.
"127.0.0.1" - normally used, when blender is on same box. |
"apihost": "127.0.0.1" |
| apiport Integer Default: 12345 |
The TCP port number the MakeHuman2 API server listens on.
If this port is already in use, you may need to change it to another available port. |
"apiport": 12345 |
| path_home String Default: none |
Absolute path to the user data folder where MakeHuman2 stores custom content.
Not in default config. Used as UserDataDir in documentation.
This path will contain all user and downloaded content, such as clothes etc. |
"path_home": "/Users/foo/makehuman2" |
| path_error String Default: none |
Absolute path to the folder where error logs are stored.
Not in default config. It is only used when redirect_messages is true |
"path_error": "/Users/foo/makehuman2/log" |
| keys Object (key-value pairs) Default: none |
Defines custom keyboard shortcuts for camera navigation and other viewport controls. Each key represents an action, and its value is the keyboard shortcut (or array of shortcuts) assigned to that action.
Not in default config. Format:
- Single shortcut: String value (e.g., "Num+9")
- Multiple shortcuts: Array of strings (e.g., ["Num+9", "Alt+T"]) |
"keys": {
"Top": "Num+9",
"Front": "Num+2",
"Zoom-In": ["Num++", "Ctrl+="],
"Pan-Left": "Shift+Left",
"Toggle Perspective": "Num+0"
} |
Keyboard Actions
| Action | Default Shortcut | Description |
| Top | Num+9 | View from top |
| Bottom | Num+7 | View from bottom |
| Left | Num+4 | View from left |
| Right | Num+6 | View from right |
| Front | Num+2 | View from front |
| Back | Num+8 | View from back |
| Zoom-In | Num++ | Zoom camera in |
| Zoom-Out | Num+- | Zoom camera out |
| Pan-Left | Shift+Left | Pan camera left |
| Pan-Right | Shift+Right | Pan camera right |
| Pan-Up | Shift+Up | Pan camera up |
| Pan-Down | Shift+Down | Pan camera down |
| Rotate-Left | Ctrl+Left | Rotate camera left |
| Rotate-Right | Ctrl+Right | Rotate camera right |
| Rotate-Up | Ctrl+Up | Rotate camera up |
| Rotate-Down | Ctrl+Down | Rotate camera down |
| Stop Animation | Esc | Stop animation playback |
| Toggle Perspective | Num+0 | Toggle perspective/orthographic |
Key Notation
Qt key sequence format is used:
- Ctrl - Control key (⌃ on macOS)
- Shift - Shift key (⇧)
- Alt - Alt key (⌥ Option on macOS)
- Meta - Meta key (⊞ Windows key / ⌘ Command on macOS)
- Num+ - Numeric keypad keys
- + - Combines modifiers with keys (e.g., Ctrl+Z)
- Regular keys use their character (e.g., A, F1, Space)
Platform-Specific Modifiers:
On macOS, you can use Command (⌘) and Option (⌥) keys:
- Meta+Key - Uses Command key (⌘)
- Alt+Key - Uses Option key (⌥)
- Ctrl+Key - Uses Control key (⌃)
You can mix and match modifiers based on your preference. For example:
"keys": {
"Zoom-In": ["Num++", "Ctrl+=", "Meta+="],
"Zoom-Out": ["Num+-", "Ctrl+-", "Meta+-"],
"Pan-Left": ["Shift+Left", "Alt+Left"]
}
This allows
Ctrl+= Cmd+= (Meta), and
Num++ to all zoom in.
Customization
You can customize shortcuts in two ways:
Through the Preferences Window
- Open Edit → Preferences → Input tab
- Select an action in the table
- Press the desired key combination
- Click "Change" to apply
- Click "Save" to write to configuration file
Manual Editing
- Edit makehuman2.conf directly
- Add or modify the "keys" object
- Only include actions you want to customize
- Restart MakeHuman2 to apply changes
Notes:
- If the "keys" object is not present, default shortcuts are used
- You can assign multiple shortcuts to the same action using an array
- Duplicate shortcuts across different actions are allowed but may cause conflicts
- Invalid key sequences are ignored and fall back to defaults
- Changes take effect immediately when saved through the Preferences window
- On macOS, `Meta` corresponds to Command (⌘) and `Alt` corresponds to Option (⌥)
- If you edit the file manually, ensure the JSON is valid. Use a JSON validator if unsure.
macOS-Friendly Example:
For macOS users who prefer Command and Option keys:
"keys": {
"Top": ["Num+9", "Meta+T"],
"Front": ["Num+2", "Meta+F"],
"Zoom-In": ["Num++", "Meta+=", "Ctrl+="],
"Zoom-Out": ["Num+-", "Meta+-", "Ctrl+-"],
"Pan-Left": ["Shift+Left", "Alt+Left"],
"Pan-Right": ["Shift+Right", "Alt+Right"],
"Rotate-Left": ["Ctrl+Left", "Meta+Left"],
"Rotate-Right": ["Ctrl+Right", "Meta+Right"],
"Toggle Perspective": ["Num+0", "Meta+P"]
This configuration uses:
- Meta (⌘ Command) for view changes and zoom
- Alt (⌥ Option) for panning
- Both Ctrl and Meta for rotation, allowing flexibility
Environment Variable Override
The environment variable
MH_HOME_LOCATION can override the "path_home" (
UserDataDir) setting:
macOS/Linux:
export MH_HOME_LOCATION="/path/to/custom/location"
python makehuman.py
Windows:
set MH_HOME_LOCATION=C:\path\to\custom\location
python makehuman.py
This is useful for:
- Testing with different data folders
- Running multiple configurations
- Development and debugging