From 78dc7048e3e3ae77957f1142ff12af8f66ec07f8 Mon Sep 17 00:00:00 2001 From: jfkeller Date: Mon, 11 Nov 2024 16:55:25 -0500 Subject: [PATCH] Jkeller/auto load extensions (#141) * added configuration script which generates a default user.config.json which autoloads IsaacSim extensions and also prompts the user to input their API Token for the AirLab Nucleus server * updated documentation for configuration script * mounted user.config.json as a volume in docker to autoload extensions --- configure.sh | 51 ++ docs/getting_started.md | 7 +- simulation/isaac-sim/docker/.gitignore | 3 +- .../isaac-sim/docker/docker-compose.yaml | 1 + ....config.json => user_TEMPLATE.config.json} | 548 +++++++----------- 5 files changed, 258 insertions(+), 352 deletions(-) create mode 100755 configure.sh rename simulation/isaac-sim/docker/{user.config.json => user_TEMPLATE.config.json} (93%) diff --git a/configure.sh b/configure.sh new file mode 100755 index 00000000..74f1e52e --- /dev/null +++ b/configure.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# setup + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +BOLDCYAN="\e[1;96m" +YELLOW="\e[;33m" +ENDCOLOR="\e[0m" + +confirm_no() { #https://stackoverflow.com/questions/3231804/in-bash-how-to-add-are-you-sure-y-n-to-any-command-or-alias + read -r -p "${1:-Are you sure? [y/N]} " response + case "$response" in + [yY][eE][sS]|[yY]) + true + ;; + *) + false + ;; + esac +} + + +# Generate user.config.json +USER_CONFIG_JSON_SOURCE=${SCRIPT_DIR}/simulation/isaac-sim/docker/user_TEMPLATE.config.json +USER_CONFIG_JSON_DESTINATION=${SCRIPT_DIR}/simulation/isaac-sim/docker/user.config.json + +echo -e "${BOLDCYAN}1. Generating Default IsaacSim Config ($USER_CONFIG_JSON_DESTINATION)${ENDCOLOR}" + +if [ -f $USER_CONFIG_JSON_DESTINATION ]; then + echo -e "${YELLOW}WARNING: The file $USER_CONFIG_JSON_DESTINATION already exists.${ENDCOLOR}" + confirm_no "Do you want to reset it to the default? [y/N]" && cp $USER_CONFIG_JSON_SOURCE $USER_CONFIG_JSON_DESTINATION +else + cp $USER_CONFIG_JSON_SOURCE $USER_CONFIG_JSON_DESTINATION +fi + + +# AirLab Nucleus Login Config +OMNI_PASS_SOURCE=${SCRIPT_DIR}/simulation/isaac-sim/docker/omni_pass_TEMPLATE.env +OMNI_PASS_DESTINATION=${SCRIPT_DIR}/simulation/isaac-sim/docker/omni_pass.env + +echo -e "${BOLDCYAN}2. Configure AirLab Nucleus Login ($OMNI_PASS_DESTINATION)${ENDCOLOR}" + +echo "Go to https://airlab-storage.andrew.cmu.edu:8443/omni/web3/, log in, then right click on the cloud and click the \"API Tokens\" window to generate an API token and paste it here. Leave this blank if you want to skip this step: " +if [ -f $OMNI_PASS_DESTINATION ]; then + echo -e "${YELLOW}WARNING: The file $USER_CONFIG_JSON_DESTINATION already exists, leave it blank to skip.${ENDCOLOR}" +fi +read -r -p "API Token: " API_TOKEN + +if [ ! -z "${API_TOKEN}" ]; then + sed "s/PASTE-YOUR-API-TOKEN/$API_TOKEN/g" $OMNI_PASS_SOURCE > $OMNI_PASS_DESTINATION +fi diff --git a/docs/getting_started.md b/docs/getting_started.md index 81b7577d..f2f56abd 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -22,12 +22,7 @@ Install [Docker Desktop](https://docs.docker.com/desktop/install/ubuntu/). This ## Configure -Follow the instructions in `docker/isaac-sim/omni_pass.env` to configure the required settings for your Omniverse Nucelus Server token. -To generate a token, follow the NVIDIA docs [here](https://docs.omniverse.nvidia.com/nucleus/latest/config-and-info/api_tokens.html). See here for more information: -https://airlab.slite.com/app/docs/X8dZ8w5S3GP9tw - -Also set the default OMNI_SERVER and accept the license terms. (Basti: The omni_server variable doesn't seem to work. The content browser might have to be edited manually the first time. To do that click: -"Add new connection ..." and enter airlab-storage.andrew.cmu.edu:8443 in the server field. Also if there is a localhost it should be removed since we are not running a local Nucleus server. +Run `./configure.sh` and follow the instructions in the prompts to do an initial configuration of the repo. ## Docker Images diff --git a/simulation/isaac-sim/docker/.gitignore b/simulation/isaac-sim/docker/.gitignore index cbcd8f09..94d7315c 100644 --- a/simulation/isaac-sim/docker/.gitignore +++ b/simulation/isaac-sim/docker/.gitignore @@ -1,2 +1,3 @@ omni_pass.env -.bash_history \ No newline at end of file +.bash_history +user.config.json diff --git a/simulation/isaac-sim/docker/docker-compose.yaml b/simulation/isaac-sim/docker/docker-compose.yaml index 7a555d57..d6168f23 100644 --- a/simulation/isaac-sim/docker/docker-compose.yaml +++ b/simulation/isaac-sim/docker/docker-compose.yaml @@ -53,6 +53,7 @@ services: - ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw - ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw - ~/docker/isaac-sim/documents:/root/Documents:rw + - ./user.config.json:/root/.local/share/ov/data/Kit/Isaac-Sim/4.1/user.config.json:rw # developer stuff - .dev:/root/.dev:rw # developer config - .bashrc:/root/.bashrc:rw # bash config diff --git a/simulation/isaac-sim/docker/user.config.json b/simulation/isaac-sim/docker/user_TEMPLATE.config.json similarity index 93% rename from simulation/isaac-sim/docker/user.config.json rename to simulation/isaac-sim/docker/user_TEMPLATE.config.json index 8ef2eafd..b0903a52 100644 --- a/simulation/isaac-sim/docker/user.config.json +++ b/simulation/isaac-sim/docker/user_TEMPLATE.config.json @@ -1,5 +1,14 @@ { "persistent": { + "isaac": { + "asset_root": { + "default": "https://airlab-storage.andrew.cmu.edu:8443/omni/web3/NVIDIA/Assets/Isaac/4.1", + "nvidia": "omniverse://localhost/NVIDIA", + "isaac": "omniverse://localhost/NVIDIA/Assets/Isaac/4.1/Isaac", + "cloud": "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.1", + "timeout": 5.0 + } + }, "simulation": { "minFrameRate": 60, "defaultMetersPerUnit": 1.0 @@ -67,99 +76,6 @@ "settingsVersion": 5, "showNameAsType": true }, - "physics": { - "visualizationDisplayJoints": false, - "visualizationSimulationOutput": false, - "useActiveCudaContext": false, - "visualizationQueryUsdrtForTraversal": false, - "visualizationDisplayAttachmentsHideActor1": false, - "visualizationDisplayAttachmentsHideActor0": false, - "visualizationDisplayParticlesShowDeformableMesh": false, - "visualizationDisplayParticlesShowFluidSurface": false, - "visualizationDisplayParticlesClothMeshLines": false, - "visualizationDisplayParticlesShowDiffuseParticles": false, - "visualizationDisplayColliderNormals": false, - "visualizationSimulationDataVisualizer": false, - "visualizationDisplayParticlesShowDeformableParticles": true, - "pvdStreamToFile": false, - "pvdEnabled": false, - "pvdDebug": true, - "pvdProfile": true, - "visualizationDisplayParticlesShowParticleSetParticles": true, - "pvdMemory": true, - "useLocalMeshCache": true, - "autocreatePhysicsScene": true, - "massDistributionManipulator": false, - "visualizationDisplayParticlesParticleRadius": 2, - "visualizationDisplayParticles": 0, - "visualizationDisplayAttachments": 0, - "visualizationDisplayDeformableBodyType": 0, - "visualizationDisplayTendons": 0, - "visualizationDisplayColliders": 0, - "backwardCompatibilityCheckMode": 2, - "localMeshCacheSizeMB": 1024, - "cooking": { - "ujitsoCookingMaxProcessCount": 16 - }, - "visualizationDisplayMassProperties": 0, - "visualizationDisplayParticlesParticlePositions": 0, - "numThreads": 8, - "visualizationDisplayDeformableBodies": 0, - "overrideGPUSettings": -1, - "visualizationSimplifyAtDistance": 2500.0, - "visualizationGap": 0.20000000298023224, - "omniPvdOvdRecordingDirectory": "", - "testRunnerFilter": "", - "pvdOutputDirectory": "", - "pvdIP": "127.0.0.1", - "testRunnerSelection": {}, - "supportUiActionBarEnabled": false, - "supportUiLoggingEnabled": false, - "supportUiFloatingNotificationsEnabled": true, - "supportUiAutomaticCollisionCreationEnabled": false, - "supportUiAsyncCookingAtStageLoad": true, - "supportUiCustomManipulatorEnabled": true, - "supportUiManipModeAllowRigidBodyTraversal": 0, - "supportUiManipModeAllowRotWhileTranslating": 1, - "supportUiManipModeAllowTranOnOtherAxesWhileTranslating": 1, - "supportUiManipModeAllowTranWhileRotating": 1, - "supportUiManipModeAllowRotOnOtherAxesWhileRotating": 1, - "supportUiToolbarButtonsWithText": false, - "supportUiAvoidChangingExistingColliders": false, - "supportUiStaticColliderSimplificationType": 0, - "supportUiDynamicColliderSimplificationType": 0, - "resetOnStop": true - }, - "omnihydra": { - "useFastSceneDelegate": true, - "useSceneGraphInstancing": false, - "useCachedXformTimeSamples": false, - "useSkelAdapter": true, - "useSkelAdapterBlendShape": true, - "useSkelAdapterDeformGraph": false, - "skinDeformerExtLoaded": false - }, - "rtx": { - "resourcemanager": { - "placeholderTextureColor": { - "0": 0.0, - "1": 1.0, - "2": 1.0 - } - }, - "mdltranslator": { - "mdlDistilling": true - }, - "sceneDb": { - "allowDuplicateAhsInvocation": true - }, - "hydra": { - "points": { - "defaultWidth": 1.0 - }, - "readTransformsFromFabricInRenderDelegate": false - } - }, "exts": { "omni.anim.navigation.core": { "navMesh": { @@ -258,6 +174,10 @@ "omni.kit.material.library": { "browserPath": "" }, + "omni.kit.window.content_browser": { + "show_grid_view": true, + "grid_view_scale": 2 + }, "omni.kit.window.filepicker": { "window_split": 306, "show_grid_view": true, @@ -320,32 +240,107 @@ "visible": true, "order": -100 }, - "omni.kit.window.content_browser": { - "show_grid_view": true, - "grid_view_scale": 2, - "current_directory": "omniverse://airlab-storage.andrew.cmu.edu:8443/Projects/AirStack" - }, "omni.kit.registry.nucleus": { "userRegistries": {} - }, - "omni.anim.curve.core": { - "defaultTangentType": "auto", - "defaultTangentWeighted": false, - "defaultTangentBroken": false, - "defaultTangentPreInfinity": "constant", - "defaultTangentPostInfinity": "constant" } }, - "isaac": { - "asset_root": { - "nvidia": "omniverse://localhost/NVIDIA", - "isaac": "omniverse://localhost/NVIDIA/Assets/Isaac/4.1/Isaac", - "cloud": "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.1", - "timeout": 5.0, - "default": "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.1" + "physics": { + "visualizationDisplayJoints": false, + "visualizationSimulationOutput": false, + "useActiveCudaContext": false, + "visualizationQueryUsdrtForTraversal": false, + "visualizationDisplayAttachmentsHideActor1": false, + "visualizationDisplayAttachmentsHideActor0": false, + "visualizationDisplayParticlesShowDeformableMesh": false, + "visualizationDisplayParticlesShowFluidSurface": false, + "visualizationDisplayParticlesClothMeshLines": false, + "visualizationDisplayParticlesShowDiffuseParticles": false, + "visualizationDisplayColliderNormals": false, + "visualizationSimulationDataVisualizer": false, + "visualizationDisplayParticlesShowDeformableParticles": true, + "pvdStreamToFile": false, + "pvdEnabled": false, + "pvdDebug": true, + "pvdProfile": true, + "visualizationDisplayParticlesShowParticleSetParticles": true, + "pvdMemory": true, + "useLocalMeshCache": true, + "autocreatePhysicsScene": true, + "massDistributionManipulator": false, + "visualizationDisplayParticlesParticleRadius": 2, + "visualizationDisplayParticles": 0, + "visualizationDisplayAttachments": 0, + "visualizationDisplayDeformableBodyType": 0, + "visualizationDisplayTendons": 0, + "visualizationDisplayColliders": 0, + "backwardCompatibilityCheckMode": 2, + "localMeshCacheSizeMB": 1024, + "cooking": { + "ujitsoCookingMaxProcessCount": 16 + }, + "visualizationDisplayMassProperties": 0, + "visualizationDisplayParticlesParticlePositions": 0, + "numThreads": 8, + "visualizationDisplayDeformableBodies": 0, + "overrideGPUSettings": -1, + "visualizationSimplifyAtDistance": 2500.0, + "visualizationGap": 0.20000000298023224, + "omniPvdOvdRecordingDirectory": "", + "testRunnerFilter": "", + "pvdOutputDirectory": "", + "pvdIP": "127.0.0.1", + "testRunnerSelection": {}, + "supportUiActionBarEnabled": false, + "supportUiLoggingEnabled": false, + "supportUiFloatingNotificationsEnabled": true, + "supportUiAutomaticCollisionCreationEnabled": false, + "supportUiAsyncCookingAtStageLoad": true, + "supportUiCustomManipulatorEnabled": true, + "supportUiManipModeAllowRigidBodyTraversal": 0, + "supportUiManipModeAllowRotWhileTranslating": 1, + "supportUiManipModeAllowTranOnOtherAxesWhileTranslating": 1, + "supportUiManipModeAllowTranWhileRotating": 1, + "supportUiManipModeAllowRotOnOtherAxesWhileRotating": 1, + "supportUiToolbarButtonsWithText": false, + "supportUiAvoidChangingExistingColliders": false, + "supportUiStaticColliderSimplificationType": 0, + "supportUiDynamicColliderSimplificationType": 0, + "resetOnStop": true + }, + "omnihydra": { + "useFastSceneDelegate": true, + "useSceneGraphInstancing": false, + "useCachedXformTimeSamples": false, + "useSkelAdapter": true, + "useSkelAdapterBlendShape": true, + "useSkelAdapterDeformGraph": false, + "skinDeformerExtLoaded": false + }, + "rtx": { + "resourcemanager": { + "placeholderTextureColor": { + "0": 0.0, + "1": 1.0, + "2": 1.0 + } + }, + "mdltranslator": { + "mdlDistilling": true + }, + "sceneDb": { + "allowDuplicateAhsInvocation": true + }, + "hydra": { + "points": { + "defaultWidth": 1.0 + }, + "readTransformsFromFabricInRenderDelegate": false } }, "app": { + "file": { + "recentFiles": {} + }, "transform": { "gizmoUseSRT": true }, @@ -400,6 +395,21 @@ "PrimCreationWithDefaultXformOps": true, "DefaultXformOpPrecision": "Double" }, + "stage": { + "upAxis": "Z", + "timeCodeRange": [ + 0, + 1000000 + ], + "movePrimInPlace": false, + "instanceableOnCreatingReference": false, + "materialStrength": "weakerThanDescendants", + "interpolationType": "Linear", + "timeCodesPerSecond": 60.0, + "defaultPrimName": "World", + "dragDropImport": "payload", + "nestedGprimsAuthoring": false + }, "datetime": { "format": "MM/DD/YYYY" }, @@ -437,25 +447,6 @@ "standin_usd_path": "/Stage/ShaderKnob" } }, - "hydra": { - "displayPurpose": { - "guide": false, - "proxy": false, - "render": true - }, - "material": { - "renderContext": "mdl" - } - }, - "uiSettings": { - "DisplayOrientAsRotate": true - }, - "window": { - "uiStyle": "NvidiaDark", - "maximized": true, - "width": -1, - "height": -1 - }, "omniverse": { "content_browser": { "options_menu": { @@ -467,113 +458,16 @@ "show_details": true } }, - "gamepadCameraControl": false, - "lastOpenDirectory": "omniverse://airlab-storage.andrew.cmu.edu:8443/Projects/AirStack", - "fileEventHistory": {} - }, - "file_importer": { - "directory": "omniverse://airlab-storage.andrew.cmu.edu:8443/Projects/AirStack/" - }, - "file": { - "recentFiles": {}, - "save": { - "showUnsavedLayersDialog": true - } - }, - "file_exporter": { - "directory": "omniverse://airlab-storage.andrew.cmu.edu:8443/Projects/AirStack/" - }, - "exts": { - "enabled": { - "0": "airlab.tmux_manager-0.1.0", - "1": "airlab.airstack-1.19.1" - } - }, - "mesh_generator": { - "shapes": { - "cube": { - "object_half_scale": 50, - "u_scale": 1, - "v_scale": 1, - "w_scale": 1 - }, - "cone": { - "object_half_scale": 50, - "u_scale": 1, - "v_scale": 3, - "w_scale": 1 - }, - "plane": { - "object_half_scale": 50, - "u_scale": 1, - "v_scale": 1 - } - } - }, - "anim": { - "snapToFrame": true, - "autoKeyAllXform": false - }, - "omni.anim.curve.core": { - "deleteEmptyCurve": true + "gamepadCameraControl": false }, - "stage": { - "upAxis": "Z", - "movePrimInPlace": false, - "instanceableOnCreatingReference": false, - "materialStrength": "weakerThanDescendants", - "interpolationType": "Linear", - "timeCodesPerSecond": 60.0, - "defaultPrimName": "World", - "dragDropImport": "payload", - "nestedGprimsAuthoring": false, - "timeCodeRange": [ - 0, - 1000000 - ] - }, - "extensions": { - "console": { - "filterLevel": 0, - "sources": { - "carb.windowing-glfw.gamepad": true, - "omni.replicator.core.scripts.annotators": true, - "omni.kit.widget.cache_indicator.cache_state_menu": true, - "omni.kit.profiler.window": true, - "omni.isaac.ros2_bridge.plugin": true, - "carb.audio.device": true, - "carb.audio.output": true, - "carb.audio.context": true, - "omni.hydra.scene_delegate.plugin": true, - "dronekit": true, - "carb.crashreporter-breakpad.plugin": true, - "omni.isaac.ros2_bridge.scripts.extension": true, - "omni.ext._impl._internal": true, - "omni.kit.app._impl": true, - "omni.platforminfo.plugin": true, - "carb.windowing-glfw.plugin": true, - "carb": true, - "omni.kvdb.plugin": true, - "omni.isaac.core.simulation_context.simulation_context": true, - "rtx.neuraylib.plugin": true, - "gpu.foundation.plugin": true, - "omni.hydra": true, - "omni.fabric.plugin": true, - "omni.kit.window.filepicker.model": true, - "omni.usd": true, - "omni.timeline.plugin": true, - "omni.replicator.core.scripts.orchestrator": true, - "autopilot": true, - "omni.graph": true, - "rtx.rtxsensor.plugin": true, - "dronekit.mavlink": true, - "omni.isaac.core_nodes.impl.base_writer_node": true, - "omni.graph.window.core.graph_config": true, - "omni.syntheticdata.plugin": true, - "omni.isaac.sensor.plugin": true, - "omni.kit.widget.settings.settings_model": true, - "omni.kit.widget.versioning.checkpoints_model": true - } + "hydra": { + "displayPurpose": { + "guide": false, + "proxy": false, + "render": true + }, + "material": { + "renderContext": "mdl" } }, "viewport": { @@ -581,10 +475,10 @@ "tickRate": 120 }, "pickingMode": "kind:model.ALL", - "camMoveVelocity": 0.03156265702871778, + "camMoveVelocity": 0.05, "previewOnPeek": false, "snapToSurface": false, - "displayOptions": 1024, + "displayOptions": 31951, "pickingModeNoKinds": true, "pickingModeIncludeRef": true, "autoFrame": { @@ -1620,8 +1514,8 @@ "1014": 0.7142857313156128, "1015": 1.0, "1016": 1.0, - "1017": 0.6000000238418579, - "1018": 0.0, + "1017": 1.0, + "1018": 0.8571428656578064, "1019": 1.0, "1020": 1.0, "1021": 0.6000000238418579, @@ -2645,10 +2539,10 @@ "1013": 1.0, "1014": 0.7142857313156128, "1015": 1.0, - "1016": 0.0, - "1017": 0.0, - "1018": 0.0, - "1019": 0.0, + "1016": 1.0, + "1017": 1.0, + "1018": 0.8571428656578064, + "1019": 1.0, "1020": 1.0, "1021": 0.6000000238418579, "1022": 0.0, @@ -2697,46 +2591,17 @@ }, "objectCentricNavigation": 0, "coiDoubleClick": false, - "grid": { - "scale": 1.0, - "lineWidth": 1, - "lineFadeOutStartDistance": 10.0, - "lineColor": { - "0": 0.3, - "1": 0.3, - "2": 0.3 - }, - "lineFadeOutEndDistance": 20.0, - "offset": 0.009999999776482582 - }, - "boundingBoxes": { - "lineColor": { - "0": 0.886, - "1": 0.447, - "2": 0.447 - }, - "hideWhenManipulating": false - }, - "gizmo": { - "scale": 0.01, - "lineWidth": 1.0, - "constantScaleEnabled": true, - "constantScale": 10.0, - "minFadeOut": 1.0, - "maxFadeOut": 50, - "constantScaleCamera": false - }, - "Viewport 2": { + "Viewport": { "Viewport0": { "guide": { "axis": { - "visible": false + "visible": true }, "grid": { - "visible": false + "visible": true }, "selection": { - "visible": false + "visible": true } }, "scene": { @@ -2758,22 +2623,22 @@ }, "hud": { "renderFPS": { - "visible": false + "visible": true }, "renderResolution": { - "visible": false + "visible": true }, "renderProgress": { - "visible": false + "visible": true }, "deviceMemory": { - "visible": false + "visible": true }, "hostMemory": { - "visible": false + "visible": true }, "processMemory": { - "visible": false + "visible": true }, "visible": true, "cameraSpeed": { @@ -2789,69 +2654,62 @@ } } }, - "Viewport": { - "Viewport0": { - "guide": { - "axis": { - "visible": false - }, - "grid": { - "visible": false - }, - "selection": { - "visible": false - } - }, - "scene": { - "cameras": { - "visible": false - }, - "lights": { - "visible": false - }, - "skeletons": { - "visible": false - }, - "meshes": { - "visible": true - }, - "audio": { - "visible": false - } - }, - "hud": { - "renderFPS": { - "visible": false - }, - "renderResolution": { - "visible": false - }, - "renderProgress": { - "visible": false - }, - "deviceMemory": { - "visible": false - }, - "hostMemory": { - "visible": false - }, - "processMemory": { - "visible": false - }, - "visible": true, - "cameraSpeed": { - "visible": true - }, - "toastMessage": { - "visible": true - } - }, - "resolution": { - "0": 1280, - "1": 720 - } + "grid": { + "scale": 1.0, + "lineWidth": 1, + "lineFadeOutStartDistance": 10.0, + "lineColor": { + "0": 0.3, + "1": 0.3, + "2": 0.3 + }, + "lineFadeOutEndDistance": 20.0, + "offset": 0.009999999776482582 + }, + "boundingBoxes": { + "lineColor": { + "0": 0.886, + "1": 0.447, + "2": 0.447 + }, + "hideWhenManipulating": false + }, + "gizmo": { + "scale": 0.01, + "lineWidth": 1.0, + "constantScaleEnabled": true, + "constantScale": 10.0, + "minFadeOut": 1.0, + "maxFadeOut": 50, + "constantScaleCamera": false + } + }, + "extensions": { + "console": { + "filterLevel": 0, + "sources": { + "carb.crashreporter-breakpad.plugin": true, + "carb.windowing-glfw.gamepad": true, + "omni.replicator.core.scripts.annotators": true, + "omni.kit.widget.cache_indicator.cache_state_menu": true, + "omni.kit.profiler.window": true, + "carb.audio.device": true, + "carb.audio.output": true, + "carb.audio.context": true } } + }, + "exts": { + "enabled": { + "0": "airlab.airstack-1.19.1", + "1": "airlab.tmux_manager-0.1.0" + } + }, + "window": { + "uiStyle": "NvidiaDark", + "maximized": false, + "width": 1440, + "height": 900 } } }