positrondeck0.2Download ↓

OPEN SOURCE · FOR POSITRON

Your Positron
shortcuts, on
Stream Deck.

Put the actions you use most on a button: run the next line of R, open a data view or switch your layout. You can also combine steps into a workflow of your own.

R + Python + QuartoDesktop + WorkbenchMIT licensed
TRY AN XL LAYOUTXL / 32 KEYS
POSITRON DECK

Choose a page in the top row.
Click any action to see what it does and which shortcut it uses.

192actions to drag onto buttons
8custom workflow slots
2extensions to install
0direct network links to the IDE

01 / GET STARTED

Set up Positron
and Stream Deck

Install the Stream Deck plugin on your Windows PC and the IDE extension in Positron. The plugin sends a keyboard shortcut; the extension runs the matching command. This also works with projects in Workbench.

Marketplace submissions are in review. The IDE extension is under review on Open VSX. Stream Deck plugin 0.2.1 is pending Elgato review and will publish automatically after approval. Until the listings are public, use the GitHub downloads below. Plugin 0.2.1 works with IDE extension 0.2.0.
1

Inside Positron

Download positron-deck-0.2.0.vsix from the release. Open Extensions → ⋯ → Install from VSIX. In Workbench, install inside your remote Positron session.

To check the installation, open the Command Palette and run Positron Deck: Open Terminal.

2

On your Windows PC

Download org.positron-deck.shortcuts.streamDeckPlugin and double-click it. In Stream Deck 7.1+, open the Positron Deck category and drag actions onto buttons.

Before pressing a button, click into the Positron window or Workbench tab you want to control.

Updating from 0.1? Your existing buttons keep working: version 0.2 keeps all 32 original action IDs and default hotkeys. Update both packages to use the new actions.

How a button becomes an action

  1. PressStream Deck button
  2. SendLocal Windows hotkey
  3. ResolvePositron keybinding
  4. RunNative IDE command

The plugin sends keystrokes to the IDE without opening a socket or API connection, exchanging credentials or setting up a network bridge. The Elgato SDK still connects locally to the Stream Deck application. Because Positron sends nothing back to the plugin, buttons cannot display your Git status, runtime state or test results.

Get both installation packages ↗

02 / ACTION LIBRARY

Find the action
you need

Search for an action or something you want to do. Open a card to see its shortcut, the command it runs and what it needs to work. You can also search by command or filter by category.

Full command reference as Markdown ↗

03 / WORKFLOWS

Run several steps
with one button

A workflow runs a sequence of steps inside Positron. It stops if you cancel a save or a step fails, and it can wait for a task to finish successfully. Start with one of the built-in workflows, or assign your own to any of the eight custom slots.

01 / ITERATE

Save → Run

Save the script you are editing, then run it in the matching interpreter.

positronDeck.saveAndRun
02 / REVIEW

Save → Review

Save your files and open Source Control and Problems, ready to review changes before you stage or commit them.

positronDeck.reviewWorkspace
03 / EXPLORE

Layout → Variables → Editor

Switch to the stacked layout, open Variables and return to the editor. From there, you can run a cell, inspect its dataframe, or browse and export your plots.

positronDeck.analysisWorkspace
04 / WRITE

Save → Layout → Preview

Save the current file, switch to the stacked layout and start the Quarto preview. The preview process is managed by the native preview command.

positronDeck.quartoWorkspace

You can also use Format and Save or Save and Test, pick a workflow from the chooser, or name and configure eight custom slots. These examples are suggestions based on the workflows in the Positron documentation.

Wait for tests before deploying

Create VS Code tasks named Tests and Check that finish when their work is done. Then add this example to your workspace settings. Deployment runs only after both tasks finish successfully.

{
  "positronDeck.workflows": [{
    "name": "Validate and deploy",
    "steps": [
      { "save": "all" },
      { "task": "Tests" },
      { "task": "Check" },
      { "command": "positronDeck.deploy" }
    ]
  }],
  "positronDeck.workflowSlots": ["Validate and deploy"]
}

Drag Custom Workflow 1 onto a button to use this example. Before a custom workflow runs, you will see its steps and be asked to confirm. Deployment still uses its provider confirmation. Each step can save files, run a named task, or call a Deck command. You can also call a native command with an optional args array. You can have up to 32 steps. A workflow cannot call another workflow or wait on a background task.

A command can return while tests, code or a preview are still running. If a later step depends on success, use a task step that waits for the result. Calling a test command alone does not tell the workflow whether those tests passed.

Read the full workflow guide for R package checks, Python tests, reproductions and app-development loops.

04 / YOUR WORKSPACE

Choose a layout
for the task

Stacked

Keep your script, console and live objects visible while you work.

Side by side

Arrange the editor, console and data views side by side.

Notebook

Give notebook cells and their outputs more room.

Assistant

Work with chat beside your code and console. You need to configure an AI provider first.

You can also toggle panels, split the editor into columns or a two-by-two grid, enter Zen mode, zoom, or move focus between views. Reset View Locations asks before changing your arrangement. Full screen, zoom and pop-out windows may behave differently in a browser.

Organize your XL buttons

