Активируйте метод, когда мышь вводит определенный диапазон пикселей на экране в GNOME - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь создать расширение GNOME, которое работает аналогично док-станции, за исключением того, что показывает информацию о состоянии (время, батарея и т. Д.).Что я застрял здесь, как я могу получить информацию, которая появляется, когда курсор входит в определенную область пикселей?Мол, если экран 1600х900 пикселей (просто пример), он должен активироваться при x>1550 и 800>y>850.Это не фактический диапазон пикселей, а что-то в этой общей области.У меня вопрос, как я могу сделать так, чтобы он часто проверял, находится ли курсор в этой области?Я мог бы просто сделать цикл времени, но я думаю, что это будет ресурсоемким, и должен быть лучший путь.Есть?До сих пор я смотрел как на другие расширения, так и на онлайн для API, но кажется, что я не могу найти ничего, что могло бы быть полезным.Я видел одну вещь о mainloop, которая выглядела многообещающе, но я действительно не понимал это.

Заранее спасибо!

1 Ответ

0 голосов
/ 04 июня 2018

Обратите внимание, вы не можете использовать бесконечный цикл while, так как он заблокирует оболочку;Вы должны использовать mainloop.

Вы можете использовать pointerWatcher (более удобно, так как они добавили обнаружение монитора простоя):
https://gitlab.gnome.org/GNOME/gnome-shell/blob/master/js/ui/pointerWatcher.js

Пример:

let PointerWatcher = imports.ui.pointerWatcher;

let watcher = new PointerWatcher.PointerWatcher();

let watch = watcher.addWatch(50, (x, y) => {
    let m = Main.layoutManager.currentMonitor;

    if ((m.height - y) < 200 && (m.width - x) < 200) {
        Main.notify("asdf");
    }
});

// watch.remove();

Есть также эта вещь Meta.Barrier.Можете заглянуть в.

...