forked from jigish/slate
-
Notifications
You must be signed in to change notification settings - Fork 0
JavaScript Configs
jigish edited this page Jan 24, 2013
·
60 revisions
This page documents the JavaScript config feature of Slate. This feature is available in Slate version 1.0.19 and above.
Normally, the way Slate is configured, a truly dynamic operation is impossible.
For example, lets say I'm a nutjob and I wanted the keystroke ctrl+1 to:
- push the window to the right if the application of the current window is iTerm
- push the window to the left if the application is Google Chrome
- push the window to the top if the application is anything else
- if the window's title is "OMG I WANT TO BE FULLSCREEN" then fullscreen the window regardless of the application.
And again, I want the keystroke ctrl+1 to handle all of this. In the typical Slate config, this is impossible.
Enter JavaScript Configs:
// Create Operations
var pushRight = slate.operation("push", {
"direction" : "right",
"style" : "bar-resize:screenSizeX/3"
});
var pushLeft = slate.operation("push", {
"direction" : "left",
"style" : "bar-resize:screenSizeX/3"
});
var pushTop = slate.operation("push", {
"direction" : "top",
"style" : "bar-resize:screenSizeX/2"
});
var fullscreen = slate.operation("move", {
"x" : "screenOriginX",
"y" : "screenOriginY",
"width" : "screenSizeX",
"height" : "screenSizeY"
});
// Bind A Crazy Function to 1+ctrl
slate.bind("1:ctrl", function(win) {
// here win is a reference to the currently focused window
if (win.title() === "OMG I WANT TO BE FULLSCREEN") {
win.doOperation(fullscreen);
return;
}
var appName = win.app().name();
if (appName === "iTerm") {
win.doOperation(pushRight);
} else if (appName === "Google Chrome") {
win.doOperation(pushLeft);
} else {
win.doOperation(pushTop);
}
});
Definitely verbose, but they can do much more than normal configs. Yum.