Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Refactor hotkey code
  • Loading branch information
lundal committed Feb 29, 2016
1 parent 5b42e7a commit 1aeb641
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 92 deletions.
86 changes: 27 additions & 59 deletions extension.js
Expand Up @@ -12,6 +12,7 @@
/*****************************************************************
CONST & VARS
*****************************************************************/
// Library imports
const St = imports.gi.St;
const Main = imports.ui.main;
const Shell = imports.gi.Shell;
Expand All @@ -25,8 +26,12 @@ const Clutter = imports.gi.Clutter;
const Signals = imports.signals;
const Tweener = imports.ui.tweener;
const Workspace = imports.ui.workspace;
const Utils = imports.misc.extensionUtils.getCurrentExtension().imports.utils;

// Extension imports
const Extension = imports.misc.extensionUtils.getCurrentExtension();
const hotkeys = Extension.imports.hotkeys;

// Globals
const SETTINGS_GRID_SIZE = 'grid-size';
const SETTINGS_AUTO_CLOSE = 'auto-close';
const SETTINGS_ANIMATION = 'animation';
Expand Down Expand Up @@ -58,8 +63,6 @@ let excludedApplications = new Array(

let window_dragging = true;

const mySettings = Utils.getSettings();

const key_bindings = {
'show-toggle-tiling': function() {
toggleTiling();
Expand Down Expand Up @@ -158,53 +161,13 @@ function enable() {

Main.panel.addToStatusArea("GTileStatusButton", launcher);

// Key Bindings
global.log("Init KeyBindings");

let key;
for (key in key_bindings) {
if (Main.wm.addKeybinding && Shell.ActionMode) { // introduced in 3.16
Main.wm.addKeybinding(
key,
mySettings,
Meta.KeyBindingFlags.NONE,
Shell.ActionMode.NORMAL,
key_bindings[key]
);
}
else if (Main.wm.addKeybinding && Shell.KeyBindingMode) { // introduced in 3.7.5
Main.wm.addKeybinding(
key,
mySettings,
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.MESSAGE_TRAY,
key_bindings[key]
);
}
else {
global.display.add_keybinding(
key,
mySettings,
Meta.KeyBindingFlags.NONE,
key_bindings[key]
);
}
}
hotkeys.bind(key_bindings);

global.log("Extention Enabled !");
}

function disable() {
// Key Bindings
for (key in key_bindings) {
if (Main.wm.removeKeybinding) { // introduced in 3.7.2
Main.wm.removeKeybinding(key);
}
else {
global.display.remove_keybinding(key);
}
}

hotkeys.unbind();
destroyGrids();
launcher.destroy();
launcher = null;
Expand Down Expand Up @@ -287,7 +250,7 @@ function moveGrids() {
pos_y = window.get_frame_rect().height / 2 + window.get_frame_rect().y;
}
else {
pos_x =monitor.x + monitor.width/2;
pos_x = monitor.x + monitor.width/2;
pos_y = monitor.y + monitor.height/2;
}

Expand Down Expand Up @@ -437,29 +400,33 @@ function getWindowActor() {

function getNotFocusedWindowsOfMonitor(monitor) {
let windows = global.get_window_actors().filter(function(w) {
let wm_type = w.meta_window.get_window_type();

let app = tracker.get_window_app(w.meta_window);

if (app == null)
return false;
if (app == null) {
return false;
}

let appName = app.get_name();

//global.log("NotFocused - AppName: " + appName);

let bool = !contains(excludedApplications, appName) && wm_type == Meta.WindowType.NORMAL && w.meta_window.get_workspace() == global.screen.get_active_workspace() && w.meta_window.showing_on_its_workspace() && monitors[w.meta_window.get_monitor()] == monitor && focusMetaWindow != w.meta_window;

return bool;
return !contains(excludedApplications, appName)
&& w.meta_window.get_window_type() == Meta.WindowType.NORMAL
&& w.meta_window.get_workspace() == global.screen.get_active_workspace()
&& w.meta_window.showing_on_its_workspace()
&& monitors[w.meta_window.get_monitor()] == monitor
&& focusMetaWindow != w.meta_window;
});

return windows;
}

function getWindowsOfMonitor(monitor) {
let windows = global.get_window_actors().filter(function(w) {
let wm_type = w.meta_window.get_window_type();
return wm_type != 1 && w.meta_window.get_workspace() == global.screen.get_active_workspace() && w.meta_window.showing_on_its_workspace() && monitors[w.meta_window.get_monitor()] == monitor;
return w.meta_window.get_window_type() != Meta.WindowType.DESKTOP
&& w.meta_window.get_workspace() == global.screen.get_active_workspace()
&& w.meta_window.showing_on_its_workspace()
&& monitors[w.meta_window.get_monitor()] == monitor;
});

return windows;
Expand Down Expand Up @@ -530,7 +497,7 @@ function showTiling() {
pos_y = window.get_frame_rect().height / 2 + window.get_frame_rect().y;
}
else {
pos_x =monitor.x + monitor.width/2;
pos_x = monitor.x + monitor.width/2;
pos_y = monitor.y + monitor.height/2;
}

Expand Down Expand Up @@ -591,13 +558,15 @@ function contains(a, obj) {
}

function getFocusApp() {
if (tracker.focus_app == null)
if (tracker.focus_app == null) {
return false;
}

let focusedAppName = tracker.focus_app.get_name();

if (contains(excludedApplications, focusedAppName))
if (contains(excludedApplications, focusedAppName)) {
return false;
}

let windows = global.screen.get_active_workspace().list_windows();
let focusedWindow = false;
Expand Down Expand Up @@ -1419,7 +1388,6 @@ function GridElement(monitor, width, height, coordx, coordy) {
this._init(monitor, width, height, coordx, coordy);
}


GridElement.prototype = {

_init: function(monitor,width,height,coordx,coordy) {
Expand Down
55 changes: 55 additions & 0 deletions hotkeys.js
@@ -0,0 +1,55 @@
// Library imports
const Main = imports.ui.main;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;

// Extension imports
const Extension = imports.misc.extensionUtils.getCurrentExtension();
const Settings = Extension.imports.settings;

// Globals
const mySettings = Settings.get();

function bind(key_bindings) {
global.log("Binding keys");
for (var key in key_bindings) {
if (Main.wm.addKeybinding && Shell.ActionMode) { // introduced in 3.16
Main.wm.addKeybinding(
key,
mySettings,
Meta.KeyBindingFlags.NONE,
Shell.ActionMode.NORMAL,
key_bindings[key]
);
}
else if (Main.wm.addKeybinding && Shell.KeyBindingMode) { // introduced in 3.7.5
Main.wm.addKeybinding(
key,
mySettings,
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.MESSAGE_TRAY,
key_bindings[key]
);
}
else {
global.display.add_keybinding(
key,
mySettings,
Meta.KeyBindingFlags.NONE,
key_bindings[key]
);
}
}
}

function unbind() {
global.log("Unbinding keys");
for (key in key_bindings) {
if (Main.wm.removeKeybinding) { // introduced in 3.7.2
Main.wm.removeKeybinding(key);
}
else {
global.display.remove_keybinding(key);
}
}
}
14 changes: 7 additions & 7 deletions prefs.js
@@ -1,12 +1,13 @@
// Library imports
const GObject = imports.gi.GObject;
const Gdk = imports.gi.Gdk;
const Gtk = imports.gi.Gtk;

const Utils = imports.misc.extensionUtils.getCurrentExtension().imports.utils;
// Extension imports
const Extension = imports.misc.extensionUtils.getCurrentExtension();
const Settings = Extension.imports.settings;

// End of imports;

// TODO: Translation Party!
// Globals
const pretty_names = {
'show-toggle-tiling': 'Display gTile'
}
Expand All @@ -19,8 +20,7 @@ function append_hotkey(model, settings, name, pretty_name) {

let row = model.insert(10);

model.set(row, [0, 1, 2, 3], [name, pretty_name,
mods, key ]);
model.set(row, [0, 1, 2, 3], [name, pretty_name, mods, key ]);
}

function buildPrefsWidget() {
Expand All @@ -35,7 +35,7 @@ function buildPrefsWidget() {

global.log("Modal created.");

let settings = Utils.getSettings();
let settings = Settings.get();

for(key in pretty_names) {
append_hotkey(model, settings, key, pretty_names[key]);
Expand Down
27 changes: 27 additions & 0 deletions settings.js
@@ -0,0 +1,27 @@
// Library imports
const Gio = imports.gi.Gio;

// Extension imports
const Extension = imports.misc.extensionUtils.getCurrentExtension();

function get() {
let dir = Extension.dir.get_child('schemas').get_path();
let source = Gio.SettingsSchemaSource.new_from_directory(
dir,
Gio.SettingsSchemaSource.get_default(),
false);

if (!source) {
throw new Error('Error Initializing the thingy.');
}

let schema = source.lookup('org.gnome.shell.extensions.gtile', false);

if (!schema) {
throw new Error('Schema missing.');
}

return new Gio.Settings({
settings_schema: schema
});
}
26 changes: 0 additions & 26 deletions utils.js

This file was deleted.

0 comments on commit 1aeb641

Please sign in to comment.