Skip to content

Repository files navigation

TaskBari

Open VSX

VS Code extension that loads workspace tasks into the status bar — with category grouping support.

Inspired by earlier task-button status bar extensions, TaskBari goes further by letting you collapse related tasks into group buttons. Clicking a group opens a QuickPick menu listing all tasks in that category, saving valuable status bar space.

Features

  • Individual task buttons on the status bar like other extensions which inspired this one
  • Group buttons that collapse multiple related tasks into a single status bar button
  • QuickPick submenus that appear when you click a group button
  • Opt-in "Run all" option in group QuickPick menus (enabled per group with runAll: true)
  • Free button ordering — groups and single-click tasks share one priority scale, so you can arrange them in any sequence
  • Configurable group labels, icons, colors, and sort priority
  • Full backward compatibility with existing tasks.json configurations

Install

TaskBari is published to the Open VSX Registry.

Editors that use Open VSX — such as Cursor, Windsurf, VSCodium, and Gitpod — can install it directly from their built-in extension panel by searching for TaskBari.

For editors that do not use Open VSX, download taskbari.vsix from the latest release workflow run and install it manually:

code --install-extension taskbari.vsix

Or use Extensions: Install from VSIX… in the command palette.

Quick Start

Add tasks to your .vscode/tasks.json as usual. To group tasks, add a group property inside options.statusbar:

{
"version": "2.0.0",
"tasks": [
{
"label": "Build Debug",
"type": "shell",
"command": "make debug",
"options": {
"statusbar": {
"group": "Build"
}
}
},
{
"label": "Build Release",
"type": "shell",
"command": "make release",
"options": {
"statusbar": {
"group": "Build"
}
}
},
{
"label": "Lint",
"type": "shell",
"command": "npm run lint"
}
]
}

This creates two status bar items instead of three: a "Build (2)" group button and a "Lint" individual button. Clicking "Build (2)" opens a QuickPick with "Build Debug" and "Build Release".

Tip — let your coding agents do the setup: Paste the following link into your agent prompt and ask it to create or optimize your tasks.json for TaskBari:

https://raw.githubusercontent.com/schbz/taskbari/refs/heads/master/agent-instruct.txt

The file contains configuration references, group rules, recommended category taxonomies for different project types, and a full working example.

Group Configuration

For more control, use an object instead of a string:

{
"label": "Build Debug",
"type": "shell",
"command": "make debug",
"options": {
"statusbar": {
"group": {
"id": "Build",
"label": "Build",
"icon": "tools",
"color": "#22C1D6",
"priority": 10,
"runAll": true
}
}
}
}
PropertyTypeDescription
idstringRequired. Group identifier — tasks with the same id are grouped together.
labelstringDisplay label for the group button. Defaults to the id.
iconstringCodicon ID (e.g. tools, beaker, cloud-upload). Rendered as $(icon) prefix.
colorstringForeground color — hex value or theme color name.
prioritynumberSort order for groups. Higher values appear first. Default: 0.
runAllbooleanShow a "Run all" option at the top of the group's QuickPick menu. Default: false.

Only the first task in a group that specifies these properties "wins" — subsequent tasks in the same group only need "group": "Build".

Per-Task Options

All standard status bar options are supported:

"options": {
"statusbar": {
"label": "$(beaker) Test",
"color": "#22C1D6",
"detail": "Run unit tests",
"hide": false,
"filePattern": "test_.*",
"priority": 7
}
}
PropertyTypeDescription
prioritynumberSort order for this button. Higher values appear further left. Shares one scale with group priority — see Button Order.

Button Order

Group buttons and single-click task buttons are sorted on a single shared scale, so you can arrange them in whatever sequence you like. Give a task a priority inside options.statusbar and it slots in among the groups:

{
"label": "Dev Server",
"type": "shell",
"command": "npm run dev",
"options": {
"statusbar": {
"label": "$(play) Dev",
"priority": 7
}
}
}

With groups at Build: 8 and Deploy: 3, that produces:

[Build (2)] [$(play) Dev] [Deploy (3)] ...

Sorting rules, in order:

  1. Priority, descending — higher numbers sit further left.
  2. On a tie, group buttons come before task buttons.
  3. Two groups with equal priority sort alphabetically by id.
  4. Two tasks with equal priority keep their tasks.json order.

Tasks without a priority

A task that does not set priority keeps the pre-1.2 position: after every group and every prioritized task, in tasks.json order. This is exactly the old layout rule, so existing tasks.json files render identically after upgrading — nothing to migrate. Add priorities only to the buttons you actually want to move.

Mixing is fine. Given groups Deploy: 6, tasks Dev: 10 and Lint: 4, and unprioritized Clean and Format:

[$(play) Dev] [Deploy (3)] [Lint] [Clean] [Format]

Inside groups

On a task that also sets group, priority orders that entry within the group's QuickPick menu instead (the task has no button of its own). Entries without a priority keep tasks.json order, after the prioritized ones. The tasks.statusbar.groups.sortAlphabetically setting still overrides this.

Extension Settings

SettingTypeDefaultDescription
tasks.statusbar.default.hidebooleanfalseHide all tasks by default
tasks.statusbar.default.colorstring""Default foreground color
tasks.statusbar.limitinteger | nullnullMax visible status bar buttons (overflow goes to "..." picker)
tasks.statusbar.select.labelstring"..."Label for the overflow picker button
tasks.statusbar.select.colorstring""Color for the overflow picker button
tasks.statusbar.groups.showTaskCountbooleantrueShow (N) count on group buttons
tasks.statusbar.groups.sortAlphabeticallybooleanfalseSort tasks alphabetically in group QuickPick

AI Agent Setup (Recommended)

This repo includes an agent-instruct.txt file that teaches AI coding agents (Cursor, GitHub Copilot, Aider, etc.) how to set up and optimize your tasks.json for TaskBari.

How to use it:

  1. Copy agent-instruct.txt into your project, or reference it directly https://raw.githubusercontent.com/schbz/taskbari/refs/heads/master/agent-instruct.txt.
  2. In your AI agent's chat, mention the file to give it context:
  3. Example prompts:
    • "@agent-instruct.txt Please set up a tasks.json for this Node.js project with build, test, and deploy groups."
    • "@agent-instruct.txt Migrate my existing tasks.json to use TaskBari groups."
    • "@agent-instruct.txt Add a new test coverage task to the Test group."

The file contains configuration references, group rules, recommended category taxonomies for different project types, migration steps, and a full working example.

Development

npm install
npm run compile
# Press F5 in VS Code to launch Extension Development Host

Releasing

Publishing runs in GitHub Actions when you push a version tag matching v* (for example v1.2.0 after setting "version": "1.2.0" in package.json). The workflow packages taskbari.vsix, uploads it as a build artifact, and publishes it to Open VSX.

You can also run the Publish Extension workflow manually from the Actions tab (workflow_dispatch). Use that only when the package.json version is not already published.

Configure this repository secret:

SecretPurpose
OVSX_PATPersonal access token from open-vsx.org user settings for publishing to Open VSX (publishing guide)

Publishing to the VS Code Marketplace is currently disabled — its Azure DevOps PATs expire yearly and the rotation was not worth the upkeep. To restore it, add back a Publish to VS Code Marketplace step running npx vsce publish --packagePath taskbari.vsix --skip-duplicate with a VSCE_PAT secret.

Credits

Inspired by the ecosystem of VS Code task-button extensions that came before it.

About

VScode extension for adding tasks as buttons to the taskbar, including grouped menus and submenus

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages