Feature Request: Auto-Detection of Terminal-Based Web Apps (e.g., xterm.js) for Default Vimium Disablement
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 27k
- Forks
- 2.6k
- PR merge metrics
- No merged PRs in 30d
Description
Feature Request: Auto-Detection of Terminal-Based Web Apps (e.g., xterm.js) for Default Vimium Disablement
Problem:
Vimium currently relies on URL matching to determine where it should be enabled or disabled. This approach is insufficient for dynamic environments where:
- Users access terminal interfaces via tools like [ttyd](https://github.com/tsl0922/ttyd), which run on different IPs/ports.
- These tools utilize [xterm.js](https://xtermjs.org/) under the hood.
- Other apps like [webvm.io](https://webvm.io/) also embed xterm.js or similar terminal emulators.
Request:
Implement a mechanism for Vimium to detect terminal-based web apps dynamically by:
- Detecting the presence of xterm.js: Check for global objects, DOM elements, or other indicators unique to xterm.js.
- Auto-disable Vimium by default: When such terminal environments are detected, prevent keybinding conflicts without relying on static URL rules.
- Optional Setting: Provide a toggle in Vimium settings to enable/disable this behavior for users who may prefer manual control.
Why It Matters:
- IPs and ports change frequently in dynamic setups, making URL-based management impractical.
- Terminal apps often require precise keyboard input, and Vimium keybindings can interfere with terminal workflows.
- A detection-based approach improves ergonomics and user experience without additional configuration overhead.
Potential Indicators for Detection:
- DOM elements with classes like
.xterm,.xterm-viewport,.xterm-screen. - Global JavaScript objects or functions such as
Terminalfrom xterm.js. - Mutation observers for dynamic terminal instantiation.
Impact:
This change would significantly improve usability for users working with web-based terminals, especially in development, IoT (e.g., Raspberry Pi), and remote administration contexts.
Related Projects Using xterm.js:
- [ttyd](https://github.com/tsl0922/ttyd)
- [webvm.io](https://webvm.io/)
- Numerous custom self-hosted terminal UIs
Thank you for considering this enhancement!
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files or tests. Start by locating Vimium’s URL-based enable/disable logic and settings entry points, then determine how terminal indicators and dynamically created elements should be handled. Done means terminal-based web apps are disabled by default, with a user setting to control the behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend, web-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100