A screen sharing client executing on a user system captures views displayed by the user system (e.g., entire desktops, particular application windows, etc.) and sends the views to one or more other systems for display thereat. Users at the other systems are then able see what the user system is displaying without having to be located at the user system. Many screen sharing clients are incorporated into telecommunication clients (e.g., a videoconferencing client), which provides screen sharing features to participants on telecommunication sessions. For example, a user may want to show a document to other users on a telecommunication session and initiates a screen sharing session to share their desktop view, which includes a window showing the document, accordingly. If the user chooses to switch to a different application from the application showing the document, the other users will also see that different application over the screen sharing session. Preferably, the user is cognizant of their screen being shared when switching to the different application. However, if the user has forgotten about their screen being shared, then the user may inadvertently share displayed information (e.g., an application window for the different application) that they do not actually want the other users to see.
The technology disclosed herein enables notifications to a user about screen sharing being active when switching between applications. In a particular embodiment, a method includes capturing a view displayed by a first user system to a user, where the view includes a first window of a first application, and sharing the view with a second user system. The second user system displays the view. The method further includes receiving user input directing the first user system to display, in the view, a second window of a second application. Before including the second window in the view, the method includes notifying the user that the view is being shared.
In some embodiments, after notifying the user, the method includes receiving confirmation from the user that the second window should be included in the view and, in response to receiving the confirmation, including the second window in the view. In those embodiments, before receiving the confirmation, the method may include an obscured version of the second window in the view.
In some embodiments, after notifying the user, the method includes receiving an instruction from the user to cancel the user input.
In some embodiments, before receiving the user input, the method includes receiving a selection of one or more applications for which the user should be notified. The selection includes the second application.
In some embodiments, the method includes receiving second user input from the user identifying one or more applications that trigger notification to the user when directed to be included in the view. The one or more applications include the second application. In those embodiments, the method may include requesting the second user input in response to initializing the sharing of the view. Also, in those embodiments, the method may include receiving third user input directing the first user system to display, in the view, a third window of a third application and, in response to determining that the third application is not included in the one or more applications, including the third window in the view.
In some embodiments, the user input comprises user input directing the first user system to share the view, or the user input initiates execution of the second application.
In another embodiment, an apparatus is provided having one or more computer readable storage media and a processing system operatively coupled with the one or more computer readable storage media. Program instructions stored on the one or more computer readable storage media, when read and executed by the processing system, direct the processing system to capture a view displayed by a first user system to a user, where the view includes a first window of a first application, and share the view with a second user system, wherein the second user system displays the view. The program instructions further direct the processing system to receive user input directing the first user system to display, in the view, a second window of a second application. Before including the second window in the view, the program instructions direct the processing system to notify the user that the view is being shared.
The view-sharing client described herein notifies a user when the user attempts to view an application that was not previously displayed while currently sharing the view presented by the user's system (e.g., the entire screen/desktop display or particular application windows thereon). Notifying the user may provide the user with an opportunity to stop the user system from switching to the application, to stop (or temporarily pause) the view sharing, to continue with the application switch, or perform some other relevant action. Even if the user has forgotten that their view is being shared, the view-sharing client will remind the user of the view sharing being enabled before the user potentially shares information over the view-sharing session that they do not want others to see. For example, the user may be sharing a document on their screen and decide to read their email. The view-sharing client notifies the user that their view is being shared when the user attempts to switch to an email application. If the user does not want other to see their emails, then the user may decide to not open the email application or end the view-sharing session.
In operation, view-sharing client 121 is an application executing on user system 101 to share the view presented on a display of user system 101 to user 141, who is operating user system 101. User system 101 also includes application 122 and application 123, which may present graphical user interface (GUI) elements (e.g., application windows) to user 141. The GUI elements, and/or other visuals, displayed by application 122 and application 123 may be captured by view-sharing client 121 and shared to other users systems when view sharing is enabled in view-sharing client 121.
View-sharing client 121 shares the view with user system 102 and user system 102 displays the view to user 142, who is operating user system 102 (202). In this example, the view is transmitted to user system 102 over communication network 103, although, the view may be transmitted to additional user systems in other examples. Though not shown, user system 102 may also execute a view-sharing client (e.g., another instance of view-sharing client 121 or a different client) to receive the view from user system 101 and present the view to user 142. In those examples, view-sharing client 121 may use proprietary protocols and view formats to exchange the view with user system 102. In some examples, the view may be transmitted in manners that do not require user system 102 to execute a complementary view-sharing client. For example, view-sharing client 121 may format the view as a video stream using a standardized video codec and any application capable of receiving/presenting that video stream (e.g., a web-browser) may be used. Regardless of how view-sharing client 121 provides the view to user system 102, the view continues to be captured by view-sharing client 121 and transmitted to user system 102 so that user system 102 can display the up-to-date view to user 142.
While the view is being shared, user system 101 receives user input directing user system 101 to display, in the view, a window of application 123 (203). The user input may be entered via a keyboard, mouse, touchscreen, microphone (e.g., voice command), video camera (e.g., physical gesture), or through some other type of user input interface. Application 123 may already be open (i.e., executing) on user system 101 prior to the user input or the user input may direct user system 101 to open application 123, which triggers application 123 to display a window. If application 123 is already executing, the window for application 123 may already exist while not being shown in the view (e.g., may be minimized, may be hidden, or mostly hidden, behind another window, may be hidden by the OS, or may not be included in the view for some other reason). In other cases, application 123 may already be executing without any windows open and the user input may direct application 123 to display a new window. The user input may likewise direct application 123 to display a new window in addition to any other windows that may already be open for the application. View-sharing client 121 may monitor a component of the OS of user system 101 to determine that the user input is directing user system 101 to display the window of application 123. For example, the OS may include a window manager that handles the display of application windows by user system 101. View-sharing client 121 may have access to the window manager such that view-sharing client 121 is notified by the window manager, or otherwise recognizes, that the window manager is about to bring a window of application 123 into the view. In another example, view-sharing client 121 may monitor a process manager of the OS to determine that application 123 is being opened or view-sharing client 121 may monitor a user input handler of the OS to identify the receipt of the user input.
Regardless of how the user input directs the window for application 123 to be displayed in the view, in response to the user input, view-sharing client 121 notifies the user that the view is being shared (204). The notification may include a visual alert (e.g., popup window notification), audible alert (e.g., tone(s) or voice playback), tactile alert (e.g., vibration), or some other manner in which user 141 would recognize that they are being notified that the view is being shared—including combinations thereof. In some cases, the window of application 123 may still be displayed, and included in the shared view, without interruption. In other cases, view-sharing client 121 may delay the display of the window of application 123 entirely or may otherwise prevent the window from being included in the shared view. The amount of time may be a predetermined amount of time that is preferably long enough in duration for user 141 to decide whether they want to manually prevent the window of application 123 from being included in the shared view (e.g., user 141 may manually instruct application 123 or the OS of user system 101 to not display the window or user 141 may pause/stop the sharing of the view). The amount of time may also be indefinite while view-sharing client 121 queries user 141 about whether they want to proceed with the window of application 123 being included in the shared view. The alert used by view-sharing client 121 to notify user 141 about the view sharing being active may also query user 141 about whether they want to proceed with including the window of application 123 in the view and may provide user 141 with the ability to answer that query (e.g., confirm that they want the inclusion to proceed or request that the inclusion be stopped).
View-sharing client 121 may prevent the window of application 123 from being included in the view for the amount of time by directing a window manager of the OS to not display the window of application 123, by directing the OS to not execute application 123, by obscuring the window (e.g., blurring the window, force minimizing the window, displaying the alert over the window, displaying a another window over the window, etc.) such that information displayed in the window cannot be viewed, by pausing or stopping the sharing of the view with user system 102, or by preventing the window of application 123 from being shared in the view to user system 102 in some other manner. View-sharing client 121 may prevent the window of application 123 from being included in the view by effecting the view before or after capture. For example, if the window of application 123 is blurred in the view, the blurred window may be displayed to user 141 by user system 101 and also captured by view-sharing client 121. Alternatively, view-sharing client 121 may capture the view with the window of application 123 being displayed and then blur the window prior to sharing the view with user system 102. In both of the above examples, user 142 is presented with a view having the window of application 123 blurred.
Advantageously, even if user 141 forgot that they were sharing their view with user 142, view-sharing client 121 reminds user 141 of the fact prior to user 141 allowing user 142 to see window content that user 141 potentially does not want them to see.
For the purposes of this example, the view captured by view-sharing client 121 and shared with user system 102 includes the entirety of desktop 300. Thus, everything shown on desktop 300 is captured, sent to user system 102, and displayed to user 142 (e.g., within a view sharing window or full screen). In other examples, view-sharing client 121 may capture less than all of desktop 300 for sharing. For instance, view-sharing client 121 may only capture and share window 301.
App-selection window 701 may be displayed at the instruction of user 141 (e.g., user 141 may explicitly navigate the GUI of view-sharing client 121 to display app-selection window 701) or app-selection window 701 may be displayed automatically by view-sharing client 121. For example, when initiating a view sharing session with user system 102, view-sharing client 121 may display app-selection window 701 to allow user 141 to select applications at that time. Should user 141 not select particular applications, view-sharing client 121 may alert for all applications, no applications, or may include a default selection of applications (e.g., applications that are predetermined to potentially present information that user 141 would not want other users to see).
Upon detecting the event, view-sharing client 121 pauses the window manager before the window is displayed (802). Preferably, view-sharing client 121 only pauses the process in the window manager to display the specific window so that the window manager can still handle the display of alerts. While the window manager is paused, view-sharing client 121 notifies user 141 that the view is being shared (803). View-sharing client 121 may use an alert similar to popup alert 401 or may notify user 141 in some other manner. After notifying user 141, view-sharing client 121 waits for user 141 to confirm whether they want to continue with opening the new window (804). If user 141 confirms that they want to continue, view-sharing client 121 unpauses the window manager, which allows the window manager to proceed with the display of the new window (805). Displaying the new window allows view-sharing client 121 to capture the new window and include it in the shared view. If, however, user 141 does not confirm that the new window should be displayed, the view-sharing client 121 stops the window manager from displaying the new window (806). View-sharing client 121 may stop the new window from being displayed by explicitly instructing the window manager to stop the display, by instructing the window manager to immediately close the new window, by leaving the window manager paused (e.g., and allowing it to timeout), or may prevent the window manager from displaying the new window in some other manner.
Communication interface 901 comprises components that communicate over communication links, such as network cards, ports, RF transceivers, processing circuitry and software, or some other communication devices. Communication interface 901 may be configured to communicate over metallic, wireless, or optical links. Communication interface 901 may be configured to use TDM, IP, Ethernet, optical networking, wireless protocols, communication signaling, or some other communication format—including combinations thereof.
User interface 902 comprises components that interact with a user. User interface 902 may include a keyboard, display screen, mouse, touch pad, or some other user input/output apparatus. User interface 902 may be omitted in some examples.
Processing circuitry 905 comprises microprocessor and other circuitry that retrieves and executes operating software 907 from memory device 906. Memory device 906 comprises a computer readable storage medium, such as a disk drive, flash drive, data storage circuitry, or some other memory apparatus. In no examples would a storage medium of memory device 906 be considered a propagated signal. Operating software 907 comprises computer programs, firmware, or some other form of machine-readable processing instructions. Operating software 907 includes view-share client 908. Operating software 907 may further include an operating system, utilities, drivers, network interfaces, applications, or some other type of software. When executed by processing circuitry 905, operating software 907 directs processing system 903 to operate computing architecture 900 as described herein.
In particular, view-share client 908 directs processing system 903 to capture a view displayed by a first user system to a user. The view includes a first window of a first application. View-share client 908 also directs processing system 903 to share the view with a second user system. The second user system displays the view. View-share client 908 directs processing system 903 to receive user input directing the first user system to display, in the view, a second window of a second application. Before including the second window in the view, view-share client 908 directs processing system 903 to notify the user that the view is being shared.
The descriptions and figures included herein depict specific implementations of the claimed invention(s). For the purpose of teaching inventive principles, some conventional aspects have been simplified or omitted. In addition, some variations from these implementations may be appreciated that fall within the scope of the invention. It may also be appreciated that the features described above can be combined in various ways to form multiple implementations. As a result, the invention is not limited to the specific implementations described above, but only by the claims and their equivalents.