Cmd Window
Never spend 6 minutes doing something by hand when you can spend 6 hours failing to automate it - Zhuowej Zhang
What is this about?
This tool will make you a computer ninja. Its main goal is to integrate few well known tools like AutoHotkey, Selenium and Kotlin libraries into one interface which you quickly orchestrate with Kotlin scripts.
It aims to minimise the time for development feedback of your scripts mainly by hot-reloading changes in a running environment rather than restarting the application all the time.
It can automate everything you do on your PC. You can:
- launch any program
- open any predefined folder
- automate mouse and keyboard input (and much more) with AutoHotkey integration
- automate browser with Selenium
You have to be a bit of a ninja already since you have to know something about Kotlin to use it. Not much but still... For now there is also a possibility to use Clojure as a scripting language if this is your jam.
How does this work?
You press Ctrl+Space and small input window appears on your screen. Type in the command, press enter and your code will magically do stuff.
Where do commands come from? They come from you! You write them in kotlin scripts. You can make them as simple as just running simple Autohotkey command like api.ahk("Run notepad")"
or as complicated as a whole program. Choice is yours.
Configuration
After you build and install (instructions below). It's just a matter of creating a configuration file and your Bootstrap.kts
file.
The configuration file should be located in: C:\Users\YOUR_USER_NAME\AppData\Roaming\cmd-window\config.properties
. And its contents should be very simple:
scriptsDir=C:/path/to/your/scripts
The scriptsDir
should point to a place that contains Bootstrap.kts
- this script will be executed after starting cmd-window.
Within the script there is an api
variable that contains the reference to [ScriptApi](https://github.com/marad/cmd-window/blob/main/src/main/kotlin/gh/marad/cmdwindow/ScriptApi.kt)
class that serves as a bridge between the scripts and the hosts. It's API will probably change in the future, but it is what it is for now.
How do I use it?
Just edit the Bootstrap.kts
you've set up in the previous section. Then invoke the r
command to reload the script.
Simple 'hello world' command look like this:
api.registerCommand("hello", "this shows hello") {
api.guiMessage("Hello world!", "Hello!")
}
You could also open some folders with AutoHotkey:
api.registerCommand("down", "Open downloads folder") {
api.ahk("run C:\\Users\\%A_Username%\\Downloads")
}
api.registerCommand("rec", "Open recycle bin") {
api.ahk("run ::{645FF040-5081-101B-9F08-00AA002F954E}")
}
or even make a simple command to insert your email since it's too much writing, right?
api.registerCommand("@", "insert email address") {
api.ahk("Send [email protected]")
}
Built-in commands
Right now there are just a few:
r
reloads theBootstrap.kts
file?
shows a window that lists all available commandsexit
will exit cmd-window app (how unexpected)
Building and installing
In build.gradle.kts
there is a task installDist
. You'll probably want to edit the destination path where you want cmd-window to be installed on your disk. You can place it wherever you want.
Additional resources
- This will help you judge if something is worth automating at all ;)
I'd like to help!
Great! If you spot some bugs or have an idea or even need some help setting this stuff up just post an issue. You can also submit a pull request.
I appreciate any help here because this would mean that this is also useful to you!