-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Scenario] Progress Bar Follow-ups #6700
Comments
This comment has been minimized.
This comment has been minimized.
This commit adds a [progress ring] to the tab header when we receive an OSC 9 sequence. Adds an event handler in `Tab.cpp` for the event we raise when we get a request to set the taskbar state/progress. This event handler updates the tab header with the active control's state/progress. When we want to show the progress ring, we hide the tab icon and place the progress ring over it. [progress ring]: https://docs.microsoft.com/en-us/uwp/api/Microsoft.UI.Xaml.Controls.ProgressRing?view=winui-2.4 References #6700
Oh... reading #8055 and experimenting, I had not guessed / understood that the |
It is specified in Taskbar API here how progress bars are combined for multiple windows collapsed into single button. For consistency it would be good idea to duplicate the behavior. |
Thanks for that. We should do that. |
FYI, this WinUI bug still exists: microsoft/microsoft-ui-xaml#3787 |
On at least two of my systems |
Opened #9374 |
A little off topic, but wouldn't it be trivial to add this also to Conhost? Just simply forward the command to ITaskbarList3? Thinking about it... now that this is open, I might even try myself. |
#9374 closed with solution by @DHowett: one must enable animations under Settings / Ease of Access / Display: Without this, only |
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Adds a new bellStyle called `window`. When `window` is set and a BEL is emitted, we flash the pane that emitted it. Additionally, changes bellStyle in the SUI to a list of checkboxes instead of radio buttons, to match bellStyle being a flag-enum. Deprecates 'BellStyle::Visual' in the schema, but still allows it to be set in the json (it maps to `Window | Taskbar`) <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References #6700 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [ ] Closes #xxx * [x] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [ ] Tests added/passed * [ ] Documentation updated. If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx * [ ] Schema updated. * [x] I work here <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed GIF in Teams
## Summary of the Pull Request ![background-progress-000](https://user-images.githubusercontent.com/18356694/126653006-3ad2fdae-67ae-4cdb-aa46-25d09217e365.gif) This PR causes the Terminal to combine taskbar states at the tab and window level, according to the [MSDN docs for `SetProgressState`](https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-itaskbarlist3-setprogressstate#how-the-taskbar-button-chooses-the-progress-indicator-for-a-group). This allows the Terminal's taskbar icon to continue showing progress information, even if you're in a pane/tab that _doesn't_ have progress state. This is helpful for cases where the user may be running a build in one tab, and working on something else in another. ## References * [`SetProgressState`](https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-itaskbarlist3-setprogressstate#how-the-taskbar-button-chooses-the-progress-indicator-for-a-group) * Progress mega: #6700 ## PR Checklist * [x] Closes #10090 * [x] I work here * [ ] Tests added/passed * [n/a] Requires documentation to be updated ## Detailed Description of the Pull Request / Additional comments This also fixes a related bug where transitioning from the "error" or "warning" state directly to the "indeterminate" state would cause the taskbar icon to get stuck in a bad state. ## Validation Steps Performed <details> <summary><code>progress.cmd</code></summary> ```cmd @echo off setlocal enabledelayedexpansion set _type=3 if (%1) == () ( set _type=3 ) else ( set _type=%1 ) if (%_type%) == (0) ( <NUL set /p =�]9;4� echo Cleared progress ) if (%_type%) == (1) ( <NUL set /p =�]9;4;1;25� echo Started progress (normal, 25^) ) if (%_type%) == (2) ( <NUL set /p =�]9;4;2;50� echo Started progress (error, 50^) ) if (%_type%) == (3) ( @Rem start indeterminate progress in the taskbar @Rem this `<NUL set /p =` magic will output the text _without a newline_ <NUL set /p =�]9;4;3� echo Started progress (indeterminate, {omitted}) ) if (%_type%) == (4) ( <NUL set /p =�]9;4;4;75� echo Started progress (warning, 75^) ) ``` </details>
Here's the state of affairs on this issue:
This has been discussed in #9374 up to the point where I created https://aka.ms/AAehwy4, and from there no progress has been made. |
Hi, is there, anywhere, a clear documentation about all of these behaviors? If not, would it be possible to add a brief section in the Console Virtual Terminal Sequences page (if that's the correct location)? I'm asking because i have a couple of quick questions but i can't find the answer anywhere, the information is pretty fragmented (it seems to me). I'm going to place them here in case anyone has an answer. First question Second question
What it is meant with "paused state"? is it referring to conemu's "warning" state? or is it some additional/custom WindowsTerminal's feature? thank you everyone |
No. The default percent value for an error state is the whatever current percent is (that's why you can change from st=1 to st=2 without setting the percent), but the default percent value for the progress state is 0. In other words, if you set st=1 with no percent, you're getting 0%, which is the same as disabling the progress.
Yes. At the time this feature was being developed, ConEmu had only documented states 0, 1, and 2. I think state 3 may already have been implemented, but not yet documented. State 4 was then proposed by Windows Terminal, but it was discussed with the Maximus5 first, who agreed to add matching functionality to ConEmu. The ConEmu documentation now includes all 5 states (see ConEmu specific OSC). |
Is this a Windows default? Is there a system API to read the current progress percentage? Because if there is, it would nice if WindowsTerminal's behaviour was more consistent, maintaining the current percentage whenever If you deem this to be too misleading, because it wouldn't match the OS' behaviour, i'd just like to know if a WT escape code/API/something to get the current percentage exists, so that i can use it in my utilities to achieve the aforementioned behaviour. Something like the |
No. That's the way it was defined by ConEmu. We're just following their specification.
No. The simplest option would be for you to keep track of the last percentage value yourself, since I'm assuming you're the one that set it. But if that's not an option for you, then I don't have any other ideas. |
As noted in #514 closes #514 xref microsoft/terminal#6700
[Original issue: #3004] [Initial PR: #8055] [Display the progress in the tab: #8133]
This is a list of tasks, bugs, etc, related to the "taskbar progress indicator", as first implemented in #8055. While not all of them are immediately relevant for the taskbar indicator, they're all related to the showing of progress state in the Terminal.
ESC ] 9 ; 4 ; st ; pr ST
0
: remove progress.1
: set progress value topr
(number, 0-100).2
: set the taskbar to the "Error" state3
: set the taskbar to the "Indeterminate" state4
: set the taskbar to the "Warning" stateFollow-up work
"Auto-detect output, display in tab/taskbar" (#7955) and #1620 are very closely related
Bell notifications
These cover some of the same areas of the above, so I'm including them because I feel they deserve a mention here:
bellStyle: flash
-> flash the window. (maybevisual
)bellStyle: taskbar
-> flash the taskbar (maybetaskbar
)bellStyle: visual
-> both? (maybevisual|taskbar
)Related?
The text was updated successfully, but these errors were encountered: