# Customization

## Custom Keymaps

If you want to make custom keymaps, you can create `keymap.json` at the user configuration path:

* `/Users/<user>/Library/Application Support/StarUML` for Mac OS.
* `C:\Users\<user>\AppData\Roaming\StarUML` for Windows.
* `~/.config/StarUML` for Linux.

You can get how to edit the custom keymap file (`keymap.json`) at [Keymaps](https://docs.staruml.io/master/developing-extensions/keymaps).

Here is an example:

```javascript
{
  "cmdctrl-alt-1": null,
  "cmdctrl-alt-g": "view:show-grid"
}
```

The first entry is to release the `Ctrl+Alt+1` (`Cmd+Option+1` in MacOS) key binding and the second entry is to change key binding of **View > Show Grid** (Command ID is `view:show-grid`) to `Ctrl+Alt+G` (`Cmd+Option+G` in MacOS).

If you want to know all command IDs, enter the following expression at **Console** (Debug > Show DevTools > Console tab).

```javascript
Object.keys(app.commands.commands)
```

## Custom Fonts

If you want to use custom fonts, you can add a font folder in the custom fonts folder:

* `/Users/<user>/Library/Application Support/StarUML/fonts` for Mac OS.
* `C:\Users\<user>\AppData\Roaming\StarUML\fonts` for Windows.
* `~/.config/StarUML/fonts` for Linux.

1. Create a font folder (e.g. `my-font`) at the custom fonts folder.
2. Place a font description file (`font.json`) and the TrueType font files `.ttf` in the font folder.

The font description file looks as below:

```javascript
[
  {
    "name"       : "MyFont",
    "regular"    : "MyFont-Regular.ttf",
    "italic"     : "MyFont-Italic.ttf",
    "bold"       : "MyFont-Bold.ttf",
    "boldItalic" : "MyFont-BoldItalic.ttf"
  }
]
```

StarUML should be restarted to recognize the added custom fonts.

## Custom Diagram Canvas Size

> Increasing the diagram canvas size will cause severe performance degradation. In some low-spec computers, StarUML will be crashed. Then, reduce the size of the diagram canvas.

We strongly recommend to keep the small number of elements in a diagram. If you have many elements, then split the diagram into multiple diagrams with a single point of view. Nevertheless, you need to have wider diagram canvas size, you can set the maximum canvas width and height in the configuration file.

Find `config.json` at the user configuration path. If couldn't find, then create one.

* `/Users/<user>/Library/Application Support/StarUML` for Mac OS.
* `C:\Users\<user>\AppData\Roaming\StarUML` for Windows.
* `~/.config/StarUML` for Linux.

Edit the maximum width and height number (default size is `4000` x `3000`) of the diagram canvas as below:

```javascript
{
  "diagramCanvasWidth": 5000,
  "diagramCanvasHeight": 3500
}
```

StarUML should be restarted to affect the changed diagram canvas size.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.staruml.io/master/user-guide/customization.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
