microsoft / microsoft/terminal

Add a setting to control selection foreground color

Open
#3,580 9 comments 11 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area-Rendering Area-TerminalControl Help Wanted Issue-Task Product-Terminal
Dominant language
C++
Stars
105k
Forks
9.6k
Avg merge
3d 17h
Merged PRs (30d)
29

Description

This is highly related to #3326/#3471 and #3561.

We've added a setting to control what color we use to highlight text with when it's selected in #3471.

However, that doesn't necessarily fix our contrast ratio problems w.r.t. selection, since the configured color might still not have enough difference from the foreground of the highlighted text.

Conhost had an inverting selection, which didn't have this problem. However, we think that might be Hard to implement in the dx renderer. Adding that to the Terminal is being tracked in #3561.

A selection foreground color
A: might be more feasible to implement
B: is a good configurable setting to add regardless, to enable further personalization of the terminal.

Implementation might still be tricky though, since the Renderer is only ever told about the selection rects after it has drawn the text. Re-drawing the text seems like a bad idea. I'm not sure we'll be able to re-order things in the Renderer safely without also impacting the GDI and other rendering heads. This is hard, but easier than inverting selection.

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

Start with the Renderer and its handling of selection rectangles, considering the related issues #3326, #3471, and #3561. Determine whether selection foreground color can be applied without re-drawing text or affecting GDI and other rendering heads; done means the setting works while preserving existing rendering behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.