Last active
December 7, 2022 10:53
-
-
Save Polyterative/349bf7a03564cf5a5e750f3fe35fa4e7 to your computer and use it in GitHub Desktop.
Serenade script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let intellij = serenade.app("intellij"); | |
let global = serenade.global(); | |
let chrome = serenade.app("chrome"); | |
// Display an alert box with the message "Hello, world!" | |
// alert("Hello, world!"); | |
// Define global shortcut keys for common actions | |
global.key("cut", "x", ["ctrl"]); // Cut the selected text | |
global.key("copy", "c", ["ctrl"]); // Copy the selected text | |
global.command("copy all", async (api, matches) => { | |
await api.pressKey("a", ["ctrl"]); // Select all text | |
await api.delay(50); // Wait 50 milliseconds | |
await api.pressKey("c", ["ctrl"]); // Copy the selected text | |
await api.delay(50); // Wait 50 milliseconds | |
await api.pressKey("escape", []); // Close any open menus or dialogs | |
}); | |
//delete all | |
global.command("delete all", async (api, matches) => { | |
await api.pressKey("a", ["ctrl"]); // Select all text | |
await api.delay(50); // Wait 50 milliseconds | |
await api.pressKey("delete", []); // Delete the selected text | |
await api.delay(50); // Wait 50 milliseconds | |
await api.pressKey("escape", []); // Close any open menus or dialogs | |
}); | |
global.key("drop", "v", ["ctrl"]); // Paste the clipboard contents at the cursor position | |
global.key("special drop", "v", ["windows"]); // Paste the clipboard contents using special formatting options | |
global.key("undo", "z", ["ctrl"]); // Undo the last action | |
global.key("all", "a", ["ctrl"]); // Select all text | |
global.key("full screen", "f11", []); // Toggle full-screen mode | |
global.key("fullscreen", "f11", []); // Toggle full-screen mode | |
global.key("switch", "tab", ["alt"]); // Switch between open windows or tabs | |
global.key("maximize", "up", ["windows"], 3); // Maximize the current window | |
global.key("minimize", "down", ["windows"]); // Minimize the current window | |
// Define shortcut keys for deleting text | |
global.key("slash", "backspace", ["ctrl"]); // Delete the previous word | |
global.key("bash", "backspace", []); // Delete the previous character | |
global.key("smash", "delete", ["ctrl"]); // Delete the next word | |
// Define shortcut keys for navigation | |
global.key("push", "right", ["ctrl"]); // Move the cursor to the next word | |
global.key("pop", "left", ["ctrl"]); // Move the cursor to the previous word | |
global.key("confirm", "enter", []); // Confirm a selection or action | |
global.key("slap", "enter", []); // Confirm a selection or action | |
global.key("yes", "enter", []); // Confirm a selection or action | |
global.key("no", "escape", []); // Cancel a selection or action | |
// Block certain commands from being spoken to force me using shorter commands | |
global.command("edit", (api) => {}); // Do nothing | |
global.command("enter", (api) => {}); // Do nothing | |
global.command("escape", (api) => {}); // Do nothing | |
// global.command("me <%text%>", async (api, matches) => { | |
// await api.runCommand("type "+matches.text); // Type the requested text | |
// }); | |
// Define shortcut keys for switching between applications | |
global.key("desktop", "d", ["windows"]); // Switch to the desktop | |
global.key("chrome", "1", ["windows"]); // Switch to the first application in the taskbar | |
global.key("mail", "2", ["windows"]); // Switch to the second application in the taskbar | |
global.key("calendar", "3", ["windows"]); // Switch to the third application in the taskbar | |
global.key("code", "4", ["windows"]); // Switch to the fourth application in the taskbar | |
global.key("teams", "5", ["windows"]); // Switch to the fifth application in the taskbar | |
// Define global shortcut keys for scrolling | |
global.key("scroll", "pagedown", []); // Scroll down one page | |
global.key("page", "pagedown", []); // Scroll down one page | |
global.key("scroll up", "pageup", []); // Scroll up one page | |
global.key("top", "home", ["ctrl"]); | |
global.key("bottom", "end", ["ctrl"]); | |
global.key("home", "home", []); | |
global.key("end", "end", []); | |
// Define commands for searching and navigating in Google Chrome | |
chrome.command("find <%text%>", async (api, matches) => { | |
await api.pressKey("f", ["ctrl"]); // Open the search bar | |
await api.typeText(matches.text); // Type the search query | |
}); | |
chrome.command("google <%text%>", async (api, matches) => { | |
await api.pressKey("t", ["ctrl"]); // Open a new tab | |
await api.pressKey("k", ["ctrl"]); // Focus the search bar | |
await api.typeText(matches.text); // Type the search query | |
await api.pressKey("enter"); // Perform the search | |
}); | |
chrome.command("google this", async (api, matches) => { | |
await api.pressKey("c", ["ctrl"]); // Copy the selected text | |
await api.pressKey("t", ["ctrl"]); // Open a new tab | |
await api.pressKey("k", ["ctrl"]); // Focus the search bar | |
await api.pressKey("v", ["ctrl"]); // Paste the copied text | |
await api.pressKey("enter"); // Perform the search | |
}); | |
// Define shortcut keys for navigating search results in the "find" panel | |
chrome.key("next", "g", ["ctrl"]); // Move to the next search result | |
chrome.key("previous", "g", ["ctrl", "shift"]); // Move to the previous search result | |
// Define shortcut keys for opening developer tools in Google Chrome | |
chrome.key("console", "j", ["ctrl", "shift"]); // Open the JavaScript console | |
// terminal commands | |
// serenade.app("terminal").command("clear", (api) => { | |
// api.pressKey("l", ["ctrl"]); | |
// } | |
// serenade.app("").key("next", "g", ["ctrl"]); | |
// intellij commands | |
intellij.key("windows", "f12", ["ctrl", "shift"]); // Open the project window | |
intellij.key("style", "f1", []); // Reformat the current file according to the configured code style settings | |
intellij.key("fix indent", "i", ["ctrl", "alt"]); // Fix the indentation of the current file | |
intellij.key("refactor", "f12", []); // Change name | |
intellij.key("change signature", "f6", ["ctrl"]); // Change the signature of the current method | |
intellij.key("inside", "b", ["ctrl"]); // Go to the definition of the symbol under the cursor | |
intellij.key("find usages", "f7", ["alt"]); // Find all usages of the symbol under the cursor | |
intellij.key("a", "alpha", []); // Write "a" | |
// up&&down method | |
intellij.key("north", "up", ["alt"]); | |
intellij.key("south", "down", ["alt"]); | |
intellij.command("head", async (api) => { | |
await api.runCommand("class"); | |
// await api.delay(100); | |
await api.pressKey("right",["ctrl"], 2 ); | |
await api.delay(50); | |
await api.pressKey("`",[], ); | |
// await api.pressKey("right",["ctrl"] ); | |
}); | |
// Select the first option in the list | |
global.command("first option", (api) => { | |
api.pressKey("enter", ); // Select the currently highlighted option | |
}); | |
// Select the second option in the list | |
global.command("second option", (api) => { | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("enter", ); // Select the currently highlighted option | |
}); | |
// Select the third option in the list | |
global.command("third option", (api) => { | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("enter", ); // Select the currently highlighted option | |
}); | |
// Select the fourth option in the list | |
global.command("fourth option", (api) => { | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("enter", ); // Select the currently highlighted option | |
}); | |
// Select the fifth option in the list | |
global.command("fifth option", (api) => { | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("down", ); // Move the selection down | |
api.pressKey("enter", ); // Select the currently highlighted option | |
}); | |
// operations | |
intellij.key("duplicate", "d", ["ctrl"]); | |
// selection manipulation commands (intellij) | |
// Increase the selection by one more level | |
intellij.key("more", "`", []); | |
// Decrease the selection by one level | |
intellij.key("less", "~", []); | |
// Shrink the selection to the next smallest enclosing element | |
intellij.key("shrink", "~", []); | |
// select to the end | |
intellij.key("trace right", "end", ["shift"]); | |
// select to the start | |
intellij.key("trace left", "home", ["shift"]); | |
// // copy to the end | |
// intellij.command("transport end", async (api) => { | |
// api.pressKey("end", ["shift"]); | |
// await api.delay(15); | |
// api.pressKey("c", ["ctrl"]); | |
// }); | |
// // copy to the start | |
// intellij.command("transport start", async (api) => { | |
// api.pressKey("home", ["shift"]); | |
// await api.delay(15); | |
// api.pressKey("c", ["ctrl"]); | |
// }); | |
// Select the current item and copy it to the clipboard | |
intellij.command("take", async (api) => { | |
api.pressKey("`", []); | |
await api.delay(15); | |
api.pressKey("c", ["ctrl"]); | |
}); | |
// Increase the selection by one level and then shrink it to the next smallest enclosing element | |
intellij.command("alpha", async (api) => { | |
api.pressKey("`", []); | |
await api.delay(15); | |
api.pressKey("`", []); | |
}); | |
// Increase the selection by two levels and then shrink it to the next smallest enclosing element | |
intellij.command("bravo", async (api) => { | |
api.pressKey("`", []); | |
await api.delay(15); | |
api.pressKey("`", []); | |
await api.delay(15); | |
api.pressKey("`", []); | |
}); | |
// Increase the selection by three levels and then shrink it to the next smallest enclosing element | |
intellij.command("charlie", async (api) => { | |
api.pressKey("`", []); | |
await api.delay(15); | |
api.pressKey("`", []); | |
await api.delay(15); | |
api.pressKey("`", []); | |
await api.delay(15); | |
api.pressKey("`", []); | |
}); | |
// Insert a comma followed by a space | |
intellij.command("comma", async (api, matches) => { | |
await api.pressKey(",", []); | |
await api.pressKey("space", []); | |
}); | |
// Insert a pair of parentheses and move the cursor inside | |
intellij.command("args", async (api, matches) => { | |
await api.pressKey("(", []); | |
await api.pressKey(")", []); | |
await api.pressKey("left", []); | |
}); | |
// Insert a pair of double quotes and move the cursor inside | |
intellij.command("string", async (api, matches) => { | |
await api.pressKey("\"", []); | |
await api.pressKey("\"", []); | |
await api.pressKey("left", []); | |
}); | |
// Insert a pair of curly braces and move the cursor inside | |
intellij.command("object", async (api, matches) => { | |
await api.pressKey("{", []); | |
await api.pressKey("}", []); | |
await api.pressKey("left", []); | |
}); | |
// Insert a pair of square brackets and move the cursor inside | |
intellij.command("array", async (api, matches) => { | |
await api.pressKey("[", []); | |
await api.pressKey("]", []); | |
await api.pressKey("left", []); | |
}); | |
// Copy the entire contents of the current editor to the clipboard | |
intellij.command("copy all", async (api, matches) => { | |
await api.pressKey("a", ["ctrl"]); | |
await api.delay(15); | |
await api.pressKey("c", ["ctrl"]); | |
await api.delay(500); | |
await api.pressKey("escape", []); | |
}); | |
// Toggle comment on/off for the selected text | |
intellij.key("comment", "f5", []); | |
// Scroll the current selection out of view | |
intellij.key("out", "f6", []); | |
// Insert a new line below the current line and move the cursor to the new line | |
intellij.key("below", "enter", ["ctrl", "shift"]); | |
// Insert a new line above the current line and move the cursor to the new line | |
intellij.key("above", "enter", ["ctrl"]); | |
// Reformat the current file according to the configured code style settings | |
intellij.key("format", "f1", []); | |
// Commit the current changes to the version control system (VCS) | |
intellij.key("send code", "f10", []); | |
// Commit the current changes to the version control system (VCS) | |
intellij.key("commit", "f10", []); | |
// Version control system (VCS) management | |
// Go to the previous change in the current file | |
intellij.key("previous change", "up", ["ctrl", "alt"]); | |
// Go to the next change in the current file | |
intellij.key("next change", "down", ["ctrl", "alt"]); | |
// Undo the changes made to the current file | |
intellij.key("undo changes", "z", ["alt"]); | |
// Find | |
// Open the find panel | |
intellij.key("find", "f", ["ctrl"]); | |
// Open the find dialog and search for the specified text | |
intellij.command("find <%text%>", async (api, matches) => { | |
await api.pressKey("f", ["ctrl"]); | |
await api.typeText(matches.text); | |
}); | |
// Open the replace panel | |
intellij.key("replace", "r", ["ctrl"]); | |
// Go to the next match for the current search | |
intellij.key("next", "l", ["ctrl"]); | |
// Go to the previous match for the current search | |
intellij.key("previous", "f3", ["shift"]); | |
// | |
intellij.command("equals", async (api, matches) => { | |
await api.pressKey("space", []); | |
await api.pressKey("=", []); | |
await api.pressKey("space", []); | |
}); | |
intellij.key("open round", "(", []); | |
intellij.key("close round", ")", []); | |
// | |
intellij.key("open array", "[", []); | |
intellij.key("open square", "[", []); | |
intellij.key("close array", "]", []); | |
intellij.key("close square", "]", []); | |
// | |
intellij.key("open curly", "{", []); | |
intellij.key("close curly", "}", []); | |
intellij.key("screenshot", "A", ["ctrl", "shift", "alt"]); | |
// General IntelliJ commands | |
intellij.key("split", ".", ["ctrl", "shift", "alt"]); | |
intellij.key("spit down", ",", ["ctrl", "shift", "alt"]); | |
intellij.key("reopen tab", "t", ["ctrl", "shift"]); | |
intellij.key("clean tabs", "c", ["alt"]); | |
// Debugging commands | |
intellij.key("breakpoint", "f8", ["ctrl"]); | |
intellij.key("step", "f9", ["shift"]); | |
// Bookmarking commands | |
intellij.key("bookmark", "f11", ["ctrl"]); | |
intellij.key("locations", "f11", ["ctrl", "shift"]); | |
// Help commands | |
intellij.key("help", "enter", ["alt"]); | |
intellij.key("fix", "enter", ["alt", "shift"]); | |
intellij.key("imports", "enter", ["alt", "shift"]); | |
// Refactoring commands | |
intellij.key("documentation", "q", ["ctrl"]); | |
intellij.key("docs", "q", ["ctrl"]); | |
intellij.key("extract method", "m", ["ctrl", "alt"]); | |
intellij.key("extract variable", "v", ["ctrl", "alt"]); | |
intellij.key("show parameters", "P", ["ctrl"]); | |
// | |
// serenade.app("intellij").key("complete", "space", ["shift"]); | |
// show error | |
intellij.key("what", "f2", []); | |
intellij.key("surround with", "t", ["alt"]); | |
//moving statements around | |
intellij.key("move up", "up", ["ctrl", "shift"]); | |
intellij.key("move down", "down", ["ctrl", "shift"]); | |
// Navigation commands | |
intellij.key("back", "left", ["alt"]); | |
intellij.key("forward", "right", ["alt"]); | |
intellij.key("last", "backspace", ["alt"]); | |
// General commands | |
intellij.key("list", "1", ["alt"]); | |
intellij.key("fullscreen", "f11", []); | |
intellij.key("settings", "s", ["ctrl", "alt"]); | |
// Git commands | |
intellij.key("git", "2", ["alt"]); | |
intellij.key("update git", "g", ["ctrl"]); | |
intellij.command("search", async (api) => { | |
api.pressKey("shift", []); | |
await api.delay(5); | |
api.pressKey("shift", []); | |
}); | |
intellij.key("big search", "f", ["ctrl", "shift"]); | |
intellij.key("recent files", "e", ["ctrl"]); | |
intellij.key("recent locations", "e", ["ctrl", "shift"]); | |
// Code folding commands | |
intellij.key("fold", "-", ["ctrl"]); | |
intellij.key("expand", "+", ["ctrl"]); | |
// editing commands | |
intellij.key("dot", ".", []); | |
intellij.key("show", "space", ["shift"]); | |
// Run | |
intellij.key("run debug", "f9", ["shift"]); | |
intellij.key("run last", "f10", ["shift"]); | |
intellij.key("show run", "4", ["alt"]) | |
// serenade.app("intellij").key("run", "b", ["ctrl", "alt", "shift"]); | |
// | |
// https://serenade.ai/docs/api/#snippets | |
// serenade.app("intellij").key("public", "public", []); | |
intellij.command("public", async (api, matches) => { | |
await api.typeText("public "); | |
}); | |
intellij.command("protected", async (api, matches) => { | |
await api.typeText("protected "); | |
}); | |
intellij.command("build bs", async (api, matches) => { | |
await api.typeText("readonly simpleResult$: BehaviorSubject<string> = new BehaviorSubject<string>();"); | |
}); | |
serenade.language("javascript").snippet( | |
"chain", | |
".pipe(" + | |
"<%cursor%>" + | |
")", | |
{ } | |
); | |
serenade.language("javascript").snippet( | |
"subscribe", | |
".subscribe(" + | |
"<%cursor%>" + | |
")", | |
{ } | |
); | |
// serenade.language("javascript").snippet( | |
// "", | |
// ".pipe(" + | |
// "<%cursor%>" + | |
// ")", | |
// { } | |
// ); | |
// serenade.language("javascript").snippet( | |
// "chain", | |
// ".pipe(" + | |
// "<%cursor%>" + | |
// ")", | |
// { "identifier": ["identifier", "pascal"] } | |
// ); | |
// | |
intellij.command("this", async (api, matches) => {await api.typeText("this");}); | |
intellij.command("true", async (api, matches) => {await api.typeText("true");}); | |
intellij.command("false", async (api, matches) => {await api.typeText("false");}); | |
intellij.key("a", "air", []); // Write "a" | |
intellij.key("b", "bat", []); // Write "b" | |
intellij.key("c", "cap", []); // Write "c" | |
intellij.key("d", "drum", []); // Write "d" | |
intellij.key("e", "each", []); // Write "e" | |
intellij.key("f", "fine", []); // Write "f" | |
intellij.key("g", "gust", []); // Write "g" | |
intellij.key("h", "harp", []); // Write "h" | |
intellij.key("i", "sit", []); // Write "i" | |
intellij.key("j", "jury", []); // Write "j" | |
intellij.key("k", "kruch", []); // Write "k" | |
intellij.key("l", "look", []); // Write "l" | |
intellij.key("m", "made", []); // Write "m" | |
intellij.key("n", "neaf", []); // Write "n" | |
intellij.key("o", "odd", []); // Write "o" | |
intellij.key("p", "pit", []); // Write "p" | |
intellij.key("q", "quech", []); // Write "q" | |
intellij.key("r", "red", []); // Write "r" | |
intellij.key("s", "sun", []); // Write "s" | |
intellij.key("t", "trap", []); // Write "t" | |
intellij.key("u", "urge", []); // Write "u" | |
intellij.key("v", "vest", []); // Write "v" | |
intellij.key("w", "whale", []); // Write "w" | |
intellij.key("x", "plex", []); // Write "x" | |
intellij.key("y", "yank", []); // Write "y" | |
intellij.key("z", "zip", []); // Write "z" | |
// | |
// What are the Common Two Letter Words? | |
// The Common Two Letter Words are is, an, at, or, of, do, to, so, no, on, in, ex, hi, me, we, ok, bi, us, un, go, etc. | |
// serenade.language("javascript").snippet( | |
// "extends", | |
// "extends <%cursor%>", | |
// { }, | |
// "class" | |
// ); | |
// | |
/* Serenade Custom Commands | |
In this file, you can define your own custom commands with the Serenade API. | |
For instance, here's a custom automation that opens your terminal and runs a command: | |
serenade.global().command("make", api => { | |
api.focusApplication("terminal"); | |
api.typeText("make clean && make"); | |
api.pressKey("return"); | |
}); | |
And, here's a Python snippet for creating a test method: | |
serenade.language("python").snippet( | |
"test method <%identifier%>", | |
"def test_<%identifier%>(self):<%newline%><%indent%>pass", | |
{ "identifier": ["underscores"] } | |
"method" | |
); | |
For more information, check out the Serenade API documentation: https://serenade.ai/docs/api | |
*/ | |
/* Serenade Custom Commands | |
In this file, you can define your own custom commands with the Serenade API. | |
For instance, here's a custom automation that opens your terminal and runs a command: | |
serenade.global().command("make", api => { | |
api.focusApplication("terminal"); | |
api.typeText("make clean && make"); | |
api.pressKey("return"); | |
}); | |
And, here's a Python snippet for creating a test method: | |
serenade.language("python").snippet( | |
"test method <%identifier%>", | |
"def test_<%identifier%>(self):<%newline%><%indent%>pass", | |
{ "identifier": ["underscores"] } | |
"method" | |
); | |
For more information, check out the Serenade API documentation: https://serenade.ai/docs/api | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment