Я пытаюсь добавить глобальный ярлык в свое приложение Electron, который будет показывать/скрывать его. Мое приложение представляет собой панель меню, созданную с использованием maxogden/menubar и React.
У меня есть следующий код. Для краткости я пропустил пару битов, но вот как я настроил глобальные ярлыки.
Я думаю, важно также отметить один из советов по maxogden/menubar
Readme
:
Используйте mb.on('after-create-window', callback) для запуска вещей после загрузки вашего приложения.
const { globalShortcut } = require('electron');
const keyboardShortcuts = {
open: 'CommandOrControl+Shift+g',
close: 'CommandOrControl+Shift+g'
}
menu.on('after-create-window', () => {
globalShortcut.register(keyboardShortcuts.open, () => {
menu.window.show();
});
});
menu.on('after-show', () => {
globalShortcut.unregister(keyboardShortcuts.open);
globalShortcut.register(keyboardShortcuts.close, () => {
menu.window.hide();
});
});
menu.on('focus-lost', () => {
globalShortcut.unregister(keyboardShortcuts.close);
globalShortcut.register(keyboardShortcuts.open, () => {
menu.window.show();
});
});
После первого открытия строки меню мой ярлык регистрируется и будет работать для отображения приложения. Однако код, который я реализовал для unregister
ярлыка и перерегистрации его, чтобы скрыть приложение (при отображении), похоже, не работает.
Я не уверен, что мой код для перерегистрации ярлыка настроен в правильном обработчике событий, то есть after-show
и focus-lost
. У меня такое ощущение, что эти обработчики событий, с которыми я работаю, связаны непосредственно с моим menu
, а не menu.window
. Это объясняет, почему перерегистрация ярлыка не происходит, но я не уверен.
Кто-нибудь знает, как разумно настроить глобальный переключатель ярлыков, чтобы открывать / закрывать мое приложение в строке меню?