Files
BetterDesk/docs/wiki/Web-Console.md
T
UNITRONIX ae46c69e66 feat(ux): reintroduce classic UI alongside optional UX 3.5 shell
- Default console shell is now the classic icon rail + flyout, with UX 3.5 available via navbar switch.
- Fixed visibility issues in UX 3.5, ensuring main content is displayed correctly under branding wallpaper.
- Updated documentation to reflect changes in UI shell options and theme management.
- Enhanced language support for new UI shell switch options across multiple languages.

This update improves user experience by providing a choice between classic and modern UI shells.
2026-07-26 10:16:51 +02:00

6.4 KiB

Web Console

The BetterDesk Web Console is a Node.js (Express.js) management panel accessible at http://your-server:5000.

The default chrome is the classic icon rail + flyout sidebar. Operators can switch to optional UX 3.5 (full-list sidebar + topbar, glass branding) from the navbar; the choice is remembered in a cookie. See UX 3.5 for tokens, breakpoints, theming, and how to switch.


Dashboard

The dashboard provides an overview of your BetterDesk deployment:

  • Total Devices — Count of all registered devices
  • Online Devices — Currently connected, with real-time WebSocket updates
  • Server Uptime — Go server uptime
  • System Info — Hostname, OS, Node.js/Go versions

Note: OS-style Desktop Mode is not loaded by the console layout. Use classic rail/flyout (default) or optional UX 3.5. Historical widget docs may remain under Desktop Dashboard.


Devices Page

Device List

The devices page shows all registered RustDesk clients in a responsive table:

Column Description
ID RustDesk client ID (numeric)
Hostname Device hostname (from sysinfo)
Type Device type (desktop, server, agent, etc.)
Platform OS (Windows, Linux, macOS, Android, iOS)
Last Online Last heartbeat timestamp
Status Online/Degraded/Critical/Offline with colored dot
Actions Kebab menu (⋮) with device operations

Filters

  • Search — Filter by ID, hostname, platform, or tags
  • Status filter — Segmented pills: All / Online / Offline
  • Folder filter — Horizontal scrollable folder chips

Device Actions (Kebab Menu)

Action Description
Edit Change device notes, tags, user assignment
Connect Launch RustDesk connection (URI handler)
Rename Change the device ID
Delete Soft-delete the device
Revoke Delete + block ID + disconnect active sessions
Ban Block the device from reconnecting
Wake on LAN Send WOL magic packet (offline devices)

Folders

Organize devices into folders:

  • Create/rename/delete folders
  • Drag-and-drop devices between folders
  • Folder counts update automatically

Real-time Status Updates

Device status updates in real-time via WebSocket push from the Go server event bus. No page reload needed — green/red dots update in-place.


Device Detail

Click a device row to open the detail panel:

Info Tab

  • Device ID, hostname, platform, version
  • IP address, last online timestamp
  • Tags, notes, user assignment
  • Connect button (RustDesk URI handler)

Hardware Tab

  • CPU model, cores, architecture
  • Total RAM, total disk
  • OS version, kernel

Metrics Tab

  • Live CPU, memory, disk gauges (animated bars)
  • Historical charts (last 100 data points)
  • Data from POST /api/heartbeat with metrics

Users Page

Manage console users and roles. See User Management and Organizations and RBAC.


Additional Panel Pages

Page Description
Organizations Multi-tenant orgs, members, scoped devices
Fleet Device groups, batch operations, scaling
Policies Access policies, unattended schedules
Client Generator Branded RustDesk client builds — Client Generator
Help Requests End-user support inbox
Tickets Internal ticket tracking
CDAP Devices / Studio IoT device management and widget editor
Activity / Reports Audit and reporting views
Security Audit Login and API security events
Server Management Go server health, config, API keys
Settings → Updates In-panel updates — Panel Updates
Settings → Authentication RustDesk client session TTL, OIDC — OIDC SSO

Settings Page

Server Configuration

  • View server address and public key
  • Generate QR codes for client setup
  • Copy configuration strings

Console Settings

  • Language selection (26 locales — auto-discovered from web-nodejs/lang/)
  • Console version info
  • Session timeout configuration

Password Change

  • Current password verification
  • New password with confirmation
  • TOTP 2FA enrollment/removal

OS-Style Login Screen

When desktop mode is active, the login page transforms into a Windows 11-style experience:

  • Wallpaper background with frosted glass card
  • Clock and date overlay (click to dismiss)
  • Multi-user selector (bottom-left avatars)
  • TOTP 2FA with individual digit input boxes
  • Session expiry detection with auto-redirect

UI Features

Theme Support

  • Dark (default) — Dark backgrounds, light text
  • Light — White backgrounds, dark text
  • Auto — Follows system prefers-color-scheme

Toast Notifications

  • Success/error/warning/info pop-ups
  • Auto-dismiss with progress bar
  • Hover to pause
  • Max 5 simultaneous toasts

Skeleton Loading

  • Animated shimmer placeholders during data load
  • Applied to tables, cards, avatars

Page Transitions

  • Fade + translateY animation on page content
  • Staggered list item animations (30ms per row)

Responsive Design

  • 4 breakpoints: 1024px, 768px, 600px, 400px
  • Card-style layout on mobile (< 600px)
  • Bottom sheet kebab menu on phones
  • Collapsible sidebar navigation

Internationalization (i18n)

The console supports 26 languages (including EN, PL, DE, FR, ES, JA, ZH, ZH-TW, and more). Languages are auto-discovered from web-nodejs/lang/*.json.

Language Code Status
English en Complete (source)
All others ar, cs, da, de, es, … Maintained — see repo for coverage

Adding a Language

  1. Copy web-nodejs/lang/en.json to web-nodejs/lang/{code}.json
  2. Translate all values (keep keys as-is)
  3. Update the meta section with language info
  4. The language auto-appears in the selector (auto-discovery from lang/ directory)

See the Contributing Translations guide for details.


See also