From 36b0e921db92e7dfd7762c93696cf546f96d62fe Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 12 May 2021 20:06:11 +0200 Subject: Alternative shortcut for service switch (fix #850) On Linux, the default Ctrl+Alt+{Left, Right} shortcuts are not always usable, because many desktop environments use them for workspace switching. We also set Ctrl+Tab and Ctrl+Shift+Tab as a service switching shortcut. On Linux, these shortcuts are displayed in the menu, while on other platforms, the older shortcuts remain displayed. However, both shortcuts are enabled on all platforms, unless they are eaten by the desktop environment. --- src/lib/Menu.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/lib/Menu.js') diff --git a/src/lib/Menu.js b/src/lib/Menu.js index 23f897ae4..39c518812 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js @@ -1,7 +1,9 @@ import { clipboard, remote, shell } from 'electron'; import { autorun, observable } from 'mobx'; import { defineMessages } from 'react-intl'; -import { cmdKey, ctrlKey, isMac } from '../environment'; +import { + cmdKey, ctrlKey, isLinux, isMac, +} from '../environment'; import { announcementsStore } from '../features/announcements'; import { announcementActions } from '../features/announcements/actions'; import { todosStore } from '../features/todos'; @@ -1113,6 +1115,7 @@ export default class FranzMenu { const { user, services, settings } = this.stores; if (!user.isLoggedIn) return []; const menu = []; + const cmdAltShortcutsVisibile = !isLinux; menu.push({ label: intl.formatMessage(menuItems.addNewService), @@ -1122,14 +1125,26 @@ export default class FranzMenu { }, }, { type: 'separator', + }, { + label: intl.formatMessage(menuItems.activateNextService), + accelerator: `${cmdKey}+tab`, + click: () => this.actions.service.setActiveNext(), + visible: !cmdAltShortcutsVisibile, }, { label: intl.formatMessage(menuItems.activateNextService), accelerator: `${cmdKey}+alt+right`, click: () => this.actions.service.setActiveNext(), + visible: cmdAltShortcutsVisibile, + }, { + label: intl.formatMessage(menuItems.activatePreviousService), + accelerator: `${cmdKey}+shift+tab`, + click: () => this.actions.service.setActivePrev(), + visible: !cmdAltShortcutsVisibile, }, { label: intl.formatMessage(menuItems.activatePreviousService), accelerator: `${cmdKey}+alt+left`, click: () => this.actions.service.setActivePrev(), + visible: cmdAltShortcutsVisibile, }, { label: intl.formatMessage( settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp, -- cgit v1.2.3-70-g09d2