Interface Customization
How to rearrange, hide, or retexture parts of the ARES user interface

The ARES heads-up display (HUD) is designed to be highly configurable to suit a wide range of usage needs. This chapter will walk you through the process of tweaking it to your liking.

How the Interface Works

The HUD consists of 4 primitives, 124 single-surface mesh rectangles, and 128 eight-surface mesh strips.

TypeLink rangeNotes
Primitives1–4Kernel ring, services ring, user memory ring, and mouselook crosshair
Rectangles5–128Used for most UI elements
Strips129–256Used mainly for displaying VariaType text

The majority of these links are assigned to specific system functions, such as displaying the compass or the menu system. These assignments are documented in detail in The ARES Operating System: Interface Architecture. Not all links have fixed assignments—many are reserved for HUD-based user applications, such as wizards, mantra, or wander. In the future it will be possible to play board games, manage HCS inventory, and control a wide range of Nanite Systems equipment by installing HUD applications.

Building the Interface

The ARES interface is generated by two programs in the system services rings, called _interface and _variatype. These two scripts set the size, position, color, rotation, and textures of most parts in the HUD. _interface is responsible for the majority of UI elements, and also handles certain "real-time" widgets like the compass, altimeter, speedometer, and target tracking. _variatype is mainly responsible for managing the text you see in menus and alert messages. (This is similar to, but more sophisticated than, XyzzyText.) In some versions of ARES, the _variatype daemon also manages the device bar.

Refreshing the UI

Like most programs in ARES, _interface and _variatype read their configurations from the LinksetData database. LinksetData entries are not continuously monitored for updates, so when you are customizing your settings, you will be using the following commands after every change:

  1. Save changes to your local.db file (the importance of local.db is explained below)
  2. @db load local.db
  3. @service interface reconfigure

Sometimes you'll need to replace interface with the names of other daemons, such as status, repair, or variatype. These exceptions will be noted below.

General workflow for customizing ARES

Customizing ARES consists of modifying database entries, and then restarting the affected daemons. For safety we recommend the following process.

Accessing user memory: To edit any of the files in your ARES installation, you need to access the inventory of Link #3, which is the user memory prim. Here are the steps:

  1. Press Ctrl-3 to open the Edit window. (On Mac, the Ctrl key is labeled Command.)
  2. Press Ctrl-Shift-E to turn on Edit linked mode.
  3. Click the model badge at the bottom-middle of your ARES HUD. (this was Part 1 in Tutorial: The ARES interface)
  4. Switch the Edit window to the Content tab. (If you do not see the tabs, click the thin, wide button with a down arrow, at the bottom of the Edit window, to expand it.)

Look through existing .db files: Scroll through the contents of user memory until you find relevant <name>.db files. For this chapter we're mainly interested in two files, local.db (where you'll be storing your modifications) and interface.db (which contains default UI settings).

Make sure you save everything you do in local.db: Almost all customization in ARES is done with the database management utility, @db. Although it is faster to make changes to your configuration by directly telling @db to make them, these changes could get lost or reverted when you install a new version of the OS. Therefore it is a good idea to write your settings in a special notecard (we recommend the name local.db, and a file with this name has already been provided for you), and use db indirectly by using the @db load <filename> command.

Import your local.db file: This can be done with the command @db load local.db so long as you have permission to modify the database. (See Operating ARES: Security for more information on security permissions.)

Restart affected services: Although there are a few parts of ARES that check the database before acting, the vast majority of ARES software requires that you run a special command to force a configuration refresh, as it would be prohibitively expensive to monitor the database for updates. In this chapter, the most important command of this type is @service interface reconfigure.

Keep going: You probably won't get every change you want implemented right away. Experimenting, repeating, and tweaking are all part of the process.

The above guide is dedicated to the memory of Drakon Lameth, who sadly died of cringe after filing a bug report because he thought database changes should be applied automatically.

Interface Settings

For a visual glossary of the elements of the ARES user interface, see Tutorial: The ARES interface (HUD).

SettingDefaultDefinition
interface.sound.volume1.0The volume of sounds played by the UI.
interface.sound.gobd99a429-e579-0367-57c7-5dda70605ad0The sound played when successfully entering a new menu. Also used by main controller, if it has a screen; run @device probe to reload sound settings on the controller.
interface.sound.denyedf4ea86-3472-6c85-ad0c-c9b154c86f5dThe sound played when a menu action fails because of inadequate permissions. Also used by main controller, if it has a screen; run @device probe to reload sound settings on the controller.
interface.sound.actad78297b-25a7-ba88-65b3-bfecb20f50a8The sound played when a menu action (other than navigating to a new menu) succeeds. Also used by main controller, if it has a screen; run @device probe to reload sound settings on the controller.
interface.sound.menu-open5724f680-4c89-110f-4ab5-fd4e0d48e44cThe sound played when opening the SYSTEM MENU interface.
interface.sound.menu-closeb3a1c106-c602-fba6-895e-e9b440d78c86The sound played when closing the SYSTEM MENU interface.
interface.sound.shield-down348fcd3d-7993-54fb-720c-c5ebc42de505An alarm sound played repeatedly while the unit's shield has been overloaded and is not able to block incoming threats.
interface.sound.env-alarm5db9d9d6-6eda-485e-6436-e97dfdc1983cAn alarm sound played repeatedly while the unit is overheating or freezing.
interface.sound.damaged248834e-ae0d-a844-8a98-de6cdaa67760The sound played whenever the unit loses integrity.
interface.sound.repair5b93518c-2a6d-baef-3fc2-ee3af6cf74a4The sound played whenever the unit gains integrity.
interface.sound.alert83f5fcc7-3084-853c-8402-218b0f45abd2The sound played when an alert (e.g. consent request) appears.
interface.sound.alert-dismiss08d80c61-8c9e-3a3b-7855-4f8d17ccc791The sound played when an alert is removed. Note that the standard NS ARES Alert Response gestures also play sounds, and that those sounds are audible to nearby avatars.
interface.sound.test971afde2-73e2-5dd8-6c8a-6c7ee25c7411A test sound played when @id volume is used.
interface.compass.enabled1Display the compass when turning? 1 = yes, 0 = no.
interface.compass.offset<0, 0, 470>Coordinates for displaying the compass widget.
interface.gauges.offset<0, 0, -448>Coordinates for displaying the main status bar, including model badge and gauges.
interface.height1008Calibrated height (in pixels) of the SL camera viewport while the top menu bar is visible.
interface.height-mlook1027Calibrated height (in pixels) of the SL camera viewport while all UI is hidden.
interface.devices.offset<0, -860, 0>Coordinates for displaying the devices bar. Run @reset device to apply changes to this setting.
interface.devices.scale2The size of the devices bar. 1 will show the icons at 16x16 px, 2 will show them at 32x32 px, etc. Run @reset device to apply changes to this setting.
interface.altimeter.enabled1Show the altimeter widget when moving up and down? 1 = yes, 0 = no.
interface.altimeter.offset<0, 380, 0>Coordinates for displaying the altimeter widget.
interface.speedometer.enabled1Show the speedometer widget when moving? 1 = yes, 0 = no.
interface.speedometer.offset<0, 408, -226>Coordinates for displaying the speedometer widget.
interface.crosshair3Crosshair to display in mouselook (0 = off, 1–12 = various graphics, 17 = ballistic)
interface.sexuality.offset<0, 0, -364>Coordinates for displaying the TESI Sexuality interface (if installed.) Run @service sexuality reconfigure to apply changes to this setting.
interface.warning.offset<0, 768, 384>Coordinates for displaying the fixed warning messages (LOW BATTERY, RADIATION DANGER, etc.)
interface.menu.offset<0, -540, 448>Coordinates for displaying the menu system. Run both @service interface reconfigure and @service variatype reconfigure after adjusting this setting.
interface.alert.offset<0, 768, 416>Coordinates for displaying alert messages. Run both @service interface reconfigure and @service variatype reconfigure after adjusting this setting.
interface.alert.time10Duration in seconds that alert messages should linger on the screen before being automatically dismissed. Alert messages that require input will never automatically dismiss. Run @service variatype reconfigure after adjusting this setting.
interface.sitrep.enabled1Display the sitrep bars? (1 = yes, 0 = no)
interface.sitrep.offset<0, 839, 237>Coordinates for displaying the sitrep bars.
interface.fov60Field-of-view (in degrees) of the SL viewport. Required for accurate target tracking.
interface.fontpsychic-instabilityThe name of the VariaType font to use for displaying menus and alerts on the HUD. Run @db font for a list of available fonts. Run @service variatype reconfigure after adjusting this setting.
interface.boot.size<512, 256, 0>The size, in pixels, of the "ARES" logo boot screen displayed during kernel resets. Run @reset proc after adjusting this setting.
interface.boot.animate1Is the boot screen animated? (1 = yes, with 8 frames; 0 = no). Run @reset proc after adjusting this setting.
interface.double-print0Attempt to print all VariaType messages twice? (1 = yes, 0 = no). Mitigates packet loss causing gaps in menu and alert text. Run @service variatype reconfigure after adjusting this setting.
interface.badgeundefinedSpecify an alternative graphic to use for the model badge. If no value is specified, ARES will check your LSD:id.model setting and choose one that matches from LSD:badge. See the file badge.db for a list.
interface.devices.icon(various)Icons used for devices. These mainly consist of two-character codes corresponding to X and Y coordinates on the i_device interface asset, but you may also provide a UUID for a custom texture. Devices may override their displayed icon by sending the icon <UUID> message over the light bus. Run @service variatype reconfigure after adjusting icon settings.

Screen Coordinates

ARES uses screen coordinates measured in pixels to position and size UI elements. For sizes, these are expressed as:

<width, height, 0>

For positions, these are:

<depth, up, right>

Higher depth values are further away, and will cause elements to become layered behind each other. This is usually 0.

An up value of 0 is the vertical middle of the screen.

A right value of 0 is the horizontal center of the screen.

Interface Assets

ARES makes reference to several image files, stored in link 2 (the System Services ring) to build and display the user interface. After any changes, you must run @service interface reconfigure to reload them. These files may be replaced in the event of an OS update, so keep backups handy.

Except where noted, all images should be white on a transparent background.

ImageSize (px)Use
i_alert512x512Top row: alert icons. Rest of image: alert button prompts. Run @service variatype reconfigure to reload this image.
i_bignums1024x128Digits used to display ammo and integrity counters while in mouselook. Run @service repair restart to reload this image.
i_bootany; must match LSD:interface.boot.sizeImage to display during kernel restarts. If LSD:interface.boot.animate is 1, ARES will assume this contains a 2x4 = 8 frame animation. Run @reset proc to reload this image.
i_cladding-backdrop1024x128Image is tinted black and displayed behind main status bar to improve legibility against bright backgrounds.
i_cladding-left1024x256Background bar for left gauges (BODY, RPM, THERMAL)
i_cladding-right1024x256Background bar for right gauges (CRYO, LOAD, VOLTAGE)
i_compass1024x64Compass texture. Bottom half is displayed at top.
i_crosshair256x256Crosshair textures. Right quarter is used for "ballistic" crosshair (#17). Run @service repair restart to reload this image.
i_device512x51216x16 image containing various device icons, referenced by LSD:interface.device.icon.
i_fixed256x102432 different warning messages to display in the fixed warning section of the screen.
i_mlook128x64'INTEGRITY' and 'AMMUNITION' labels displayed when in mouselook.
i_sexuality1024x128Background image of Sexuality interface.
i_sitrep256x2568 different bars displayed on sitrep indicator.
i_target512x256Target lock and navigation waypoint indicators.
i_working1024x1024256 frame animation played in top-left area above main status bar while disk activity is occurring or the unit is in the !working state. (See ARES Tutorials: Command line basics - Effector commands)
m_anchor512x2564 different states for the SYSTEM MENU access widget (SYSTEM MENU, CLOSE MENU, DISCONNECT, and CONNECTING ...). Run @service variatype reconfigure to reload this image.
m_main512x512Background image for system menu access widget. Only the middle 420x292 pixels of this texture are displayed. Run @service variatype reconfigure to reload this image.