What's new in tab v0.4.0

I just released tab v0.4.0 the next major version of tab-rs, a modern terminal multiplexer.

This release contains breaking changes between the tab command client and the daemon. If you've been running tab v0.3.X, tab will launch a new daemon process.

Enhancements

XDG Data Specification

Tab now honors the XDG Directory spec. The tab runtime directory is now:

  • Linux: $XDG_DATA_HOME/tab or $HOME/.local/share/tab
  • MacOS: $HOME/Library/Application Support/tab

After you've updated to v0.4.0, you can run tab --install all to move completion scripts, and rm -r ~/.tab to clean up the old directory.

tab -w foo bar baz

tab -w now supports variadic arguments! Close those tabs!

Tab will also tell you whether a tab was closed, or whether it was not running

$ tab -w foo bar baz
Closing tab: foo
Closing tab: bar
Tab not running: baz

Workspace Tabs

Tab supports configurable workspaces and repositories, defined in tab.yml configuration files.

Each workspace now has a tab, which defaults to the workspace directory name. You can also override the name with the tab property:

tab: workspace
workspace:
  - repo: my-repo/

You can use this to quickly reset your working directory:

my-repo/ $ tab workspace/
$

Tab workspaces can now reference other workspaces with relative or absolute paths. This allows quick navigation between two adjacent workspaces.

~/my-workspace/tab.yml
workspace:
  - workspace: ../other-workspace

And in the shell

workspace/ $ tab other-workspace/
other-workspace/ $

Nested Workspaces

Tab now supports nested workspaces! This can be used to write a ~/tab.yml with links to all your workspaces.

Configurable Shell & Environment Variables

Tab now supports configurable shell and environment variables, in both workspace & repository configurations.

In workspace configurations, the shell and environment variables apply to the workspace tab and any inline tabs. The config can be overriden for inline tabs.

tab: workspace

shell: bash
env:
  VAR: value

workspace:
  - tab: workspace-tab
    shell: fish

The repository tab and subtabs can be configured similarly:

repo: my-project

shell: bash
env:
  VAR: value

tabs:
  - tab: run
     env: VAR: other-value
     shell: zsh