Skip to content

Idle Timeout

Overview

Idle timeout returns a kiosk to its home screen after a customer has been inactive for too long. It is configured per device profile, under the profile's Idle Settings, and lets you choose between a fixed "Standard" timing or a "Custom" timing. The same Idle Settings card also controls an optional idle screensaver.

Key Purpose: Reset an idle kiosk session and (optionally) show a screensaver after a period of inactivity.

Purpose

This setting lets you control how a kiosk behaves when a customer walks away. You configure it on a device profile so every kiosk assigned to that profile shares the same idle behaviour: how long to wait before warning the customer, how long to show that warning, and whether to display a screensaver image after a number of idle minutes.

Key Concepts

  • Two Types Only: The backend enum (IdleTimeoutTypes) supports exactly two values — standard and custom. There is no "Extended" option.
  • Standard (device profile): Fixed timing — gives the warning after 45 seconds of inactivity and shows the warning for 15 seconds. The backend ignores any stored seconds when the type is standard and always returns these fixed values.
  • Custom: You set both the seconds-before-warning (idle_timeout_seconds) and how long the warning is shown (show_warning_for_seconds). Each must be at least 1 second.
  • Idle Screensaver: A separate, optional setting on the same card. When enabled, it shows a custom screensaver image after a configurable number of idle minutes. This is independent of the idle-timeout type.
  • Per Profile: Idle Settings live on a device profile, so they apply to every kiosk device assigned to that profile.
  • Also in Online Ordering: Online ordering has its own, independent idle-timeout setting where Standard uses a 120-second timeout instead of 45 (see Relations).

Actions

Set the idle timeout

Navigate to Device Management → Device Profiles → open a profile → Idle Settings. Under Idle timeout, choose:

  • Standard — gives the warning after 45 s and shows it for 15 s (fixed; no inputs).
  • Custom — enter the seconds to give the warning after, and the seconds to show the warning for. Both fields enforce a minimum of 1.

Enable the screensaver

In the same Idle Settings card, toggle Idle screensaver on, enter the number of minutes of inactivity before it appears, and upload a screensaver image. Both the minutes value and the image are required when the screensaver is enabled.

Business Rules

  • The idle-timeout type must be one of standard or custom (enforced by Rule::enum(IdleTimeoutTypes::class)).
  • In Standard mode the backend always uses 45 s before the warning and 15 s of warning, regardless of any stored values (DeviceProfile::getIdleTimeoutSeconds() / getShowWarningForSeconds()).
  • In Custom mode, idle_timeout_seconds and show_warning_for_seconds are required and validated as numeric|min:1.
  • The idle screensaver is its own toggle. When idle_screensaver.enabled is true, idle_screensaver.minutes and a screensaver image are required.
  • The screensaver minutes value and the idle-timeout seconds are unrelated; the screensaver appears after its own configured minutes of inactivity.

Location

  • Backoffice Route: /device-management/profiles (route name device-management-profiles; Idle Settings section of a device profile)
  • Backend Validation: app/Http/Requests/BackOffice/DeviceProfile/StoreDeviceProfileRequest.php
  • Backend Model: app/RawModels/DeviceProfile.php
  • Enum: app/Enums/IdleTimeoutTypes.php
  • Vue Component: src/views/device-profiles/forms/IdleSettings.vue

Fields

Idle Timeout Type

PropertyValue
Field IDidle_timeout_type
LabelIdle timeout
TypeRadio (Standard / Custom)
Optionsstandard, custom
Defaultstandard
Validationrequired, must be a valid IdleTimeoutTypes value

Description: Whether to use the fixed Standard timing or a Custom timing.

Options:

  • Standard: Gives the warning after 45 s, shows it for 15 s (fixed).
  • Custom: Set your own seconds-before-warning and warning duration.

Idle Timeout Seconds

