aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-05-12 20:06:11 +0200
committerLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-05-13 07:54:54 +0530
commit36b0e921db92e7dfd7762c93696cf546f96d62fe (patch)
tree6ef630c5d339e36bb6ff82ed603ba2621691bb7b /src/lib
parentFix some appearance issues (#1398) (diff)
downloadferdium-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')
-rw-r--r--src/lib/Menu.js17
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 @@
1import { clipboard, remote, shell } from 'electron'; 1import { clipboard, remote, shell } from 'electron';
2import { autorun, observable } from 'mobx'; 2import { autorun, observable } from 'mobx';
3import { defineMessages } from 'react-intl'; 3import { defineMessages } from 'react-intl';
4import { cmdKey, ctrlKey, isMac } from '../environment'; 4import {
5 cmdKey, ctrlKey, isLinux, isMac,
6} from '../environment';
5import { announcementsStore } from '../features/announcements'; 7import { announcementsStore } from '../features/announcements';
6import { announcementActions } from '../features/announcements/actions'; 8import { announcementActions } from '../features/announcements/actions';
7import { todosStore } from '../features/todos'; 9import { 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,