Create your own skin for Genymotion Desktop

2024-04-24

Requirements to create a custom skin

To create a custom skin, you need the following elements.

1. A background image (background.png). 2. A JSON file (skin.json).

All these elements have to be put in a new folder in ~/.Genymobile/Genymotion/skins (Linux, macOS) or %LOCALAPPDATA%\Genymobile\Genymotion\skins (Windows).

For example:

~/.Genymobile/Genymotion/skins/my-phone-skin/

or

%localappdata%\Genymobile\Genymotion\skins\my-phone-skin\

Background image

The background image must be in PNG format.

The background image must be named background.png.

For example:

background.png

JSON File

A JSON file named skin.json is required.

The skin.json file contains the following information.

Name

The name attribute is:

"name": string

This attribute allows you to give a name for your skin.

After creation, you should find your skin in the Virtual device installation window if you want to create a new device with this skin.

Display

The display attribute sets the size and offset of your skin.

The display object defines these parameters.

offset

The offset parameter sets the offset between your skin and the device display.

size

The size parameter sets the width and height of the virtual device resolution.

> Important: The height and width of the background image must not be lower than height + offset x and width + offset y, or your skin will not be valid and you will get a BACKGROUND_FORMAT_ERROR error.

Resize Margins

The resizeMargins attribute defines the resizable margins of the window.

The window will only be resizable from bottom and left sides.

The other sides must still be defined in case the virtual device is rotated.

The resizeMargins object is:

"resizeMargins": {
  "left": int,
  "top": int,
  "right": int,
  "bottom": int
}

Example

Content of the skins folder:

~/.Genymobile/Genymotion/skins/skin-test/
├── background.png
└── skin.json

Content of skin.json:

{
  "name": "skin-test",
  "display": {
    "offset": {
      "x": 150,
      "y": 150
    },
    "size": {
      "width": 720,
      "height": 1280
    }
  },
  "resizeMargins": {
    "left": 75,
    "top": 75,
    "right": 75,
    "bottom": 75
  }
}

Here is a diagram explaining precisely each parameters from skin.json: