about summary refs log blame commit diff
path: root/configs/os_x/slate/.slate.js
blob: e097d935faffccca4f6c4b26997c6dbb3e7094f8 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                                                         
 





                                                                                
 
                            
 




                                                         


          


                               
                          

   

                                




                                            
    




                                  
    




                                              
    




                                              
    




                                  
    




                                     
    




                               
    






                                          
 






                                                                            

                                 
 
                                             









                                           
 

                                 
 
                  













                     

  

                                               
                                                       
   
// 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 }));
});