Skip to content

Commit ed63218

Browse files
Initial release
0 parents  commit ed63218

File tree

17 files changed

+1135
-0
lines changed

17 files changed

+1135
-0
lines changed

.gitattributes

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Normalize line endings for all files that Git considers text files.
2+
* text=auto eol=lf
3+
4+
# Only include the addons folder when downloading from the Asset Library.
5+
/** export-ignore
6+
/addons !export-ignore
7+
/addons/** !export-ignore

.github/FUNDING.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# These are supported funding model platforms
2+
3+
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4+
patreon: # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: # Replace with a single Ko-fi username
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12+
polar: # Replace with a single Polar username
13+
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14+
thanks_dev: # Replace with a single thanks.dev username
15+
custom: ["https://programmeroncoffee.itch.io/gdterminal/purchase"] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Godot-specific ignores
2+
.godot/
3+
/android/
4+
.nomedia
5+
.import/
6+
export.cfg
7+
export_credentials.cfg
8+
9+
# Mono-specific ignores
10+
.mono/
11+
data_*/
12+
mono_crash.*.json
13+
14+
# GDTerminal specific ignores
15+
data.cfg

LICENSE.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Copyright (c) 2025 ProgrammerOnCoffee
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy
4+
of this software and associated documentation files (the "Software"), to deal
5+
in the Software without restriction, including without limitation the rights
6+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
copies of the Software, and to permit persons to whom the Software is
8+
furnished to do so, subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in all
11+
copies or substantial portions of the Software.
12+
13+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19+
SOFTWARE.

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
![GDTerminal Banner](https://raw.githubusercontent.com/ProgrammerOnCoffee/programmeroncoffee.github.io/refs/heads/main/GDTerminal/assets/images/banner.webp)
2+
3+
4+
# GDTerminal
5+
6+
GDTerminal is an addon for Godot Engine that introduces a
7+
GDScript Terminal. Run GDScript code at the click of a button
8+
to speed up your workflow.
9+
10+
![GDTerminal Main View](https://raw.githubusercontent.com/ProgrammerOnCoffee/programmeroncoffee.github.io/refs/heads/main/GDTerminal/assets/images/main_view.webp)
11+
12+
For more information, see https://programmeroncoffee.github.io/GDTerminal.
13+
14+
15+
## License
16+
17+
This plugin is licensed under the [MIT/Expat license](https://github.com/ProgrammerOnCoffee/GDTerminal/blob/main/LICENSE.txt).

addons/GDTerminal/LICENSE.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Copyright (c) 2025 ProgrammerOnCoffee
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy
4+
of this software and associated documentation files (the "Software"), to deal
5+
in the Software without restriction, including without limitation the rights
6+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
copies of the Software, and to permit persons to whom the Software is
8+
furnished to do so, subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in all
11+
copies or substantial portions of the Software.
12+
13+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19+
SOFTWARE.

addons/GDTerminal/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# GDTerminal
2+
3+
For information, see https://programmeroncoffee.github.io/GDTerminal.
4+
5+
6+
## License
7+
8+
This plugin is licensed under the MIT/Expat license.
9+
See the LICENSE.txt file for more details.

addons/GDTerminal/dock.tscn

Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
[gd_scene load_steps=5 format=3 uid="uid://dlc45f0gthetl"]
2+
3+
[sub_resource type="InputEventKey" id="InputEventKey_0imsi"]
4+
device = -1
5+
alt_pressed = true
6+
ctrl_pressed = true
7+
keycode = 4194310
8+
9+
[sub_resource type="Shortcut" id="Shortcut_ab7yo"]
10+
events = [SubResource("InputEventKey_0imsi")]
11+
12+
[sub_resource type="Gradient" id="Gradient_gou6x"]
13+
offsets = PackedFloat32Array(-2, -1, 0)
14+
colors = PackedColorArray(0.439216, 0.729412, 0.980392, 0, 1, 1, 1, 1, 0.439216, 0.729412, 0.980392, 0)
15+
16+
[sub_resource type="GradientTexture1D" id="GradientTexture1D_i1jbc"]
17+
gradient = SubResource("Gradient_gou6x")
18+
width = 16
19+
20+
[node name="GDTerminal" type="BoxContainer"]
21+
clip_contents = true
22+
custom_minimum_size = Vector2(0, 256)
23+
anchors_preset = 15
24+
anchor_right = 1.0
25+
anchor_bottom = 1.0
26+
grow_horizontal = 2
27+
grow_vertical = 2
28+
vertical = true
29+
30+
[node name="Control" type="Control" parent="."]
31+
clip_contents = true
32+
layout_mode = 2
33+
size_flags_horizontal = 3
34+
size_flags_vertical = 3
35+
36+
[node name="CodeEdit" type="CodeEdit" parent="Control"]
37+
layout_mode = 1
38+
anchors_preset = 15
39+
anchor_right = 1.0
40+
anchor_bottom = 1.0
41+
grow_horizontal = 2
42+
grow_vertical = 2
43+
scroll_smooth = true
44+
delimiter_comments = Array[String](["#"])
45+
indent_automatic = true
46+
auto_brace_completion_highlight_matching = true
47+
48+
[node name="Settings" type="Panel" parent="Control"]
49+
modulate = Color(1, 1, 1, 0)
50+
layout_mode = 1
51+
anchors_preset = -1
52+
anchor_left = -1.0
53+
anchor_bottom = 1.0
54+
grow_horizontal = 2
55+
grow_vertical = 2
56+
57+
[node name="ScrollContainer" type="ScrollContainer" parent="Control/Settings"]
58+
layout_mode = 1
59+
anchors_preset = -1
60+
anchor_right = 1.0
61+
anchor_bottom = 1.0
62+
grow_horizontal = 2
63+
grow_vertical = 2
64+
horizontal_scroll_mode = 0
65+
66+
[node name="VBoxContainer" type="VBoxContainer" parent="Control/Settings/ScrollContainer"]
67+
layout_mode = 2
68+
size_flags_horizontal = 3
69+
size_flags_vertical = 3
70+
71+
[node name="Label" type="Label" parent="Control/Settings/ScrollContainer/VBoxContainer"]
72+
layout_mode = 2
73+
theme_type_variation = &"HeaderLarge"
74+
text = "Settings"
75+
horizontal_alignment = 1
76+
vertical_alignment = 1
77+
78+
[node name="HSeparator" type="HSeparator" parent="Control/Settings/ScrollContainer/VBoxContainer"]
79+
layout_mode = 2
80+
81+
[node name="ClearOnRun" type="CheckButton" parent="Control/Settings/ScrollContainer/VBoxContainer"]
82+
layout_mode = 2
83+
tooltip_text = "When enabled, the CodeEdit
84+
will be cleared after code is run."
85+
text = "Clear on Run"
86+
text_overrun_behavior = 3
87+
88+
[node name="PrintOnRun" type="CheckButton" parent="Control/Settings/ScrollContainer/VBoxContainer"]
89+
layout_mode = 2
90+
tooltip_text = "When enabled, statements will be
91+
printed before and after running code."
92+
text = "Print on Run"
93+
text_overrun_behavior = 3
94+
95+
[node name="PrintExecutionTime" type="CheckButton" parent="Control/Settings/ScrollContainer/VBoxContainer"]
96+
layout_mode = 2
97+
tooltip_text = "When enabled, the time that code
98+
takes to execute will be printed."
99+
text = "Print Execution Time"
100+
text_overrun_behavior = 3
101+
102+
[node name="MarkUnsaved" type="CheckButton" parent="Control/Settings/ScrollContainer/VBoxContainer"]
103+
layout_mode = 2
104+
tooltip_text = "When enabled, GDTerminal will mark the active
105+
scene as unsaved when a command is run."
106+
text = "Mark Scene as Unsaved"
107+
text_overrun_behavior = 3
108+
109+
[node name="RunHotkey" type="HBoxContainer" parent="Control/Settings/ScrollContainer/VBoxContainer"]
110+
layout_mode = 2
111+
tooltip_text = "The hotkey to run code.
112+
113+
To change:
114+
1. Press the button
115+
2. Press the new key(s)
116+
3. Move your mouse outside of the button."
117+
theme_override_constants/separation = 0
118+
119+
[node name="LSpacer" type="Control" parent="Control/Settings/ScrollContainer/VBoxContainer/RunHotkey"]
120+
custom_minimum_size = Vector2(2, 0)
121+
layout_mode = 2
122+
size_flags_horizontal = 0
123+
124+
[node name="Label" type="Label" parent="Control/Settings/ScrollContainer/VBoxContainer/RunHotkey"]
125+
layout_mode = 2
126+
size_flags_horizontal = 3
127+
text = "Run Hotkey"
128+
text_overrun_behavior = 3
129+
130+
[node name="Button" type="Button" parent="Control/Settings/ScrollContainer/VBoxContainer/RunHotkey"]
131+
custom_minimum_size = Vector2(16, 0)
132+
layout_mode = 2
133+
size_flags_horizontal = 8
134+
135+
[node name="RSpacer" type="Control" parent="Control/Settings/ScrollContainer/VBoxContainer/RunHotkey"]
136+
custom_minimum_size = Vector2(7, 0)
137+
layout_mode = 2
138+
size_flags_horizontal = 8
139+
140+
[node name="ExpandFactor" type="HBoxContainer" parent="Control/Settings/ScrollContainer/VBoxContainer"]
141+
layout_mode = 2
142+
tooltip_text = "How much the CodeEdit will be
143+
expanded when expand is toggled."
144+
theme_override_constants/separation = 0
145+
146+
[node name="LSpacer" type="Control" parent="Control/Settings/ScrollContainer/VBoxContainer/ExpandFactor"]
147+
custom_minimum_size = Vector2(2, 0)
148+
layout_mode = 2
149+
size_flags_horizontal = 0
150+
151+
[node name="Label" type="Label" parent="Control/Settings/ScrollContainer/VBoxContainer/ExpandFactor"]
152+
layout_mode = 2
153+
size_flags_horizontal = 3
154+
text = "Expand Factor"
155+
text_overrun_behavior = 3
156+
157+
[node name="SpinBox" type="SpinBox" parent="Control/Settings/ScrollContainer/VBoxContainer/ExpandFactor"]
158+
layout_mode = 2
159+
min_value = 2.0
160+
max_value = 5.0
161+
step = 0.5
162+
value = 2.0
163+
alignment = 1
164+
suffix = "x"
165+
166+
[node name="RSpacer" type="Control" parent="Control/Settings/ScrollContainer/VBoxContainer/ExpandFactor"]
167+
custom_minimum_size = Vector2(7, 0)
168+
layout_mode = 2
169+
size_flags_horizontal = 8
170+
171+
[node name="MoveToBottom" type="CheckButton" parent="Control/Settings/ScrollContainer/VBoxContainer"]
172+
layout_mode = 2
173+
tooltip_text = "Move this dock to the bottom panel."
174+
text = "Move to Bottom"
175+
alignment = 1
176+
177+
[node name="Saved" type="Panel" parent="Control"]
178+
modulate = Color(1, 1, 1, 0.5)
179+
layout_mode = 1
180+
anchors_preset = -1
181+
anchor_left = -1.0
182+
anchor_bottom = 1.0
183+
grow_horizontal = 2
184+
grow_vertical = 2
185+
186+
[node name="VBoxContainer" type="VBoxContainer" parent="Control/Saved"]
187+
layout_mode = 1
188+
anchors_preset = 15
189+
anchor_right = 1.0
190+
anchor_bottom = 1.0
191+
grow_horizontal = 2
192+
grow_vertical = 2
193+
194+
[node name="Label" type="Label" parent="Control/Saved/VBoxContainer"]
195+
layout_mode = 2
196+
theme_type_variation = &"HeaderLarge"
197+
text = "Saved Commands"
198+
horizontal_alignment = 1
199+
vertical_alignment = 1
200+
201+
[node name="HSeparator" type="HSeparator" parent="Control/Saved/VBoxContainer"]
202+
layout_mode = 2
203+
204+
[node name="ScrollContainer" type="ScrollContainer" parent="Control/Saved/VBoxContainer"]
205+
layout_mode = 2
206+
size_flags_vertical = 3
207+
horizontal_scroll_mode = 0
208+
209+
[node name="VBoxContainer" type="VBoxContainer" parent="Control/Saved/VBoxContainer/ScrollContainer"]
210+
layout_mode = 2
211+
size_flags_horizontal = 3
212+
size_flags_vertical = 3
213+
214+
[node name="HSeparator2" type="HSeparator" parent="Control/Saved/VBoxContainer"]
215+
layout_mode = 2
216+
217+
[node name="Button" type="Button" parent="Control/Saved/VBoxContainer"]
218+
layout_mode = 2
219+
tooltip_text = "Add the current command to
220+
the list of saved commands."
221+
text = "Add Current Command"
222+
223+
[node name="Buttons" type="BoxContainer" parent="."]
224+
layout_mode = 2
225+
alignment = 1
226+
227+
[node name="Settings" type="Button" parent="Buttons"]
228+
layout_mode = 2
229+
tooltip_text = "Settings"
230+
toggle_mode = true
231+
232+
[node name="Saved" type="Button" parent="Buttons"]
233+
layout_mode = 2
234+
tooltip_text = "Open saved commands."
235+
toggle_mode = true
236+
237+
[node name="Run" type="Button" parent="Buttons"]
238+
layout_mode = 2
239+
size_flags_horizontal = 3
240+
tooltip_text = "Runs the code currently in the CodeEdit.
241+
242+
If a scene is not open, the code will be attatched
243+
to a new node parented to the scene root.
244+
If a scene is open, the code will be attatched
245+
to a new node parented to the editor's SceneTree."
246+
shortcut = SubResource("Shortcut_ab7yo")
247+
text = "Run"
248+
249+
[node name="TextureRect" type="TextureRect" parent="Buttons/Run"]
250+
visible = false
251+
layout_mode = 1
252+
anchors_preset = 15
253+
anchor_right = 1.0
254+
anchor_bottom = 1.0
255+
grow_horizontal = 2
256+
grow_vertical = 2
257+
texture = SubResource("GradientTexture1D_i1jbc")
258+
expand_mode = 2
259+
260+
[node name="Clear" type="Button" parent="Buttons"]
261+
layout_mode = 2
262+
tooltip_text = "Clear Code"
263+
264+
[node name="Expand" type="Button" parent="Buttons"]
265+
layout_mode = 2
266+
tooltip_text = "Expand"
267+
toggle_mode = true

addons/GDTerminal/icon.png

244 Bytes
Loading

0 commit comments

Comments
 (0)