Back to documentation index

Visuals, Screens, Layout, and DashKits

HobDrive lets you customize the main interface on several levels: from simple switches in the app to custom XML screens and full DashKit packages with graphics, themes, and multiple panels.

This article is an overview. It helps you choose the right customization method and understand where the detailed instructions are. The full tag and attribute reference is available in the HobDrive layout language specification.

What Can Be Customized

Depending on the task, you can change:

If you are configuring HobDrive for the first time, start with the interface settings. XML and DashKits are needed when the regular settings are no longer enough.

Customization Levels

1. Main Screen Settings

Open Screens -> Settings -> Main Screen Settings.

This dialog lets you:

Details: Main Screen Settings.

2. Custom Screen user1.layout

The Your Screen section is saved to the user1.layout file. Usually you do not need to edit it manually: the app creates XML itself when you choose the layout, sensors, and additional cell parameters.

Use Export XML and Import XML to save, transfer, or quickly share a custom screen.

user1.layout works well for one personal screen, for example “city”, “highway”, “diagnostics”, “temperatures”, or “hybrid”.

3. Manual user.layout

The user.layout file is the advanced way to add your own sections and change existing screens. It is loaded from user settings and should not be overwritten by app updates.

Through user.layout you can:

Minimal example:

<ui>
  <section name="My Screen" fixed="true">
    <grid rows="25,,30" cols="30,,30">
      <item id="FuelLevel" precision="1"/>
      <item id="FuelEconomy_trip" size="large"/>
      <item id="BatteryVoltage" size="medium" period="5000"/>
      <item id="RPM"/>
      <item id="Speed" size="giant"/>
      <item id="CoolantTemp"/>
      <item id="IntakeAirTemp"/>
      <item id="DistanceRun"/>
      <item id="DateTime" custom-units="timesec" units="none"/>
    </grid>
  </section>
</ui>

Syntax details: Layout specification.

4. user.gauge and Sensor Appearance

layout describes which elements are on the screen and where they are located. gauge settings describe how those elements look: sizes, colors, borders, charts, decorators, images, and inherited styles.

Important: user.gauge may be changed by HobDrive itself. The app writes settings there from the sensor appearance dialog opened by long-pressing a sensor. For this reason, manual user.gauge editing is possible, but should be done carefully: interface changes and manual edits should not conflict with each other.

In practice, this combination is common:

For simple changes, attributes directly on item are usually enough: size, precision, period, units, description, inherit, colspan, rowspan.

More about configuring sensor appearance through the interface: Main Screen Settings.

5. DashKits

A DashKit is a package with ready-made panels, screens, images, and metadata. DashKits let you distribute not just one settings file, but a whole visual package: for example, a digital panel, analog dashboard, theme, or diagnostic screen set.

Official repository: hobdrive/hobdrive-dashkits.

Template for creating your own repository: hobdrive/template-dashkits.

In the app, DashKits are opened through Settings -> Dash Panel Settings. The dialog contains:

By default HobDrive looks at hobdrive/hobdrive-dashkits, branch main. You can specify your own repository in owner/repo format if you are building custom panels.

How a DashKit Is Structured

A typical DashKit lives in its own folder and contains:

my-dashkit/
  info.json
  user.layout
  images/
  README.md

info.json describes the package:

{
  "name": "My DashKit",
  "version": "1.0.0",
  "description": "Custom dashboard for HobDrive",
  "author": "Your Name"
}

user.layout contains ordinary HobDrive XML layout. images/ stores pictures, SVGs, and other resources referenced by layout elements.

When installing, HobDrive downloads the DashKit folder from GitHub and places it in user settings as a separate override-* directory. This lets several packages coexist, update, and be removed independently.

What to Choose

Practical Tips