In the suggested XL layout, the top eight buttons switch pages. Each page has room for 24 actions underneath. Try Daily, Code, Data, Git, Layout, R/Quarto, Debug and Workflows in the preview above. Use these as a starting point for your own setup; the download contains page mappings, not an importable Stream Deck profile.

Download the page mappings (JSON) ↓

05 / CONFIGURATION

Adjust the settings
for your project

Open Settings and search for positronDeck. Choose the providers and commands that suit your project. The extension has no built-in server, repository, branch, Connect instance or credentials.

SettingDefaultPurpose

Hotkey mapping

The original 32 commands use F13 through F24 combinations. The added actions use a two-stroke chord: Ctrl+Alt+Shift+F1 through F5, followed by a letter or digit. The plugin sends both strokes, but stops if you switch windows between them. It checks for a window change; it cannot tell whether the active window is Positron.

For each button, choose the default shortcut, an alternative mapping or your own shortcut or chord. To use the supplied alternative keybindings, merge them into your existing user keybindings array, keeping your other shortcuts. Test the result on your keyboard layout and browser, since either can affect which keys reach Positron.

To use Deck shortcuts while the terminal is focused, run Enable Hotkeys in Terminal. It asks before adding Deck commands to your user-level terminal.integrated.commandsToSkipShell. Changing settings does not send any keystrokes.

06 / COMPATIBILITY

Check your setup

EnvironmentSupported behavior
Windows 10+ x64 / ARM64Stream Deck companion with local SendInput. Stream Deck application 7.1+.
Positron DesktopPrimary target. Native features depend on version and enabled views.
Positron Pro / WorkbenchExtension in the remote session, companion on the local Windows machine. Browser focus and hotkey delivery require local validation.
VS Code 1.96+Generic editor, layout, navigation, Git and task commands. R/Python and Quarto require their providers. Positron-only commands explain when unavailable.
macOS / LinuxThe IDE extension can be used through the Command Palette or manual keybindings. The Stream Deck companion is Windows-only.
Restricted workspacesNavigation remains available. Code, workflows and project mutations require trust.

R package actions require devtools, styler or lintr as appropriate; packages are never installed automatically. Apps support R Shiny, Python Shiny, Streamlit and FastAPI. Deployment supports Posit Publisher, Git push, VS Code tasks or a custom shell command.

Automated tests check command delegation, safeguards and workflows against a simulated IDE. Separate tests cover Windows input encoding and the Elgato protocol. Testing with real Windows hardware and a full Positron or Workbench session is still needed.

07 / TROUBLESHOOTING

If a button does not work

A button does nothing

First run the same Positron Deck command from the IDE Command Palette. If that works, check the foreground window and browser tab, matching package versions, duplicate keybindings and the button's selected mode. Use Keyboard Shortcuts Troubleshooting in the IDE to inspect received keys.

A shortcut types a letter into the editor

The first stroke of a chord was not received. Check the IDE keybinding, then try the button's alternative or custom mode. Use the same mapping on both sides. Keep physical Ctrl, Alt, Shift and Windows keys released when pressing the Deck.

Data Connections, Packages or a notebook action is unavailable

Run Check Action Availability to see which commands your Positron installation has. You may need to enable a view or extension. Notebook actions need the Positron notebook editor; data actions need an active Data Explorer. Language actions need a supported source file.

The terminal receives the shortcut

Run Enable Hotkeys in Terminal and approve its user setting update, or manually add selected Deck command IDs to terminal.integrated.commandsToSkipShell.

The button shows an alert

The companion could not send the complete input sequence. Physical modifiers may be held, the focused window may have changed, or Windows may block input across elevation levels. Run Stream Deck and Positron at the same normal privilege level. Plugin feedback does not report IDE success.

A workflow stops or keeps waiting

Check the task output in the IDE. Each task name must match exactly one task, and the task must finish with exit code 0 before the workflow continues. Background tasks are not supported. If a task hangs, stop it through the IDE task controls. The remaining steps will be skipped.

Where are errors and diagnostics?

Run Positron Deck: Show Log to see which actions started, finished or failed. Check Action Availability opens a local text report of registered native commands. The Deck log leaves out code, secrets and raw provider errors.

08 / BUILD & CONTRIBUTE

Build from source
or contribute a change

Both extensions are written in TypeScript and share one MIT-licensed repository. The IDE extension uses the VS Code API and an optional Positron adapter; the Stream Deck plugin uses the Elgato SDK.

git clone https://github.com/JanWein/positron-deck.git
cd positron-deck
npm --prefix extension ci
npm --prefix streamdeck ci
npm run generate
npm run lint
npm test
npm run package

Use Node 24+. Edit catalog/actions.json for metadata and delegated actions. The generator updates both manifests, bindings, icons and documentation. Project-aware logic stays in provider modules; native commands are checked before execution.

GitHub Actions tests and builds both packages from the repository source, then publishes the installers. GitHub Pages hosts this documentation.

09 / RESEARCH NOTES

Sources behind
the command mappings

The command mappings were checked against the official documentation and source code on 17 September 2026. Some newer commands may be missing from your installed release. The extension checks that a command is available before calling it.

Read the source audit and workflow rationale ↗