Drag Out
Drag Out sends files from VS Code's normal Explorer to a compact,
always-on-top native Drag Explorer. Every row in that window is a real
operating-system drag source, so it can be dragged directly into browsers,
terminals, file managers, chats, upload controls, and other desktop apps.
There is no secondary VS Code explorer and no fixed sidebar drag box.
Basic workflow
- Select one or more files or folders in VS Code's normal Explorer.
- Press Ctrl+Alt+D, click the export arrow
beside an Explorer row, or right-click and choose
Drag Out: Add to Drag Explorer.
- Drag a file directly from the always-on-top Drag Explorer to the destination.
New commands add to the existing list rather than replacing it. Duplicate paths
are ignored. Drag Explorer stays open after a drop by default and keeps the
position where you moved it for the rest of the VS Code session.
Use the × beside a row to remove that item, the toolbar eraser to clear the
list, or the highlighted Drag all items row to drag every staged resource
together. Press Esc or close the window to hide it; adding another
file shows it again.
Mouse and context-menu actions
- Hover over a file or folder in the original Explorer and click its export
arrow.
- Right-click a selection and choose Drag Out: Add to Drag Explorer.
- Holding Alt exposes the alternate
Add to Drag Explorer (Quick) action. It performs the same native action
and exists as a separately configurable command.
- Explorer multi-selection is supported by the context menu and keyboard
shortcut.
Keyboard shortcuts
| Action |
Linux/Windows |
macOS |
| Add the Explorer selection |
Ctrl+Alt+D |
Cmd+Alt+D |
| Alternate quick-add command |
Ctrl+Shift+Alt+D |
Cmd+Shift+Alt+D |
| Copy the selection as files |
Ctrl+Alt+C |
Cmd+Alt+C |
To change any binding:
- Run Preferences: Open Keyboard Shortcuts.
- Search for Drag Out.
- Select the pencil beside a command and enter a new shortcut.
The main command IDs for keybindings.json are:
dragOut.stageSelection
dragOut.showContextShelf
dragOut.clearShelf
dragOut.hideShelf
dragOut.copyAsFile
Both add commands accept the current Explorer selection, so user-defined
bindings work in the same way as the defaults.
Drag Explorer settings
dragOut.dragExplorer.position: initial cursor, center, or topRight
placement. After the first opening, Drag Explorer keeps the position where
you move it for the current session.
dragOut.dragExplorer.closeAfterDrop: hide after a successful drop. The
default is false.
dragOut.dragExplorer.timeoutSeconds: hide after a period of inactivity.
The default 0 disables the timeout.
dragOut.linux.forceX11: run the helper through XWayland when native Wayland
positioning is unsuitable.
Drag Explorer requests always-on-top behavior from the desktop compositor.
Some Wayland compositors can still make the final decision about stacking and
initial placement.
Remote and virtual files
Remote, container, and virtual-workspace resources are materialized into a
private temporary directory before being added:
dragOut.remote.maxTotalSizeMB: ask before downloading a larger selection.
dragOut.temp.retentionMinutes: how long temporary copies are retained.
Unsaved local editors are detected before export, with an option to save first.
Copy as File
Run Drag Out: Copy as File or press Ctrl+Alt+C for applications that
support pasting file objects instead of dragging them.
Development
npm install
npm run compile
npm test
npm run build:native
The bundled helper currently builds on Linux with GTK 3 and supports X11 and
Wayland. Building it requires the GTK 3 development packages. wl-clipboard
is required for Copy as File on Wayland; xclip is required on X11.
For local development, dragOut.helper.path can point at a debug helper binary.
Privacy and safety
Drag Out opens no network ports and does not modify source files. Native drags
are copy-only. Paths are sent to the helper over its private standard input,
and remote temporary copies use private filesystem permissions.