Bundle
dsh-terminal-keybar
On touch devices, supplies the keys a phone's soft keyboard lacks (Escape, Tab, Enter, Ctrl-C and the arrow keys) as a translucent on-screen column beside the active terminal.
- Source
- miiy
- License
- MIT
- Updated
- Updated 8 days ago
Readme
# dsh-terminal-keybar **English** | [中文](README.zh.md) A **touch key bar for the DSH Web terminal**. A phone's soft keyboard has no Escape, Tab, Ctrl or arrow keys, which makes the terminal unusable. This plugin floats a translucent column of those keys on the right edge of the screen and writes them straight into the terminal that is on screen. - Vertical, translucent, so it does not cover the bottom of the terminal - Appears only on **touch devices** and only while a **terminal tab is active**; desktop is untouched - Centres itself in the **visible** area when the soft keyboard opens, so iOS does not hide it - A browser-only plugin: it copies no terminal code and does not modify DSH itself  ## Keys | Button | Sends | Typical use | |---|---|---| | `Esc` | `\x1b` | leave vim insert mode, close less/pagers | | `Tab` | `\t` | path and command completion | | `↵` | `\r` | run the command | | `^C` | `\x03` | interrupt the running command | | `↑` `↓` | `ESC [ A` / `ESC [ B` | history, menu navigation, vim movement | | `←` `→` | `ESC [ D` / `ESC [ C` | move within the line | Presses use `pointerdown` + `preventDefault()`, so the terminal keeps focus and the soft keyboard stays open: you can type and tap arrows in the same session. ## Install ### 1. Through the Host's `installBundle` (installs **and** enables) Ask the agent in a conversation: > install the plugin `github:miiy/dsh-terminal-keybar` or paste the same spec into the install field on the **Settings → Plugins** page. Both call the Host's `installBundle`, which installs the package, adds it to `dsh.profile.bundles`, and hot-applies it — one step. ### 2. From the CLI (`dsh plugin`, installs only) ```sh dsh plugin --profile <profile> add github:miiy/dsh-terminal-keybar ``` `dsh plugin` forwards its arguments to pnpm inside the profile directory, so this step installs the package but does **not** compose it. The row then shows up on **Settings → Plugins** as installed and switched **off**; turn it on to add it to `dsh.profile.bundles`. If the switch does not take effect live, restart `dsh web`. A plain-JavaScript bundle has no build script, so a git install needs no `allowBuilds` approval. Accepted spec forms are the usual pnpm/DSH ones: `github:user/repo`, `git+https://…`, an absolute local path, or an npm package name. ### 3. From a local checkout (development) ```sh plugin_manager install_bundle /absolute/path/to/dsh-terminal-keybar ``` ## Usage 1. Open DSH Web on your phone. 2. Open a terminal tab in the right sidebar. 3. The key column appears on the right edge; tap it. It also works with the keyboard closed. ## Known limitations - **DECCKM (application cursor keys)**: the plugin writes bytes through the public `webTerminals` service and has no access to the xterm instance, so the arrows always send the CSI form (`ESC [ A`). bash/readline, vim and less accept it; programs that strictly require SS3 (`ESC O A`) may not. - **Floating panels**: visibility is decided from the active pane's active tab, so a terminal floated into a floating panel does not show the bar. - The column covers roughly the rightmost 46px of the terminal; it is translucent, and `styles.bar` in `client.js` exposes `opacity` / `right` if you want it smaller. - Web only (`platform: web`); the Desktop native window is unaffected. ## Maintenance See [MAINTENANCE.md](MAINTENANCE.md) for the upstream API table (what breaks when DSH changes what) and the post-upgrade diff procedure. The `DEBUG` switch at the top of `client.js` paints an on-screen diagnosis badge when the bar does not appear. ```sh node --check client.js && node --check index.js # syntax self-check ``` ## License MIT
Install
dsh plugin --profile web add github:miiy/dsh-terminal-keybar
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-terminal-keybar from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.