diff options
author | William Carroll <wpcarro@gmail.com> | 2018-07-18T23·53-0400 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2018-07-19T16·00-0400 |
commit | a86c2ddece8fde8a42f1e6031b189d1865b9b211 (patch) | |
tree | 77c56fd69f574b697e831fd8c062e7672e342cf2 /configs/os_x/slate/.slate.js | |
parent | e8ca641075b0acfab44fd424f08ab6fa6f630495 (diff) |
Prefer stow over hand-rolled solution
After discovering GNU stow on Nix IRC, refactored install and setup scripts to consume it. Code is vastly simplified as a result.
Diffstat (limited to 'configs/os_x/slate/.slate.js')
-rw-r--r-- | configs/os_x/slate/.slate.js | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/configs/os_x/slate/.slate.js b/configs/os_x/slate/.slate.js new file mode 100644 index 000000000000..e097d935faff --- /dev/null +++ b/configs/os_x/slate/.slate.js @@ -0,0 +1,123 @@ +// Support flag to branch KBDs depending on presence of Ergodox keyboard. + +// Since the Ergodox has complicated modifier keys like "hyper" and "meh" key, +// we should prefer to use these when that keyboard is attached because it +// reduces the potential for collisions for Emacs KBDs. This becomes +// problematic, however, when the Ergodox is not attached because these keys are +// unavailable. Slate KBDs. Under these circumstances, potential collisions +// with Emacs KBDs is acceptable. + +var ergodox_attached = true; + +var HYPER = ":alt;shift;cmd;ctrl"; +var MEH = ":alt;shift;ctrl"; + +var modal_key = ergodox_attached ? HYPER : ":ctrl;shift"; +var resize_key = ergodox_attached ? MEH : ":alt;shift"; + +// Configs +S.cfga({ + defaultToCurrentScreen: true, + secondsBetweenRepeat: 0.1, + checkDefaultsOnLoad: true, + focusCheckWidthMax: 3000 +}); + +// window resizing bindings +var window_resizing_bindings = { + ";": { + x: "screenSizeX/3*2 + screenOriginX+20", + y: "screenOriginY+20", + width: "screenSizeX/3 - 40", + height: "screenSizeY-100" + }, + g: { + x: "screenOriginX+20", + y: "screenOriginY+20", + width: "screenSizeX/3*2 - 40", + height: "screenSizeY-100" + }, + o: { + x: "screenSizeX / 2 + screenOriginX + 20", + y: "screenOriginY + 20", + width: "screenSizeX / 2 - 40", + height: "(screenSizeY - 120) / 2" + }, + ",": { + x: "screenSizeX / 2 + screenOriginX + 20", + y: "(screenSizeY - 120) / 2 + 20 + 20", + width: "screenSizeX / 2 - 40", + height: "(screenSizeY - 120) / 2" + }, + h: { + x: "screenOriginX+20", + y: "screenOriginY+20", + width: "screenSizeX*0.5 - 40", + height: "screenSizeY-100" + }, + j: { + x: "screenOriginX+screenSizeX/6", + y: "screenOriginY+20", + width: "2*screenSizeX/3", + height: "screenSizeY - 100" + }, + k: { + x: "screenOriginX+20", + y: "screenOriginY+20", + width: "screenSizeX - 40", + height: "screenSizeY - 100" + }, + l: { + x: "screenSizeX/2 + screenOriginX+20", + y: "screenOriginY+20", + width: "screenSizeX*0.5 - 40", + height: "screenSizeY-100" + } +}; + +var window_resizing_bindings = Object.keys(window_resizing_bindings).reduce( + function(acc, kbd) { + acc[kbd + resize_key] = S.op("move", window_resizing_bindings[kbd]); + return acc; + }, + {} +); + +S.bnda(window_resizing_bindings); + +// Moves applications across multiple screens +var throwLeft = slate.operation("throw", { + screen: "0", + width: "screenSizeX", + height: "screenSizeY" +}); +var throwRight = slate.operation("throw", { + screen: "1", + width: "screenSizeX", + height: "screenSizeY" +}); + +slate.bind("1:ctrl", throwLeft); +slate.bind("2:ctrl", throwRight); + +var focus_apps = { + 1: "1Password", + i: "iTunes", + a: "Atom", + h: "Dash", + e: "Emacs", + t: "iTerm2", + m: "Messages", + s: "Spotify", + c: "Google Chrome", + l: "LimeChat", + k: "Slack", + w: "Wireshark", + p: "Tomato One", + d: "Discord" +}; + +Object.keys(focus_apps).forEach(function(key) { + app = focus_apps[key]; + S.bind(key + modal_key, S.op("focus", { app: app })); +}); |