Preface¶
The Web GUI of DSH usually runs inside a browser tab. During local development, while checking the running status and editing code in an editor, switching between tabs is often necessary. dsh-pip addresses this scenario: it provides a floating button that moves the current Web UI from a tab to a permanent “Picture-in-Picture” window, and can move it back with one click. Below is an introduction to its positioning, installation methods, configuration options, and usage boundaries.
What is it¶
dsh-pip is a DSH plugin maintained by extension-hunter with an MIT license. It is installed on the web profile and depends on the webServer service provided by this profile via @deepseek-ai/dsh-host-webserver. When “Independent Window” is clicked, the plugin moves the application’s root node #root, along with styles and themes, into a new window, rather than generating a screenshot.
Core Features¶
- One-command installation: The installation command is
dsh plugin --profile web add dsh-pip; the package includes a bundle patch and automatically mounts the plugin line. - Zero configuration: After restarting
dsh web, a floating “Independent Window” button appears in the Web UI. - Detach entire application: When the button is clicked, the currently active application
#rootmoves to an always-on-top window along with its styles and themes. - Default window size: The window opens by default according to the current tab’s viewport size; you can also fix
widthandheightin the configuration. - Return to tab: Closing the window, or clicking “Return to Tab” within the window, brings the application back to the original browser tab.
- Browser limitations: Requires Chromium 116+, such as Chrome or Edge; the button does not appear in Safari and Firefox.
Installation and Enabling¶
First, install the plugin:
dsh plugin --profile web add dsh-pip
Then restart dsh web. After opening the Web UI, the “Independent Window” button will appear.
If you need to install a local, unpublished path, you can use:
dsh plugin --profile web add file:/path/to/dsh-pip
Update and remove respectively use:
dsh plugin --profile web update dsh-pip
dsh plugin --profile web remove dsh-pip
Typical Usage¶
- Open the restarted
dsh webpage. - Click the floating “Independent Window” button.
- The application enters an always-on-top window, which can be placed beside the editor for viewing.
- Close the window, or click “Return to Tab” in the window.
- The application returns to the original browser tab.
Configuration¶
By default, enabled is true. When width and height are not configured, the window size follows the current tab’s viewport.
If you need to override this, modify the profile configuration file:
~/.dsh/profiles/web/cordis.patch.yml
- id: pip
config:
enabled: true
width: 1280
height: 800
width and height are hints; Chromium will restrict the window within the available screen range, so when the browser is maximized, the detached window might be slightly smaller.
To disable the plugin:
- id: pip
disabled: true
Use Cases and Notes¶
Suitable for scenarios where dsh web is already running and you only wish to view the Web UI outside of browser tabs. It does not change the existing service lifecycle, it only adds a detached window button.
Notes before use:
- The plugin runs with the current
dshprocess permissions. You should check the source code and license before installing. - Only supports Chromium 116+; the button will not appear in Safari and Firefox.
- Interface elements rendered by Portal, such as menus, modals, toasts, and hover cards, will remain in the original tab; they may be invisible during the separation period.
- Global
window/documentlisteners in the original tab will still trigger in the original tab. - Depends on the
webServerservice provided by thewebprofile, specifically provided by@deepseek-ai/dsh-host-webserver.
Conclusion¶
The value of dsh-pip lies in its minimal changes: it retains the existing dsh web environment and configuration, only adding a separable, returnable Web UI window. Project source code can be found on GitHub: https://github.com/extension-hunter/dsh-pip