philc / philc/vimium

Feature Request: Auto-Detection of Terminal-Based Web Apps (e.g., xterm.js) for Default Vimium Disablement

Open
#4,631 5 comments 0 reactions 0 assignees View on GitHub

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:

Request:
Implement a mechanism for Vimium to detect terminal-based web apps dynamically by:

  1. Detecting the presence of xterm.js: Check for global objects, DOM elements, or other indicators unique to xterm.js.
  2. Auto-disable Vimium by default: When such terminal environments are detected, prevent keybinding conflicts without relying on static URL rules.
  3. 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 Terminal from 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:

Thank you for considering this enhancement!

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.