1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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 = 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
});
// 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 }));
});
|