diff --git a/locales/en-US/browser/browser/preferences/zen-preferences.ftl b/locales/en-US/browser/browser/preferences/zen-preferences.ftl
index 2941a51573..02d692fbce 100644
--- a/locales/en-US/browser/browser/preferences/zen-preferences.ftl
+++ b/locales/en-US/browser/browser/preferences/zen-preferences.ftl
@@ -350,3 +350,7 @@ zen-devtools-toggle-storage-shortcut = Toggle Storage
zen-devtools-toggle-dom-shortcut = Toggle DOM
zen-devtools-toggle-accessibility-shortcut = Toggle Accessibility
zen-close-all-unpinned-tabs-shortcut = Close All Unpinned Tabs
+zen-tab-next-shortcut = Next Tab
+zen-tab-previous-shortcut = Previous Tab
+zen-move-tab-forward-shortcut = Move Tab Forward
+zen-move-tab-backward-shortcut = Move Tab Backward
diff --git a/src/browser/base/content/zen-commands.inc.xhtml b/src/browser/base/content/zen-commands.inc.xhtml
index 66cfe1c5bc..3a1211e53d 100644
--- a/src/browser/base/content/zen-commands.inc.xhtml
+++ b/src/browser/base/content/zen-commands.inc.xhtml
@@ -61,4 +61,9 @@
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/zen/common/zen-sets.js b/src/zen/common/zen-sets.js
index b7b6c00ad6..23600926c8 100644
--- a/src/zen/common/zen-sets.js
+++ b/src/zen/common/zen-sets.js
@@ -129,6 +129,18 @@ document.addEventListener(
gZenWorkspaces.unloadWorkspace();
break;
}
+ case 'cmd_zenTabNext':
+ gBrowser.tabContainer.advanceSelectedTab(1, true);
+ break;
+ case 'cmd_zenTabPrevious':
+ gBrowser.tabContainer.advanceSelectedTab(-1, true);
+ break;
+ case 'cmd_zenMoveTabForward':
+ gBrowser.moveTabForward();
+ break;
+ case 'cmd_zenMoveTabBackward':
+ gBrowser.moveTabBackward();
+ break;
default:
gZenGlanceManager.handleMainCommandSet(event);
if (event.target.id.startsWith('cmd_zenWorkspaceSwitch')) {
diff --git a/src/zen/kbs/ZenKeyboardShortcuts.mjs b/src/zen/kbs/ZenKeyboardShortcuts.mjs
index 777d1fbfe5..5526a84668 100644
--- a/src/zen/kbs/ZenKeyboardShortcuts.mjs
+++ b/src/zen/kbs/ZenKeyboardShortcuts.mjs
@@ -52,6 +52,10 @@ const defaultKeyboardGroups = {
'zen-close-all-unpinned-tabs-shortcut',
'zen-close-tab-shortcut',
'zen-close-shortcut',
+ 'zen-tab-next-shortcut',
+ 'zen-tab-previous-shortcut',
+ 'zen-move-tab-forward-shortcut',
+ 'zen-move-tab-backward-shortcut',
'id:key_selectTab1',
'id:key_selectTab2',
'id:key_selectTab3',
@@ -800,7 +804,7 @@ class nsZenKeyboardShortcutsLoader {
}
class nsZenKeyboardShortcutsVersioner {
- static LATEST_KBS_VERSION = 13;
+ static LATEST_KBS_VERSION = 14;
constructor() {}
@@ -1096,6 +1100,55 @@ class nsZenKeyboardShortcutsVersioner {
);
}
+ if (version < 14) {
+ // Migrate from version 13 to 14
+ // Add customizable tab navigation and move tab shortcuts
+ data.push(
+ new KeyShortcut(
+ 'zen-tab-next',
+ '',
+ 'VK_TAB',
+ 'windowAndTabManagement',
+ nsKeyShortcutModifiers.fromObject({ accel: true }),
+ 'cmd_zenTabNext',
+ 'zen-tab-next-shortcut'
+ )
+ );
+ data.push(
+ new KeyShortcut(
+ 'zen-tab-previous',
+ '',
+ 'VK_TAB',
+ 'windowAndTabManagement',
+ nsKeyShortcutModifiers.fromObject({ accel: true, shift: true }),
+ 'cmd_zenTabPrevious',
+ 'zen-tab-previous-shortcut'
+ )
+ );
+ data.push(
+ new KeyShortcut(
+ 'zen-move-tab-forward',
+ '',
+ '',
+ 'windowAndTabManagement',
+ nsKeyShortcutModifiers.fromObject({}),
+ 'cmd_zenMoveTabForward',
+ 'zen-move-tab-forward-shortcut'
+ )
+ );
+ data.push(
+ new KeyShortcut(
+ 'zen-move-tab-backward',
+ '',
+ '',
+ 'windowAndTabManagement',
+ nsKeyShortcutModifiers.fromObject({}),
+ 'cmd_zenMoveTabBackward',
+ 'zen-move-tab-backward-shortcut'
+ )
+ );
+ }
+
return data;
}
}