slate.configAll({ windowHintsIgnoreHiddenWindows: false, windowHintsShowIcons: true, windowHintsSpread: true, switchShowTitles: true, windowHintsSpreadSearchHeight: 100, windowHintsSpreadSearchWidth: 100, windowHintsSpreadPadding: 40 }); var hint = slate.op("hint", { "characters" : "ASDFGHJKLQWERTYUIOPCVBN" }); var grid = slate.op("grid", { grids: { "1920x1080": {"width": 8, "height": 6}, "1440x900": {"width": 8, "height": 6} } }); function quarterCorner(corner) { return slate.op("corner", { direction: corner, width: "screenSizeX/2", height: "screenSizeY/2" }); } var hyper = ":ctrl;shift;alt;cmd"; function hyperBindAll(mapping) { console.log(_.object(_.map( _.pairs(mapping), function(key, op) { return [key + hyper, op]; } ))); return slate.bindAll( _.object(_.map( _.pairs(mapping), function(pair) { return [pair[0] + hyper, pair[1]]; } )) ); } function focusApp(app) { return slate.op("focus", {"app" : app}); } hyperBindAll({ h: hint, // Simple Layout f: slate.op("corner", { direction: "top-left", width: "screenSizeX", height: "screenSizeY" }), q: slate.op("corner", { direction: "top-left", width: "screenSizeX/2", height: "screenSizeY" }), w: slate.op("corner", { direction: "top-right", width: "screenSizeX/2", height: "screenSizeY" }), a: quarterCorner("top-left"), s: quarterCorner("top-right"), z: quarterCorner("bottom-left"), n: slate.op("throw", { "width": "windowSizeX", "height": "windowSizeY", "screen": "next" }), x: quarterCorner("bottom-right"), // App focus e: focusApp("Emacs"), c: focusApp("Google Chrome"), t: focusApp("iTerm"), m: focusApp("Spotify"), // Slate operations r: slate.op("relaunch"), u: slate.op("undo") }); slate.bindAll({"esc:cmd": hint, "space:alt": grid});