-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
fd37e1d
commit 963e624
Showing
1 changed file
with
91 additions
and
0 deletions.
There are no files selected for viewing
91 changes: 91 additions & 0 deletions
91
doc/specs/Configuration object for focused and unfocused states.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
--- | ||
author: <Pankaj> <Bhojwani> <pabhojwa@microsoft.com> | ||
created on: <2020-11-20> | ||
last updated: <2020-11-20> | ||
issue id: <github issue id> | ||
--- | ||
|
||
# Configuration object for focused/unfocused states | ||
|
||
## Abstract | ||
|
||
This spec outlines how we can support 'configuration objects' in our profiles, which | ||
will allow us to render differently depending on whether the control is focused or unfocused. | ||
|
||
## Inspiration | ||
|
||
Reference: [#3062](https://github.com/microsoft/terminal/issues/3062) | ||
|
||
Users want there to be a more visible indicator than the one we have currently for which | ||
pane is focused and which panes are unfocused. This change would grant us that feature. | ||
|
||
## Solution Design | ||
|
||
A new object in the `TerminalControl` namespace, called `UnfocusedRenderingParams`, | ||
that will contain parameters for determining how a control, in an unfocused state, should be rendered. | ||
This object will be available to both `TermControl` and `TerminalCore`. | ||
|
||
Our `TerminalSettingsModel` will parse out that object from the settings json file and pipe it over to | ||
`TermControl`/`TerminalCore` to use. This will be done through `IControlSettings` and `ICoreSettings`, which | ||
is the way we already pipe over information that these interfaces need to know regarding rendering (such as | ||
`CursorStyle` and `FontFace`). | ||
|
||
### Allowed parameters | ||
|
||
Not all parameters which can be defined in a `Profile` can be defined in this new object (for example, we | ||
do not want parameters which would cause a resize in this object.) Here are the list of parameters we | ||
will allow: | ||
|
||
- Anything regarding colors: `colorScheme`, `foreground`, `background`, `cursorColor` etc | ||
- `cursorShape` | ||
- `backgroundImage` | ||
|
||
## UI/UX Design | ||
|
||
Users will be able to add a new setting to their profiles that will look like this: | ||
|
||
``` | ||
"unfocusedState": | ||
{ | ||
"colorScheme": "Campbell", | ||
"cursorColor": "#888", | ||
"cursorShape": "emptyBox", | ||
"foreground": "#C0C0C0", | ||
"background": "#000000" | ||
} | ||
``` | ||
|
||
## Capabilities | ||
|
||
### Accessibility | ||
|
||
Does not affect accessibility. | ||
|
||
### Security | ||
|
||
Does not affect security. | ||
|
||
### Reliability | ||
|
||
This is another location in the settings where parsing/loading the settings may fail. However, this is the case | ||
for any new setting we add so I would say that this is a reasonable cost for this feature. | ||
|
||
### Compatibility | ||
|
||
Should not affect compatibility. | ||
|
||
### Performance, Power, and Efficiency | ||
|
||
## Potential Issues | ||
|
||
Inactive tabs will be 'rendered' in the background with the `UnfocusedRenderingParams` object, we need to make | ||
sure that switching to an inactive tab (and so causing the renderer to update with the 'normal' parameters) | ||
does not cause the window to flash/show a jarring indicator that the rendering values changed. | ||
|
||
## Future considerations | ||
|
||
[comment]: # What are some of the things that the fixes/features might unlock in the future? Does the implementation of this spec enable scenarios? | ||
|
||
## Resources | ||
|
||
|
963e624
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New misspellings found, please review:
To accept these changes, run the following commands
✏️ Contributor please read this
By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.
perl
command excluding the outer'
marks and dropping any'"
/"'
quotation mark pairs into a file and then runperl file.pl
from the root of the repository to run the code. Alternatively, you can manually insert the items...If the listed items are:
.github/actions/spell-check/dictionary/names.txt
..github/actions/spell-check/dictionary/
..github/actions/spell-check/expect/
..github/actions/spell-check/patterns/
.See the
README.md
in each directory for more information.🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The :check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉
At present, the action that triggered this message will not show its ❌ in this PR unless the branch is within this repository.
Thus, you should make sure that this comment has been addressed before encouraging the merge bot to merge this PR.