What's new in tab v0.5.0
I just released tab v0.5.0, the next version of the tab terminal multiplexer.
This release contains many new features, including a built-in fuzzy finder, and a new global workspace config file with keybinding support.
Built-in Fuzzy Finder
Tab is designed as a navigating terminal multiplexer. It tries to get you where you need to go, asking for just a few keystrokes.
Tab now has a built-in fuzzy finder simiar to fzf/skim/scout:
The fuzzy finder can be activated by invoking tab
with no arguments, or by pressing ctrl-T from within a session.
Global Workspace configuration
Tab now supports a global workspace configuration, which can be defined at ~/.config/tab.yml
or $XDG_CONFIG_HOME/tab.yml
.
The global config is useful for 'pinning' links to workspaces or repositories, as it is loaded by tab in any working directory. It can also be used to configure tabs that are always available.
workspace:
# these links are relative to your home directory
- workspace: open-source
- repo: repo
- tab: global-tab
doc: this tab is always available
Configurable Key Bindings
The default keybindings have changed. The ctrl-W sequence has been replaced with ctrl-T.
Tab can be configured with keybindings in the global workspace configuration:
workspace: []
key_bindings:
- action: SelectInteractive
keys: ctrl-T
- action: Disconnect
keys: ctrl-A W
Tab supports the actions 'Disconnect' and 'SelectInteractive'. As well as the keys ctrl-[A-Z]
, ESC
, and all visible ASCII characters. Key sequences can be bound by separating elements by spaces:
ctrl-A A
Tab detects these key sequences while forwarding your stdin to terminal applications. For multi-key sequences, keys before the final binding are transmitted to the terminal application. This allows the overloading of ctrl keys that vim/emacs use for other purposes.
tab --disconnect
/ tab --close
Tab now supports tab --disconnect / tab -z
, which disconnects clients.
It can be invoked for named tabs:
❯ tab --disconnect foo bar baz
Both tab --disconnect
and tab --close / tab -w
now support no arguments, in which case the currently selected tab is closed or disconnected. If not in a session, they exit with a failure, which means they can be combined with ||
in a shell alias which disconnects within a tab session and quits outside a session:
alias quit='tab --disconnect || exit'
tab --check, a linter for tab.yml configurations
Tab tries to be permissive when it encounters issues in your tab.yml
configurations, but it now provides a utility that scans the active workspace for errors and warnings.
❯ tab --check
4 errors were detected:
- Workspace path does not exist: /Users/austinjones/open-source/../not-exists
- Tab tab/foo/ has a working directory that does not exist: /Users/austinjones/open-source/tab-rs/not-exists/
- Repository path does not exist: /Users/austinjones/open-source/not-exists
- Tab any/ has duplicate definitions