What is RoTerminal?
RoTerminal is plugin that behaves similarly to the Windows Command Prompt or any other Terminal in general. It is capable of executing commands to do tasks.
Almost every developer has the Explorer, Properties and Command Bar open at all times. But using RoTerminal, you are able to do almost all the stuff they let you do, all in a single place. Using commands.
If you have a Linux based operating system, you are already familiar with CLIs.
Overview
Commands
-
cd
This command stands for Change Directory.
You are able to navigate between directories as Instances.
The default directory which you start with isgame/Workspace
The name of the Instance should be entered as the argument if its a child of the instance as current directory. If you want to navigate to the parent directory of the current directory, you would be passing..
. In a different case, when you want to navigate to a completely different directory, you are able to write the entire path.
Example: -
open
This command lets you open script editor directly through the terminal.
Lets take the following as a scenario.
To open the script editor for that script, you would execute:
As you might have already realized, the argument passed toopen
is the name of the script. The script needs to be a child of the current directory. -
tree
Sometimes you want to know that which instances the directory actually contains. Thetree
command when executed. Will print all the descendants as a tree.
It doesnt require any arguments. -
lua
Coming back to the use cases, RoTerminal lets you execute lua code directly.
When thelua
command is executed, it opens a sub terminal which lets you enter lua code.
As stated, you can exit the lua terminal by writingexit
-
gen
This command lets you generate instances, they are automatically parented to the current directory.
The first argument is expected to be the ClassName of the Instance. The second argument can be left out and is optional, but it renames the instance to it after it creates it. -
del
Now that you can create instances, you might want to be able to delete them too.
You can do that with thedel
command.
The instance needs to be a child of the current directory.
The first argument is the name of the Instance to be deleted. But in case you have many more instances with the same name and you want all of them deleted. You can pass the second argument astrue
. The second argument is optional and you need not pass it when not required. Deleting an instance will also delete all of its descendants. -
prop
This command lets you execute property operations such as getting and setting
The first argument must be a specifier (either-get
or-set
) which specifies whether toget
orset
.
Setting Properties
When setting properties, the second argument must be the name of the Instance and it should be located in the current directory. The third argument would be the name of the property name and the the fourth would be the value. Some datatypes need a specific format in order to be interpreted. This has been discussed in the Special Formats section.
Getting Properties
You can retrieve properties when passing the-get
specifier. The second argument is the name of the Instance while the third one is the Property Name. -
alias
If you prefer a different name for a command, you are able to use this command to give it an alias.
Things to keep in mind:
- An alias name cannot start with an integer.
- An alias name cannot have a name which belongs to a command.
- A single command can have any number of aliases
You are also able to have aliases that save, so that you can use them without having to add them each session. You can also have temporary aliases which do not save after closing studio.
Setting aliases
If you want to set aliases which save, you can use the -set
specifier.
The second argument should be the name of the alias, while the third one should be the name of the command which the alias is being set for.
When trying to make a temporary alias, you would do the same thing as above, but using the -tempset
specifier.
Removing Aliases
The process of removing temporary and saved aliases is the same. It uses the -rem
specifier. Second argument being the name of the alias.
-
config
This command does not function yet. The purpose of this command is to be able to change how the terminal looks as well as the default values. Such as the path, text color, warning color, background color, ect. -
cmds
This command prints all the commands, and how to use them
If you execute commands which require arguments, without any argument. It will display helpful information. So keep this small trick in mind.
Special Formats
Some datatypes need a strict format in order to be recognized and translated by the terminal. Currently the only supported ones are Numbers, Strings, Booleans, Enums, Color3, Vector3, Vector2, UDim2, nil. Ill be adding support for more later on.
Numbers, Strings, Booleans, nil
These types dont need a special format and are recognized straight away.
Color3, Vector3
When you want to use such datatypes, this is how they should be formatted.
{value1,value2,value3}
Use case:
setprop Baseplate Color {255,255,255}
setprop Baseplate Position {100,100,100}
Spaces are not accepted between the values in this format.
Vector2
This format is similar to that of the above
{0.5,0.5}
Use case:
setprop Frame AnchorPoint {0.5,0.5}
UDim2
This format is similar to the above aswell
{1,0,1,50}
Use case:
setprop TextLabel Size {1,0,1,0}
Enum
This format is similar to that of the path.
Enum/Material/Sand
Use case:
setprop Baseplate Material Enum/Material/Sand
Limitations
This plugin is in early stage of development. Although there are a few things which are not possible to do using this.
- You are not able to make Package operations, publish / Create plugins and a few other things which are only possible using the explorer when you right click. This is a limitation that roblox has with plugins, so this cannot be implemented unless they add it.
- The terminal is disabled during playtesting as of today. This is because it isnt stable during playtesting due to some reasons. This is expected to be fixed soon.
Planning to add
-
Config
command, what this command is capable of has already been stated - Direct execution of lua code if passed as a parameter to
lua
command. - Command line options such as
-editor
forlua
command, which opens a temporary script, lets you edit it and listens for an execution command. It then executes the code and deletes the script after. This lets you write command line lua code in the script editor with all the tools it provides! - Custom commands
- Being able to execute multiple commands using
&
(executes all given sets of commands in order regardless of any of them erroring) aswell as&&
(which stops executing commands further if one of them errors)
Example:cd game/ServerScriptService && gen Script MyScript && open MyScript
- Being able to save the place directly through the terminal using the
save
command, as well as a confirmation entry (Y/N) to avoid mistakes. - A better lua terminal, which can have pre-defined variables set through the terminal
Known Unfixed Issues
Update Log
Update 1.1
- Merged
setprop
andgetprop
to a single commandprop
, which uses specifiers to do actions. - Added aliases
- Fixed a bug regarding retrieving EnumItem type values from properties.
(Check the commands section for a guide)
Current Version : 1.1
I made this plugin mainly to test how far I could go. I also wanted to contribute to our community. The plugin is now open source and the github link can be found here
Any feedback, command requests, bug reports are appreciated.
This plugin is not my primary focus but I’ll be maintaining it and adding more features every once in a while.
Have a great day!