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
      }
    }
  }
}
Property Type Description
id string Required. Group identifier — tasks with the same id are grouped together.
label string Display label for the group button. Defaults to the id.
icon string Codicon ID (e.g. tools, beaker, cloud-upload). Rendered as $(icon) prefix.
color string Foreground color — hex value or theme color name.
priority number Sort order for groups. Higher values appear first. Default: 0.
runAll boolean Show 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
  }
}
Property Type Description
priority number Sort 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

Setting Type Default Description
tasks.statusbar.default.hide boolean false Hide all tasks by default
tasks.statusbar.default.color string "" Default foreground color
tasks.statusbar.limit integer | null null Max visible status bar buttons (overflow goes to "..." picker)
tasks.statusbar.select.label string "..." Label for the overflow picker button
tasks.statusbar.select.color string "" Color for the overflow picker button
tasks.statusbar.groups.showTaskCount boolean true Show (N) count on group buttons
tasks.statusbar.groups.sortAlphabetically boolean false Sort 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:

Secret Purpose
OVSX_PAT Personal 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