PropertyValue
Field IDidle_timeout_seconds
LabelGive warning after
TypeNumber
UnitSeconds
Standard value45 (fixed by the backend; ignores stored value)
Validationrequired_if:idle_timeout_type,custom, numeric, min:1

Description: Seconds of inactivity before the warning is shown. Only editable in Custom mode.


Warning Duration

PropertyValue
Field IDshow_warning_for_seconds
LabelAnd show warning for
TypeNumber
UnitSeconds
Standard value15 (fixed by the backend; ignores stored value)
Validationrequired_if:idle_timeout_type,custom, numeric, min:1

Description: How long the warning is shown before the session resets. Only editable in Custom mode.


Idle Screensaver

PropertyValue
Field IDidle_screensaver
TypeObject { enabled, minutes }
enabledBoolean — required
minutesNumber — required when enabled is true
ImageScreensaver image required when enabled is true (screensaver_image)

Description: Optional screensaver shown after minutes of inactivity. Separate from the idle-timeout type.


Business Logic

Standard vs Custom

idle_timeout_type == "standard"


Backend returns fixed 45 s (give warning after)
and fixed 15 s (show warning for)
— any stored seconds are ignored

idle_timeout_type == "custom"


Backend returns stored idle_timeout_seconds
and stored show_warning_for_seconds
(both required, min 1)

Screensaver

idle_screensaver.enabled == true


After idle_screensaver.minutes of inactivity


Show screensaver image
(requires minutes + uploaded image)

Relations

Depends On

  • Device Profiles: Idle Settings are part of a device profile.
  • Device Profiles — where Idle Settings live.
  • Kiosk Setup — kiosks inherit idle behaviour from their assigned profile.
  • Online Ordering — has its own independent idle-timeout setting (Standard there uses a 120 s timeout, 15 s warning).

Examples

Note: kiosk-app runtime behaviour (exact warning copy, screen transitions) is not verified here. These examples show the stored configuration values.

Standard

json
{
  "idle_timeout_type": "standard",
  "idle_timeout_seconds": 45,
  "show_warning_for_seconds": 15,
  "idle_screensaver": { "enabled": false }
}

(In Standard mode the backend returns 45 / 15 regardless of any stored seconds.)

Custom

json
{
  "idle_timeout_type": "custom",
  "idle_timeout_seconds": 90,
  "show_warning_for_seconds": 20,
  "idle_screensaver": { "enabled": false }
}

Custom with screensaver

json
{
  "idle_timeout_type": "custom",
  "idle_timeout_seconds": 90,
  "show_warning_for_seconds": 20,
  "idle_screensaver": { "enabled": true, "minutes": 3 }
}

FAQs

  • "Is there an 'Extended' timeout option?" No. The enum supports only standard and custom. There is no "Extended" option.
  • "What does Standard mode use?" On a device profile, Standard gives the warning after 45 seconds and shows it for 15 seconds. These values are fixed by the backend; any stored seconds are ignored while the type is standard.
  • "Can I set my own timing?" Yes — choose Custom and enter the seconds to give the warning after and the seconds to show the warning. Both must be at least 1.
  • "Is the idle timeout the same as online ordering?" No. They are separate settings. Online ordering has its own idle-timeout where Standard uses a 120-second timeout (15-second warning). The device-profile Standard uses 45 seconds.
  • "What is the idle screensaver?" A separate, optional setting on the same Idle Settings card. When enabled, a custom image appears after a configurable number of idle minutes. It is independent of the idle-timeout type and requires both the minutes value and an uploaded image.

Troubleshooting

  • Session resets too quickly → Check whether the profile uses Standard (gives warning after 45 s) or Custom. Switch to Custom to set a longer "give warning after" value.
  • Custom seconds rejected → Both Custom fields are required and must be at least 1 second (numeric|min:1).
  • Screensaver not appearing → Make sure the Idle screensaver toggle is on, the minutes value is set, and a screensaver image is uploaded — minutes and image are both required when it is enabled.