about summary refs log tree commit diff
path: root/configs
diff options
context:
space:
mode:
Diffstat (limited to 'configs')
-rw-r--r--configs/os_x/.slate.js167
1 files changed, 90 insertions, 77 deletions
diff --git a/configs/os_x/.slate.js b/configs/os_x/.slate.js
index 438d691f1d3a..690f065a95ef 100644
--- a/configs/os_x/.slate.js
+++ b/configs/os_x/.slate.js
@@ -1,110 +1,123 @@
-/* globals S,slate,_ */
-// Bindings for slate.
-// Forked from rschmukler/dotfiles
-// Hotkeys for quickly opening apps & changing window size
+// 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 modal_key  = ":alt;shift;cmd;ctrl"; // hyper key
-var resize_key = ":alt;shift;ctrl";     // meh key
+var ergodox_attached = false;
 
+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,
+  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'
+  ";": {
+    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'
+  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'
+  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'
+  ",": {
+    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'
+  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'
+  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'
+  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'
-  },
-}
+  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;
-}, {});
+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 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',
+  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}));
+  S.bind(key + modal_key, S.op("focus", { app: app }));
 });