diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-05-12 20:06:11 +0200 |
---|---|---|
committer | Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com> | 2021-05-13 07:54:54 +0530 |
commit | 36b0e921db92e7dfd7762c93696cf546f96d62fe (patch) | |
tree | 6ef630c5d339e36bb6ff82ed603ba2621691bb7b /src/lib/Menu.js | |
parent | Fix some appearance issues (#1398) (diff) | |
download | ferdium-app-36b0e921db92e7dfd7762c93696cf546f96d62fe.tar.gz ferdium-app-36b0e921db92e7dfd7762c93696cf546f96d62fe.tar.zst ferdium-app-36b0e921db92e7dfd7762c93696cf546f96d62fe.zip |
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.
Diffstat (limited to 'src/lib/Menu.js')
-rw-r--r-- | src/lib/Menu.js | 17 |
1 files changed, 16 insertions, 1 deletions
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 @@ | |||
1 | import { clipboard, remote, shell } from 'electron'; | 1 | import { clipboard, remote, shell } from 'electron'; |
2 | import { autorun, observable } from 'mobx'; | 2 | import { autorun, observable } from 'mobx'; |
3 | import { defineMessages } from 'react-intl'; | 3 | import { defineMessages } from 'react-intl'; |
4 | import { cmdKey, ctrlKey, isMac } from '../environment'; | 4 | import { |
5 | cmdKey, ctrlKey, isLinux, isMac, | ||
6 | } from '../environment'; | ||
5 | import { announcementsStore } from '../features/announcements'; | 7 | import { announcementsStore } from '../features/announcements'; |
6 | import { announcementActions } from '../features/announcements/actions'; | 8 | import { announcementActions } from '../features/announcements/actions'; |
7 | import { todosStore } from '../features/todos'; | 9 | import { todosStore } from '../features/todos'; |
@@ -1113,6 +1115,7 @@ export default class FranzMenu { | |||
1113 | const { user, services, settings } = this.stores; | 1115 | const { user, services, settings } = this.stores; |
1114 | if (!user.isLoggedIn) return []; | 1116 | if (!user.isLoggedIn) return []; |
1115 | const menu = []; | 1117 | const menu = []; |
1118 | const cmdAltShortcutsVisibile = !isLinux; | ||
1116 | 1119 | ||
1117 | menu.push({ | 1120 | menu.push({ |
1118 | label: intl.formatMessage(menuItems.addNewService), | 1121 | label: intl.formatMessage(menuItems.addNewService), |
@@ -1124,12 +1127,24 @@ export default class FranzMenu { | |||
1124 | type: 'separator', | 1127 | type: 'separator', |
1125 | }, { | 1128 | }, { |
1126 | label: intl.formatMessage(menuItems.activateNextService), | 1129 | label: intl.formatMessage(menuItems.activateNextService), |
1130 | accelerator: `${cmdKey}+tab`, | ||
1131 | click: () => this.actions.service.setActiveNext(), | ||
1132 | visible: !cmdAltShortcutsVisibile, | ||
1133 | }, { | ||
1134 | label: intl.formatMessage(menuItems.activateNextService), | ||
1127 | accelerator: `${cmdKey}+alt+right`, | 1135 | accelerator: `${cmdKey}+alt+right`, |
1128 | click: () => this.actions.service.setActiveNext(), | 1136 | click: () => this.actions.service.setActiveNext(), |
1137 | visible: cmdAltShortcutsVisibile, | ||
1138 | }, { | ||
1139 | label: intl.formatMessage(menuItems.activatePreviousService), | ||
1140 | accelerator: `${cmdKey}+shift+tab`, | ||
1141 | click: () => this.actions.service.setActivePrev(), | ||
1142 | visible: !cmdAltShortcutsVisibile, | ||
1129 | }, { | 1143 | }, { |
1130 | label: intl.formatMessage(menuItems.activatePreviousService), | 1144 | label: intl.formatMessage(menuItems.activatePreviousService), |
1131 | accelerator: `${cmdKey}+alt+left`, | 1145 | accelerator: `${cmdKey}+alt+left`, |
1132 | click: () => this.actions.service.setActivePrev(), | 1146 | click: () => this.actions.service.setActivePrev(), |
1147 | visible: cmdAltShortcutsVisibile, | ||
1133 | }, { | 1148 | }, { |
1134 | label: intl.formatMessage( | 1149 | label: intl.formatMessage( |
1135 | settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp, | 1150 | settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp, |