diff --git a/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST/screens/filedisplay.txt b/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST/screens/filedisplay.txt
new file mode 100644
index 0000000000..587181a18f
--- /dev/null
+++ b/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST/screens/filedisplay.txt
@@ -0,0 +1,3 @@
+SCREEN AUTO AUTO 1.0
+
+FILEDISPLAY <%= target_name %>/target.txt 500 500
\ No newline at end of file
diff --git a/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST2/screens/filedisplay.txt b/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST2/screens/filedisplay.txt
new file mode 100644
index 0000000000..587181a18f
--- /dev/null
+++ b/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST2/screens/filedisplay.txt
@@ -0,0 +1,3 @@
+SCREEN AUTO AUTO 1.0
+
+FILEDISPLAY <%= target_name %>/target.txt 500 500
\ No newline at end of file
diff --git a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/FiledisplayWidget.vue b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/FiledisplayWidget.vue
new file mode 100644
index 0000000000..18c7ea97d7
--- /dev/null
+++ b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/FiledisplayWidget.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+ {{ filePath }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/index.js b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/index.js
index 513a7bab79..91b63cd4eb 100644
--- a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/index.js
+++ b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/index.js
@@ -33,6 +33,7 @@ import CheckbuttonWidget from './CheckbuttonWidget.vue'
import ComboboxWidget from './ComboboxWidget.vue'
import DateWidget from './DateWidget.vue'
import DynamicWidget from './DynamicWidget.vue'
+import FiledisplayWidget from './FiledisplayWidget.vue'
import FormatValueBase from './FormatValueBase'
import FormatvalueWidget from './FormatvalueWidget.vue'
import GraphWidget from './GraphWidget'
@@ -100,6 +101,7 @@ export {
ComboboxWidget,
DateWidget,
DynamicWidget,
+ FiledisplayWidget,
FormatValueBase,
FormatvalueWidget,
GraphWidget,
diff --git a/openc3/data/config/widgets.yaml b/openc3/data/config/widgets.yaml
index d34b19c762..7cf77a9367 100644
--- a/openc3/data/config/widgets.yaml
+++ b/openc3/data/config/widgets.yaml
@@ -204,6 +204,24 @@ Decoration Widgets:
SPACER 0 100
LABEL "Spacer above"
END
+ FILEDISPLAY:
+ summary: Displays the contents of a target file with syntax highlighting
+ since: 6.10.3
+ parameters:
+ - name: File path
+ required: true
+ description: Path to the file relative to the target folder (e.g. "INST/procedures/file.rb")
+ values: .+
+ - name: Width
+ required: false
+ description: Width of the widget in pixels (default = 600)
+ values: \d+
+ - name: Height
+ required: false
+ description: Height of the widget in pixels (default = 300)
+ values: \d+
+ example: |
+ FILEDISPLAY "INST/data/sample.json" 400 200
Telemetry Widgets:
description: Telemetry widgets are used to display telemetry values.
The first parameters to each of these widgets is a telemetry mnemonic.