The Settings panel provides configuration options for the editor including display settings, performance options, connection settings, and user preferences. Settings are persisted in LocalStorage and survive across sessions.
Option Description Dark Dark theme (default) Light Light theme Auto Follow system preference
Preset Description Low Reduced quality for performance Medium Balanced quality High High quality rendering Ultra Maximum quality
Setting Description Default Grid Show ground grid On Grid Size Grid dimensions 10 Grid Divisions Grid subdivisions 10 Axes Helper Show XYZ axes On Scale Bar Show scale indicator Off
Setting Description Default Target FPS Frame rate limit (30/60/120) 60 VSync Vertical sync On Frustum Culling Skip off-screen objects On
Setting Description Server URL WebSocket server address Auto-reconnect Reconnect on disconnect Connection Status Current connection state
Setting Description Default Sync Camera Share camera view Off Sync Selection Share selection state On
Setting Description Default Auto-save Automatic scene saving On Auto-save Interval Save frequency (seconds) 60 Undo Levels Maximum undo history 50 Confirm Delete Show delete confirmation On
Setting Description Default Mouse Sensitivity Camera rotation speed 1.0 Zoom Speed Scroll zoom factor 1.0 Gizmo Size Transform gizmo scale 1.0
Setting Description Default Snap to Grid Position snapping Off Grid Snap Size Snap increment 1.0 Rotation Snap Angle snapping Off Rotation Snap Angle Snap degrees 15°
Setting Options Default Length Meters, Feet Meters Angle Degrees, Radians Degrees Time Seconds, Frames Seconds
Extensions can define custom settings using the @settings decorator:
from witwin . settings import Settings , settings
from witwin . components import float_field , bool_field , string_field
@settings (name = "MyExtensionSettings" , category = "my_extension" )
class MyExtensionSettings ( Settings ):
api_key = string_field ( "" , description = "API Key" )
enabled = bool_field ( True , description = "Enable extension" )
threshold = float_field ( 0.5 , min = 0.0 , max = 1.0 )
from witwin . settings import SettingsRegistry
# Get settings instance
my_settings = SettingsRegistry . get ( "my_extension" )
# Read values
if my_settings . enabled :
print ( f "Threshold: { my_settings.threshold } " )
Settings are stored in browser LocalStorage:
localStorage[ "witwin_settings" ] = JSON .stringify ({
theme : "dark" ,
viewportQuality : "high" ,
gridEnabled : true ,
// ...
})