-
-
Notifications
You must be signed in to change notification settings - Fork 650
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
Screen curtain should not automatically toggle off when switching configuration profiles #10476
Comments
This is an interesting point. Cc @feerrenrut While I think there might be potential for having screen curtain enabled only in certain profiles/applications, I think what you're raising here is actually broader than just screen curtain. The active providers are saved in a list. This means that, if you have screen curtain enabled in one profile and then disable it in another, then enabling the nvda highlighter in the default profile, the highlighter will also be off in that other profile. I see several solutions:
Additionally, we might want to make the provider announce its enabled/disabled state when the state is toggled by a config profile switch. |
@LeonarddeR I think that having the disabled state announced would mostly address the privacy concerns here, and I agree that per-profile settings are appropriate for most vision providers. Not sure if there are any other cases like this where being global is more desirable. |
Wondering if an intermediate solution could be implemented in time for the release of 2019.3 to address the potential privacy concerns? E.g, an announcement when the screen curtain gets automatically toggled off. |
After thinking about this a little more, I really want to keep the possibility to switch on the Screen Curtain on for some profiles and of for others. |
It sounds like there is a lot of design work that will take time. I suggest as an intermediate solution just announcing when the curtain gets automatically switched off? This addresses the immediate privacy concerns, without committing to a design for how vision providers interact with profiles. |
An interim solution has been merged (to beep when screen curtain enables / disables). I think this could be solved by looking at what caused the screen curtain became enabled. If screen curtain is enabled via gestures, it should override (but not modify) the profile. Though note, the opposite is not true, if screen curtain is disabled by a gesture, a new profile trigger should be able to enable screen curtain. If we accept that behavior, we also must consider whether state change by gestures should be saved to the config at all. Perhaps there should be different behavior between temporary and permanent screen curtain gestures? |
I'm removing the 2019.3 milestone and leaving this issue open. I think the immediate concern is resolved, but there is more to discuss. |
A solution would be to implement two shortcut for the screen curtain like
These shortcuts would solve most concerns and would most probably fulfil every expectation from users. |
I think if we follow that logic we will need to duplicate every shortcut where the problem occurs. I would say that screen curtain together with the rest of the vision settings should be toggle off when switching profile only iff the user has actively saved that setting with the value of false for that profile. Until the user has that ability, I would suggest to make the vision settings global. |
Hello, I am new to using profiles and have recently discovered the issue of the screen curtain disabling on its own. I would like to mention two points here. First, if you are going to have the screen curtain status be per-profile, then NVDA should remember what the last status of the current active profile was, when you switch back to it. If for example I hide Notepad because I am working with a file that contains private information, switch to another visible app, and then switch back to Notepad, then NVDA should remember that I had enabled the screen curtain for this session of Notepad and re-enable it. Just as it would remember when switching back and forth between an app you have enabled sleep mode for. Instead NVDA doesn't remember this and I have to manually switch the screen curtain back on every time Notepad loses then regains focus. I'd assume that this is because I have "Save configuration when exiting NVDA" set to off, but NVDA should keep track of this in memory for the current session regardless, so I don't have to keep turning the screen curtain back on myself. My second point is that despite the above, I would like to agree with those who are suggesting that there be an option for the screen curtain to be profile-independent / global / only manually deactivated. I am not sure why anyone would need this setting to be deactivated based on what has system focus? If you are trying to prevent private information in the current app from being displayed onscreen, then surely you would want the screen to remain black for as long as that window is visible onscreen? Switching to a new window does not guarantee that the original window has been fully covered. The only circumstances in which I perhaps wouldn't mind so much if the screen curtain disables on its own, would be if either the hidden app is closed, fully minimises, or the newly focused window is fullscreen or otherwise covers it completely. But that is a lot more complicated than just being about what profile is currently active. Much simpler to just let me have the screen hidden until I manually decide otherwise. By all means allow people to set some sort of "always on" or "always off" option for a profile if they want this. But please also offer the ability to have no profile-specific overrides. |
I think the best and most pragmatic solution here is to make screen curtain profile independent and that‘s it.Von meinem iPhone gesendetAm 03.03.2024 um 22:52 schrieb TechHorseG ***@***.***>:
Hello, I am new to using profiles and have recently discovered the issue of the screen curtain disabling on its own.
I would like to mention two points here. First, if you are going to have the screen curtain status be per-profile, then NVDA should remember what the last status of the current active profile was, when you switch back to it.
If for example I hide Notepad because I am working with a file that contains private information, switch to another visible app, and then switch back to Notepad, then NVDA should remember that I had enabled the screen curtain for this session of Notepad and re-enable it. Just as it would remember when switching back and forth between an app you have enabled sleep mode for.
Instead NVDA doesn't remember this and I have to manually switch the screen curtain back on every time Notepad loses then regains focus.
I'd assume that this is because I have "Save configuration when exiting NVDA" set to off, but NVDA should keep track of this in memory for the current session regardless, so I don't have to keep turning the screen curtain back on myself.
My second point is that despite the above, I would like to agree with those who are suggesting that there be an option for the screen curtain to be profile-independent / global / only manually deactivated.
I am not sure why anyone would need this setting to be deactivated based on what has system focus?
If you are trying to prevent private information in the current app from being displayed onscreen, then surely you would want the screen to remain black for as long as that window is visible onscreen?
Switching to a new window does not guarantee that the original window has been fully covered.
The only circumstances in which I perhaps wouldn't mind so much if the screen curtain disables on its own, would be if either the hidden app is closed, fully minimises, or the newly focused window is fullscreen or otherwise covers it completely.
But that is a lot more complicated than just being about what profile is currently active. Much simpler to just let me have the screen hidden until I manually decide otherwise.
By all means allow people to set some sort of "always on" or "always off" option for a profile if they want this. But please also offer the ability to have no profile-specific overrides.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: ***@***.***>
|
I have already expressed this in other issues. But I confirm it here. My opinion is that screen curtain should be global, at least due to privacy issues when the foreground window does not fully covers the whole screen. Keeping the screen curtain linked to profiles gives a false sense of security. The current issue and other one related to screen curtain and privacy are stalled for years now, what is not a good image regarding security and privacy. Cc @seanbudd and @gerald-hartig. Also, I am even in favor in a simpler way to use the screen curtain, i.e.:
I am sorry for the people who have worked on screen curtain and have implemented it as a visual provider at the time, but that was not a good design choice IMO. |
I was unaware of this issue and bug. Personally, I would support removing the
curtain from profile awareness for the reasons given by @TechHorseG.
|
I still stand for my point in #10476 (comment).
Both these options are somehow covered in #10156 |
I would really love to see #10156 fixed. Though, depending on how the UX is defined in #10156's implementation, I am not sure that it would completely address the security and privacy concern with screen curtain. I also fear that if we expect #10156 to be fixed as a base for solving this issue, we shall still wait for another five years to address the screen curtain security concern. @LeonarddeR, I understand that you have a use case for screen curtain usage with profile. Could you describe it/them here to clarify? |
I often share my screen to colleagues or other people, so my default setup is screen curtain off. However when i open WhatsApp or another application that may contain private info, I want the screen to be black, regardless of the state of the default configuration. So that's why I have a blackness profile assigned to these applications. |
@LeonarddeR, I understand that you like to have certain apps always hidden, but the current system does not cater for this. Your WhatsApp becomes visible as soon as any other window or UI element takes focus. In my case even pressing win+shift+v to listen to a system notification will cause the entire screen to become visible. It seems to me that the current system does not cater for either those who want manual-only activation / deactivation, nor those who want a specific app to always be hidden from the screen. I think that the only way to have a per-app setting would be if NVDA tracked the window states of triggering Apps. As in, once WhatsApp has triggered the screen curtain, it remains on until either WhatsApp has closed, or has fully minimised. And only then will NVDA stop and think about what the newly-switched to profile wants for the screen? Still, if some people do like the current system then as others have suggested, everyone could be catered for by the inclusion of an extra option somewhere, even if only in the advanced settings, to set whether the screen curtain status is global, or handled by profiles. |
@LeonarddeR, as explained by @TechHorseG, you cannot guarantee that your background Whatsapp window is not visible from people with whom you share your screen.
But you cannot expect any user to have the same level of awareness regarding screen curtain, even users able to use profiles. Thus I'd really recommend that:
|
@seanbudd since you have triaged this issue, could you also indicate which design you would accept to be implemented?
I am in favor of the first proposal because of its much simpler and understandable UX, but would like to hear from NV Access and others before something is implemented. @LeonarddeR, you have not answered to #10476 (comment) and #10476 (comment). It would be nice to hear your opinion on these comments to understand if you agree with our reasoning or if we have missed something. |
I'm sorry. @TechHorseG wrote:
This is actually a very valid point I didn't think of before. Making this a global setting makes much more sense to me now. I would personally try something like this:
|
Actually, AggregatedSection receives the path to the section as one of its constructor parameters, so it should be quite trivial to initialize a normal section in that case instead. |
Thanks for your answers and proposals @LeonarddeR. Before proceeding maybe it would be interesting to discuss #16272. As explained by me various times, there is no sense to put the screen curtain in the Vision settings: it's not at all a feature allowing sighted or visually impaired people to see better things, but that's a privacy feature. I acknowledge that the base only setting implementation would be nice (not only for this issue) and would already be required for some values. |
Although I think you're right, it seems to me that removing the screen curtain from the vision framework would have quite a big impact. I don't know if I would personally be that concerned about that.
Is that right? A config profile step should be able to migrate this just fine. Or are paths in the configuration now also part of the API?
That depends on whether add-ons modify config.ConfigManager.BASE_ONLY_SECTIONS. I'm afraid they might do that. |
I like some of the ultimate changes being proposed here, but from a security
prospective, having the curtain be profile dependent is an untenable state to
stay in IMO.
So I vote we should leave it in vision and just fix it as much as necessary to
avoid being profile dependent. Even if that fix only lasts until 2025.1, when
we change it again, at least the profile confusion can be out of the picture for
users now.
|
Making screen curtain profile independent, yet keeping its settings in the vision panel is pretty inconsistent. Until now all settings which are saved in the global configuration are either in the general settings where it is clear they are not tied to a profile, or target developers i.e. use scratchpad. I also don't think we need to refactor / migrate config here - cannot we just expand our config handling so that there is ability to retrieve particular settings, not only sections, from the default profile? |
See also #14121 |
Would people be open to Privacy Settings being added to the settings area of NVDA? I think it would be a good place to put the Screen Curtain and any new features that come up that could relate to privacy. |
Steps to reproduce:
Actual behavior:
The screen curtain is automatically disabled when switching to an application which uses a profile where screen curtain has not yet been enabled. Users also receive no alerts about this surprising and potentially dangerous behaviour. The only way to know is to visually see the screen.
Expected behavior:
The screen curtain should not automatically disable itself when switching profiles. I think this is a setting which makes much more sense to be global to avoid unwanted surprises. I'm also not sure what the use case is for having it automatically turn on only in certain applications, which the current implementation enables.
System configuration
NVDA installed/portable/running from source:
Installed
NVDA version:
alpha-19136,0124e647
Windows version:
1905
Name and version of other software in use when reproducing the issue:
N/a
Other information about your system:
N/a
Other questions
Does the issue still occur after restarting your PC?
Yes
Have you tried any other versions of NVDA? If so, please report their behaviors.
N/a
The text was updated successfully, but these errors were encountered: