QAEM/DEV

EdgeOS skins

Install, apply and make .edgeskin files: a whole look for the XENEON EDGE in one file, with its layouts, widgets, colours and background.

Updated 24 Sept 2026

A skin is a whole look for the Edge in one .edgeskin file, the way Rainmeter has .rmskin. It carries layouts, the imported widgets they use, how those widgets look, and the dashboard's theme, accent colour and background.

Use a skin

Everything happens on the Skins page in EdgeOS.

Open it

Choose Open skin… and pick the .edgeskin file. EdgeOS shows what the file holds before anything is kept. Choose Install, or Install and apply.

Apply it

Apply shows the skin on the real dashboard first, then puts it on a profile: its layouts and, if you leave the switch on, its colours, background and widget looks.

Changed your mind?

Undo on the Skins page puts back what the last Apply replaced.

Make a skin

Choose Create skin… on the Skins page. It packs a profile's screens into a file to share, and the preview in that sheet becomes the skin's picture.

That's also the easiest way to get the file format right: create a skin in the app, then edit the skin.json inside it.

The file format

An .edgeskin file is a zip with:

skin.json          what the skin is (below)
preview.png        its picture (or .jpg / .webp), optional
assets/<file>      pictures and clips the JSON points at as /backgrounds/<file>
widgets/<id>/…     each imported widget the layouts use (widget.json or manifest.json + its files)

And skin.json looks like this:

{
  "edgeos": "skin", "v": 1,
  "id": "you-neon-city",            // letters, digits, - _ . ; the same id installs over an older version
  "name": "Neon City", "author": "You", "version": "1.0.0",
  "description": "One or two lines.",
  "preview": "preview.png",
  "layouts": {                      // any of: desktop, widget, desktopPortrait, widgetPortrait
    "desktop": { "cols": 12, "rows": 4, "items": [ { "id": "c1", "widget": "clock", "x": 0, "y": 0, "w": 4, "h": 2, "options": {} } ] }
  },
  "widgetStyle": { "clock": { "radius": 20 } },   // per widget, as Widgets → Customize saves it
  "appearance": { "theme": "slate", "accent": "#22d3ee", "dashboard": { "image": "/backgrounds/city.jpg" } },
  "widgets": [ "my-widget" ]        // folders under widgets/
}
  • id: letters, digits, -, _ and .. A skin with the same id installs over an older version.
  • layouts: any of desktop, widget, desktopPortrait and widgetPortrait.
  • widgetStyle: the look per widget, in the same shape Widgets → Customize saves it.
  • widgets: the folders under widgets/. Each one is a widget like any you'd build yourself.

What EdgeOS checks

Everything in a skin comes from someone else, so EdgeOS is careful with it. It:

  • unpacks only the files listed above, refuses any path that leaves the package, and caps sizes: 200 MB for the file, 60 MB per file inside it and 320 MB unpacked;
  • never unpacks programs (.exe, .dll, .bat, .ps1 and the like) or SVG pictures;
  • checks the layouts the same way a shared layout is checked: known screens, sizes that fit the grid, and no links to the sender's own profiles or saved layouts;
  • lists buttons that open programs, files or links on the review, and leaves them out unless you keep them;
  • never takes a Wallpaper Engine wallpaper along, since those are the sender's own files;
  • runs a skin's widgets in the same sandbox as any imported widget, and installs a widget only if it's new or newer than the one already there.