Repository: vscode
Issue: Change the "Run and Debug" View's "Play" icon to a "Connect" icon when an Attach Mode Configuration is Selected
Labels: feature-request,debug

<!-- ⚠️⚠️ Do Not Delete This! feature_request_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- Please search existing issues to avoid creating duplicates. -->

<!-- Describe the feature you'd like. -->
# Feature Request

Please add a distinct "Connect" button icon for starting `"request": "attach"`-type debug sessions in the debug view.

# Details

"**Launch**" mode debug sessions run ("play") some script or program when the start. By default, ending such a debug session will also "stop" said script or program. This is very clean and mirrored by the UI:

- **Launch Mode Debug Session Start (Play):**
    <img width="320" alt="Play Launch Mode Session" src="https://user-images.githubusercontent.com/9142587/172076430-a794a903-34a1-44de-b49f-3d2a5f133bd9.png">
- **Launch Mode Debug Session Stop:**
    <img width="211" alt="Stop Launch Mode Session" src="https://user-images.githubusercontent.com/9142587/172076459-f53d0317-ab23-4750-84c9-302ee5ab8262.png">

However, an "**Attach**" mode debug session "connects" to some engine/program/script when it is started. By default, ending such a debug session will "disconnect" from the engine/program/script and allow it to continue. This is very clean but **not** mirrored by the UI:

- **Attach Mode Debug Session Start (Connect):**
    <img width="315" alt="Play Attach Mode Session" src="https://user-images.githubusercontent.com/9142587/172076587-f3a02d55-8671-4b62-b2be-411519edf765.png">
- **Attach Mode Debug Session Disconnect:**
    <img width="215" alt="Disconnect Attach Mode Session" src="https://user-images.githubusercontent.com/9142587/172076615-4e313ee4-6c27-4179-a1b4-5930788b7a59.png">

In the "**Attach**" mode case, there is no paired "Connect" icon to signal to the user that starting this debug session will **connect** to a host (engine/program/script) and **not** run something.

The asymmetry can be summed up with this single screenshot:
<img width="324" alt="Attach Session Start/Stop" src="https://user-images.githubusercontent.com/9142587/172076732-78272b97-f4c8-45e4-8dda-db18b03dd622.png">

"Play" and "Stop" work well together for a "**Launch**" mode debug session. A "Connect" icon would better communicate what starting an "Attach" mode debugger actually does.

The [current icon list](https://code.visualstudio.com/api/references/icons-in-labels) does not have a "connect" icon, but I imagine that it would be pretty straightforward to create one based on the current "disconnect" icon design language.

## Important Note

Please note that I am requesting this **on behalf of our debugger extension's users**. See below for more.

# Background

I am working on a major update to the [ExtendScript Debugger](https://marketplace.visualstudio.com/items?itemName=Adobe.extendscript-debug) extension. ExtendScript is a custom JavaScript-like language developed by Adobe and implemented in several "host applications" (e.g. Photoshop, Illustrator, InDesign, Premiere Pro, etc.). Scripts are run in engines within the host applications in a variety of ways, including:

- Automatically at startup
- Specified directly via application menus
- Via callbacks from custom UIs (e.g. button clicks)
- Via a properly configured debugger

The new version will support starting debug sessions using both [`attach` and `launch` configurations](https://code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations) to support the myriad operating scenarios. It will _**also**_ support running a script directly within a target host application+engine from VS Code. This latter feature is implemented via commands and with a status bar button for convenience. This status bar button is accompanied by the [`$(play)` icon](https://code.visualstudio.com/api/references/icons-in-labels).

Many of our pre-release users have expressed confusion about the "**Attach**" mode debug configurations. When they click the "Play" button to _connect_ to the host they have an expectation that the focused script will actually be run. We consistently have to explain that this is not how "Attach" mode configurations work and suggest that they either try the "Launch" mode configuration or keep their current configuration and use the script evaluation commands/button (which, again, has a "play" icon).

We did not connect the consistent user confusion about the configuration modes until we received the following feedback from an especially insightful user (**_emphasis_** mine):

> I also figured out what makes the new debugger hard to 'grok' for me... I now think that the root cause is the UI. The thing is that the 'play' symbol in VSCode... does not mean 'Run' or 'Play' - it means 'Connect'. **_If that symbol were instead something else - like a power plug or so, that would help me remember that [it means] 'Connect'._** And then the 'Eval in...' [button] at the bottom - that is where the little triangle should appear.
> 
> That way I am connecting to a particular engine in a particular app, and when I click that 'Eval in...' [button] I am running a script.
> 
> Now that I know how to adjust my thinking, things work a lot better for me, but **_I reckon that for new users, it would be helpful to change the play symbol into a 'connect' symbol_** and add a 'play' symbol to the 'Eval in....' bar.

When this user provided this feedback it was as though a light had been turned on - suddenly the constant confusion of users _made sense_. They see the "Play" button and they think "this will run something". That is a reasonable assumption. In the case of "Attach" mode configurations, however, that assumption does not hold.