- 'use strict';
-
- var keys = [];
- var controlShift = ['ctrl', 'shift'];
- var controlAltShift = ['ctrl', 'alt', 'shift'];
- var controlCommandShift = ['ctrl', 'cmd', 'shift'];
- var margin = 0;
- var increment = 0.05;
-
- /* Position */
-
- var Position = {
-
- central: function(frame, window) {
-
- return {
-
- x: frame.x + ((frame.width - window.width) / 2),
- y: frame.y + ((frame.height - window.height) / 2)
-
- };
- },
-
- top: function(frame, window) {
-
- return {
-
- x: window.x,
- y: frame.y
-
- };
- },
-
- bottom: function(frame, window) {
-
- return {
-
- x: window.x,
- y: (frame.y + frame.height) - window.height
-
- };
- },
-
- left: function(frame, window) {
-
- return {
-
- x: frame.x,
- y: window.y
-
- };
- },
-
- right: function(frame, window) {
-
- return {
-
- x: (frame.x + frame.width) - window.width,
- y: window.y
-
- };
- },
-
- topLeft: function(frame, window, margin) {
-
- return {
-
- x: Position.left(frame, window).x + margin,
- y: Position.top(frame, window).y + margin
-
- };
- },
-
- topRight: function(frame, window, margin) {
-
- return {
-
- x: Position.right(frame, window).x - margin,
- y: Position.top(frame, window).y + margin
-
- };
- },
-
- bottomLeft: function(frame, window, margin) {
-
- return {
-
- x: Position.left(frame, window).x + margin,
- y: Position.bottom(frame, window).y - margin
-
- };
- },
-
- bottomRight: function(frame, window, margin) {
-
- return {
-
- x: Position.right(frame, window).x - margin,
- y: Position.bottom(frame, window).y - margin
-
- };
- }
- };
-
- /* Grid */
-
- var Frame = {
-
- width: 1,
- height: 1,
-
- half: {
-
- width: 0.5,
- height: 0.5
-
- }
- };
-
- /* Window Functions */
-
- Window.prototype.to = function(position) {
-
- this.setTopLeft(position(this.screen().visibleFrameInRectangle(), this.frame(), margin));
- }
-
- Window.prototype.grid = function(x, y, reverse) {
-
- var frame = this.screen().visibleFrameInRectangle();
-
- var newWindowFrame = _(this.frame()).extend({
-
- width: (frame.width * x) - (2 * margin),
- height: (frame.height * y) - (2 * margin)
-
- });
-
- var position = reverse ? Position.topRight(frame, newWindowFrame, margin) :
- Position.topLeft(frame, newWindowFrame, margin);
-
- this.setFrame(_(newWindowFrame).extend(position));
- }
-
- Window.prototype.snapSize = function(axis) {
- Phoenix.log(axis);
- var modalmessage = new Modal();
- modalmessage.message = 'test';
- modal.duration = 2;
- modal.show();
- var frame = this.screen().visibleFrameInRectangle();
-
- if (axis === 'x') {
- var newWindowFrame = _(this.frame()).extend({
- width: (frame.width)
- });
- } else {
- var newWindowFrame = _(this.frame()).extend({
- height: (frame.height)
- });
- }
-
- var position = reverse ? Position.topRight(frame, newWindowFrame, margin) :
- Position.topLeft(frame, newWindowFrame, margin);
-
- this.setFrame(_(newWindowFrame).extend(position));
- }
-
- Window.prototype.reverseGrid = function(x, y) {
-
- this.grid(x, y, true);
- }
-
- Window.prototype.resize = function(multiplier) {
-
- var frame = this.screen().visibleFrameInRectangle();
- var newSize = this.size();
-
- if (multiplier.x) {
- newSize.width += frame.width * multiplier.x;
- }
-
- if (multiplier.y) {
- newSize.height += frame.height * multiplier.y;
- }
-
- this.setSize(newSize);
- }
-
- Window.prototype.increaseWidth = function() {
-
- this.resize({
- x: increment
- });
- }
-
- Window.prototype.decreaseWidth = function() {
-
- this.resize({
- x: -increment
- });
- }
-
- Window.prototype.increaseHeight = function() {
-
- this.resize({
- y: increment
- });
- }
-
- Window.prototype.decreaseHeight = function() {
-
- this.resize({
- y: -increment
- });
- }
-
- /* Position Bindings */
-
- keys.push(new Key('q', controlShift, function() {
-
- Window.focused() && Window.focused().to(Position.topLeft);
- }));
-
- keys.push(new Key('w', controlShift, function() {
-
- Window.focused() && Window.focused().to(Position.topRight);
- }));
-
- keys.push(new Key('a', controlShift, function() {
-
- Window.focused() && Window.focused().to(Position.bottomLeft);
- }));
-
- keys.push(new Key('s', controlShift, function() {
-
- Window.focused() && Window.focused().to(Position.bottomRight);
- }));
-
- keys.push(new Key('z', controlShift, function() {
-
- Window.focused() && Window.focused().to(Position.central);
- }));
-
- /* Grid Bindings */
-
- keys.push(new Key('p', controlShift, function() {
-
- Window.focused() && Window.focused().grid(Frame.half.width, Frame.half.height);
- }));
-
- keys.push(new Key('o', controlShift, function() {
-
- Window.focused() && Window.focused().grid(Frame.width, Frame.half.height);
- }));
-
- keys.push(new Key('k', controlShift, function() {
-
- Window.focused() && Window.focused().grid(Frame.half.width, Frame.height);
- }));
-
- keys.push(new Key('l', controlShift, function() {
-
- Window.focused() && Window.focused().grid(Frame.width, Frame.height);
- }));
-
- /* Reverse Grid Bindings */
-
- keys.push(new Key('å', controlAltShift, function() {
-
- Window.focused() && Window.focused().reverseGrid(Frame.half.width, Frame.half.height);
- }));
-
- keys.push(new Key('p', controlAltShift, function() {
-
- Window.focused() && Window.focused().reverseGrid(Frame.width, Frame.half.height);
- }));
-
- keys.push(new Key('ä', controlAltShift, function() {
-
- Window.focused() && Window.focused().reverseGrid(Frame.half.width, Frame.height);
- }));
-
- keys.push(new Key('ö', controlAltShift, function() {
-
- Window.focused() && Window.focused().reverseGrid(Frame.width, Frame.height);
- }));
-
- /* Resize Bindings */
-
- keys.push(new Key(',', controlShift, function() {
-
- Window.focused() && Window.focused().increaseWidth();
- }));
-
- keys.push(new Key('.', controlShift, function() {
-
- Window.focused() && Window.focused().increaseHeight();
- }));
-
- keys.push(new Key(',', controlAltShift, function() {
-
- Window.focused() && Window.focused().decreaseWidth();
- }));
-
- keys.push(new Key('.', controlAltShift, function() {
-
- Window.focused() && Window.focused().decreaseHeight();
- }));
-
- // make full width but same height
- keys.push(new Key('z', controlCommandShift, function() {
- var modalmessage = new Modal();
- modalmessage.message = 'test';
- modal.duration = 2;
- modal.show();
-
- Window.focused() && Window.focused().snapSize('x');
- }));
-
- function focusApp(name) {
- Phoenix.log('About to focus ' + name);
- App.runningApps().forEach(function(app) {
- if (app.name() === name) {
- Phoenix.log('Found and focusing ' + name);
- Phoenix.log(app.focus());
- Phoenix.log('Done focusing ' + name);
- }
- });
- }
-
- keys.push(new Key('g', controlCommandShift, function () {
- focusApp('Google Chrome');
- }));
- keys.push(new Key('a', controlCommandShift, function () {
- focusApp('Atom');
- }));
- keys.push(new Key('s', controlCommandShift, function () {
- focusApp('Slack');
- }));
- keys.push(new Key('t', controlCommandShift, function () {
- focusApp('iTerm');
- }));
- keys.push(new Key('m', controlCommandShift, function () {
- focusApp('Messages');
- }));
-
|