u/cfilipov

Introducing ErgoZen, an extension that makes keyboard shortcuts and advanced functionality more ergonomic to use

Introducing ErgoZen, an extension that makes keyboard shortcuts and advanced functionality more ergonomic to use

https://preview.redd.it/h7w0x40mp52h1.png?width=1960&format=png&auto=webp&s=abd23f5b97606e7d288270e84017cba28891d21d

https://preview.redd.it/khnnl34hp52h1.png?width=1954&format=png&auto=webp&s=a960f8c75e06e69ed4a30d73523a50964901c8bd

https://preview.redd.it/74mmlmk5n52h1.png?width=870&format=png&auto=webp&s=f34ca5f1b1b48856c19ac742f1fd383937141899

A while back I shared my zen tabs panel extension. It started out as a small extension to fix a few things that were broken in other firefox extensions on Zen but as it accumulated more features I renamed it to ErgoZen.

The basic idea is that it's a menu driven keyboard shortcut UX for Zen. You only need to remember one keyboard shortcut: ⌘. on macOS, or ⌃. on Windows (I havent tested on anything but macOS). This shortcut pops up a menu that you can navigate via keyboard or mouse to access lots of useful functionality from zen, including stuff zen doesn't have (like browsing the tree structure of your open tabs). It uses short single character mnemonic keys as much as possible like 'r' to see recent tabs, 'm' to move a tab etc...

Where this gets interesting is that these keyboard shortcuts you use to navigate the menu UI can also be used in quick chord sequences to bypass the UI. For example, ⌘. opens the main menu, the r opens the recent tabs sub menu then 2 opens the second most recent tab. If you do ⌘.,r,2 in quick succession then you switch to the 2nd most recent tab without popping up the menu UI at all. If you only remember part of the sequence just pause and the menu will pop up showing you the options, so ⌘.,r will show you the recent tabs menu.

This means that you naturally learn and memorize your most used keyboard shortcuts as you use them, and shortcuts you dont remember are easy to find. While all the functionality of this extension of available from keyboard shortcuts it's also fully mouse driven too, so you can use chords to quickly do things purely from the keyboard with no menu, open the menu and interact with it with the keyboard, or open the menu and navigate purely with the mouse.

There's a lot of stuff in here. I'm a tab hoarder so many of these features are there to make tab hoarding more manageable. It's pretty performant too, I regularly have browser sessions with 3000+ tabs open and this extension handles it fine while remaining feast and responsive.

Some notable features (see README for full list):

  • Tree tab navigation: it doesnt render tabs as a tree, but instead surfaces parent-child menu items that let you navigate the tree structure. I actually find this more usable than full visual tree style tab layout. The tree structure is persisted so even after restarting it still remembers the parents.
  • Duplicate tab handling:
    • Renders a badge on duplicate tabs in the tab bar.
    • Duplicate tabs menu item. Duplicate tabs are also shown in the tab info menu giving you an option to close all others.
    • Hovering over a link to a tab that is already open will display the url in the status panel area in orange.
    • There's also an optional feature that pops up a menu when you click a link to a tab that's already open offering to continue or go to the duplicate tab or cancel.
  • Anywhere in the menu UI where we show a list of tabs you can hover over a tab and it will scroll/highlight that tab in the vertical tab bar, cancelling scrolls you back where you were.
  • Move/re-order tabs
  • Hosting other extension popups in ErgoZen: instead of popping up their UI in the top left corner near the extension icon, the extension's UI is presented in the center like ErgoZen's menu. I find this more ergonomic and it also fixes some annoyances I had: bitwarden for example opens in a new window to prompt for touch ID on first use, when Zen is in fullscreen this forces macOS to switch to a desktop to present that window as it cant be shown over the full screen zen window. By intercepting this and hosting the zen popup in the ErgoZen view it can be displayed over the main Zen window in full screen mode. Many other extensions also have this problem in full screen. This feature can be disabled in settings.

https://github.com/cfilipov/ergozen

NOTE: This was only tested on mac os, I have no idea if this works on other OSes. No reason it shouldn't, but I haven't tried.

NOTE: Unfortunately this extension can't be published on the official addons store because it relies on the experiment api. This means you need to manually install it and set a few flags in about:config. To make this easier there's a single-line command that runs an install script that automates the install (the script is mac only). See the README.md for more info.

reddit.com
u/cfilipov — 2 days ago