US20190196774A1 - Manipulating shared screen content - Google Patents
Manipulating shared screen content Download PDFInfo
- Publication number
- US20190196774A1 US20190196774A1 US15/851,321 US201715851321A US2019196774A1 US 20190196774 A1 US20190196774 A1 US 20190196774A1 US 201715851321 A US201715851321 A US 201715851321A US 2019196774 A1 US2019196774 A1 US 2019196774A1
- Authority
- US
- United States
- Prior art keywords
- window
- screen
- machine
- regions
- client machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000004044 response Effects 0.000 claims description 20
- 230000009471 action Effects 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 14
- 238000009877 rendering Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 6
- 238000010801 machine learning Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000000007 visual effect Effects 0.000 claims 2
- 238000013507 mapping Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G06F9/4445—
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2354/00—Aspects of interface with display user
Definitions
- Screen sharing is a common feature of many software applications, such as remote desktop, web conferencing, and web presentation applications.
- software applications typically involve a host machine, such as a computer, which may share screen content with one or more client machines.
- the shared screen content may include the host machine's entire desktop or selected portions thereof, such as content of one or more applications or monitors.
- a client machine displays a desktop of a remote host machine, and a user of the client machine operates the host machine by remote control.
- the client machine displays the remote desktop within a window on the client machine, and the user of the client machine is able to move, resize, or minimize the window, as desired.
- an improved technique for sharing screen content of a host machine with a client machine includes identifying multiple screen regions formed by image features within screen content of the host machine and enabling a user of the client machine to move selected screen regions to desired screen locations on the client machine, while leaving unselected screen regions in place. For example, when the user of the client machine selects and drags a particular screen region, the client machine creates a new window and displays the screen contents of the selected screen region in the new window, which the user may place and resize as desired.
- the improved technique enhances user experience and productivity.
- the user of the client machine need not be limited to a single window that can only have one size at a time. Rather, the user can create one or more additional windows for holding selected screen content, resizing the windows independently as desired and placing the windows at convenient and easily accessible locations on the client screen. For example, the user may select a screen region that holds a toolbar of a host application, enlarge the toolbar in its own window, and place the toolbar wherever it is easy to access, while leaving the rest of the remote screen content intact in its original window.
- additional techniques are directed to receiving a user action of drawing a closed shape in a window that displays shared screen content from a host machine.
- the client machine creates a new window and displays the contents of the drawn shape in the new window.
- the client machine may create any number of copies of screen contents with each copy rendered in its own window, which the user may place and resize as desired.
- further improved techniques are directed to identifying, by the host machine, non-shareable elements in the screen content of the host machine and, prior to sending the screen content of the host machine to the client machine for rendering by the client machine, selectively blurring the non-shareable elements, such that the client machine receives the screen content of the host machine with the non-shareable elements already blurred.
- the host machine blurs screen contents based on a black list or a white list and selectively applies blurring to applications, folders, web domains, and/or notifications.
- Such host-based blurring protects the host user's privacy by blurring non-shareable content, while allowing the display of shareable content on the client machine without blurring.
- Certain embodiments are directed to a method of displaying screen content of a host machine on a client machine.
- the method includes rendering the screen content of the host machine in a first window on the client machine and identifying multiple screen regions formed by image features within the first window.
- the method further includes receiving, by the client machine, a user selection of a set of selected screen regions within the first window.
- the set of selected screen regions include at least one of the multiple screen regions but exclude a set of unselected screen regions in the first window.
- the method still further includes creating a second window on the client machine, the second window containing screen content within the set of selected screen regions but excluding screen content within the set of unselected screen regions.
- inventions are directed to a computerized apparatus constructed and arranged to perform a method of displaying screen content of a host machine, such as the method described above.
- Still other embodiments are directed to a computer program product.
- the computer program product stores instructions which, when executed on control circuitry of a computerized apparatus, cause the computerized apparatus to perform a method of displaying screen content of a host machine, such as the method described above.
- FIG. 1 is a block diagram of an example environment in which embodiments of the improved technique hereof can be practiced.
- FIG. 2 is an example screen shot of screen content from a host machine as displayed on a client machine with particular screen regions highlighted.
- FIG. 3 is a front view of left and right monitors of the client machine, where a screen region from the left monitor has been moved to the right monitor.
- FIGS. 4 a and 4 b are front views of the pair of monitors of the client machine, which show an example sequence for changing a screen resolution on the host machine to enlarge a view on the client machine, once additional vertical space has become available on the client machine.
- FIG. 5 is a screen shot that shows an example selection of multiple screen regions to be moved to a different screen area on the client machine.
- FIGS. 6 a and 6 b are different views of an example screen region of FIG. 1 and show a sequence for slicing the screen region into smaller sub-regions.
- FIG. 7 is a comparison front view of a monitor of the host machine (left) and a corresponding front view of a monitor of the client machine (right), which shows different screen portions of the same host screen moved to different screen areas and resized.
- FIG. 8 is a flowchart showing an example method of manipulating shared screen content.
- FIG. 9 is a front view of left and right monitors of the client machine and shows an example copy operation of a user-drawn region of screen content from the left monitor to the right monitor.
- FIG. 10 is a front view of left and right monitors on the client machine and shows another example copy operation of screen content from the left monitor to the right monitor, the copy operation in this case being of a toolbar that would otherwise be off-screen on the right monitor.
- FIG. 11 is a front view of two monitors of the client machine, in which multiple small areas of screen content of different remote-desktop screens on the first monitor are copied to a second monitor, where they all appear together on the second monitor.
- FIG. 12 is a flowchart showing an example method of copying screen content of a shared screen.
- FIG. 13 is a screen shot showing an example blurring operation, in which screen content of the host machine is selectively blurred prior to being sent to the client machine.
- FIG. 14 is a flow chart showing an example method of selectively blurring shared screen content.
- An improved technique for sharing screen content of a host machine with a client machine includes identifying multiple screen regions formed by image features within screen content of the host machine and enabling a user of the client machine to selectively move any of the screen regions to desired screen locations on the client machine, while leaving unselected screen regions in place. By displaying different portions of host screen content in respective, user-assigned locations, the improved technique enhances user experience and productivity.
- FIG. 1 shows an example environment 100 in which embodiments of the improved technique hereof can be practiced.
- a client machine 110 connects to a host machine 150 over a network 170 , such as the Internet, a WAN (wide area network), or a LAN (local area network).
- a conferencing server 180 connects to the network 170 , e.g., to support web conferencing between the client machine 110 and the host machine 150 .
- the client machine 110 has a monitor 110 a , a pointer device (e.g., a mouse, trackball, trackpad, touchpad, touchscreen, etc.) 110 b , and a keyboard 110 c , which may be implemented in hardware or software.
- a pointer device e.g., a mouse, trackball, trackpad, touchpad, touchscreen, etc.
- the host machine 150 has a monitor 150 a , a pointer device 150 b , and a keyboard 150 c .
- the client machine 110 is operable by a user 112
- the host machine 150 is operable by a user 152 .
- the client machine 110 and the host machine 150 are each shown with a single monitor, each may have greater than one monitor, and each monitor may take any suitable form (e.g., as a stand-alone monitor, integrated monitor, touchscreen, projector, or the like.
- the client machine 110 and the host machine 150 may each take any suitable form.
- each may be provided as a desktop computer, laptop computer, tablet computer, smart phone, PDA (personal data assistant) or the like, i.e., any computing machine capable of screen sharing.
- PDA personal data assistant
- the client machine 110 and the host machine 150 need not be the same type of machine.
- the client machine 110 includes a set of processors 114 and memory 120 .
- the set of processors 114 includes one or more processing chips and/or assemblies.
- the memory 120 includes both volatile memory, e.g., Random Access Memory (RAM), and non-volatile memory, such as one or more ROMs (Read-Only Memories), disk drives, solid state drives, and the like.
- RAM Random Access Memory
- ROMs Read-Only Memories
- the set of processors 114 and the memory 120 together form control circuitry, which is constructed and arranged to carry out various methods and functions as described herein.
- the memory 120 includes a variety of software constructs realized in the form of executable instructions. When the executable instructions are run by the set of processors 114 , the set of processors 114 carry out the operations of the software constructs.
- the memory 120 typically includes many other software constructs, which are not shown, such as an operating system, various applications, processes, and daemons.
- the memory 120 of the client machine 110 “includes,” i.e., realizes by execution of software instructions, a sharing client 124 .
- the sharing client 124 may be provided, for example, as a remote desktop client, a web conferencing program, or the like, which is constructed and arranged to render, on the monitor 110 a , a desktop of the host machine 150 , or a portion thereof, such as screen content for a particular application, document, or monitor of the host machine 150 .
- the sharing client 124 includes a UI (user interface) control manager 124 a and a window manager 124 b .
- the UI control manager 124 a is configured to provide UI elements to enable the user 112 to control the display of shared screen content received from the host machine 150
- the window manager 124 b is configured to control the display of shared screen content in one or more windows, such as those supported by Microsoft Windows or Apple OS X (or any other window-based operating system or program).
- the window manager 124 b includes a coordinate map 126 , which is configured to associate locations of screen content from the host machine 150 with corresponding screen content as displayed in windows on the client machine 110 .
- the coordinate map 126 provides a common base between the shared screen content from the host and the rendering of that content in windows on the client.
- the host machine 150 has its own set of processors 154 and memory 160 , which may be provided as described above for the client machine 110 or in a different manner.
- the memory 160 also includes a variety of software constructs realized in the form of executable instructions which, when run by the set of processors 154 , cause the host machine 150 to carry out the operations defined by the software constructs.
- the memory 160 of the host machine 150 is seen to include one or more host applications 162 (e.g., any applications running on the host machine 150 ) and a sharing server 164 , such as a remote desktop server or web conferencing program that supports screen sharing to a client.
- the sharing server 164 includes the following constructs:
- the client machine 110 and the host machine 150 establish a screen-sharing session that enables the user 112 of the client machine 110 to view screen content of the host machine 150 .
- the client machine 110 runs the sharing client 124 as a remote-desktop client, to view and remotely control a desktop of the host machine 150 , which runs the sharing server 164 as a remote-desktop server.
- the client machine 110 and the host machine 150 run the respective sharing client 124 and sharing server 164 as web conferencing applications or the like, in which the user 152 of the host machine 150 shares some or all of a desktop of the host machine 150 with the client machine 110 .
- the slicer 164 processes the screen content and generates multiple screen regions, such as rectangles or other shapes, based on features in the screen content. For example, the slicer 164 runs an edge-detection algorithm, such as a Hough transform, on the screen content to identify edges in the screen content, such as abrupt changes in color and/or brightness. The slicer 164 a then generates rectangles based on the detected edges. In an example, the slicer 164 a generates rectangles as non-overlapping regions within the screen content, such that no rectangle overlaps with any other rectangle.
- an edge-detection algorithm such as a Hough transform
- the slicer 164 a generates rectangles in a context-sensitive manner, e.g., by applying information about the type of content being displayed. For instance, if the slicer 164 a detects that the screen content shows a Microsoft Word document (e.g., based on an operating system call), the slicer 164 a may apply a priori knowledge of the contents of Microsoft Word windows, such as the fact that they generally include a title bar, a menu bar, a set of toolbars, and a document display window. The slicer 164 a may then generate rectangles to encompass the corresponding elements, e.g., one for the menu bar, one for the toolbars, etc.
- a context-sensitive manner e.g., by applying information about the type of content being displayed. For instance, if the slicer 164 a detects that the screen content shows a Microsoft Word document (e.g., based on an operating system call), the slicer 164 a may apply a priori knowledge of the contents of Microsoft Word windows,
- the slicer 164 a applies machine learning in generating the rectangular regions.
- the user 152 and/or 112 may provide feedback to the slicer 164 a , which indicates whether the slicer 164 a has generated rectangles in a manner of which the user approves.
- the slicer 164 a receives the feedback and adjusts coefficients of a machine learning module to reward approved selections and/or to punish disapproved selections. Over time, the machine learning module improves its selections and tends to place rectangles in a manner that accords with user preferences.
- the host computer 110 Once the slicer 164 a has defined rectangles or other-shaped regions that divide the screen content to be shared, the host computer 110 generates region metadata 156 that identifies the locations and dimensions of the generated regions, e.g., using the same coordinate system as maintained by the coordinate map 126 . The host machine 150 then sends the region metadata 156 to the client machine 110 along with associated screen content 158 . For example, the host machine 150 sends the region metadata 156 as frame metadata in frames of screen content 158 , e.g., one set of region metadata 156 for each video frame.
- the client machine 110 receives the screen content 158 and region metadata 156 , and the window manager 124 b renders the screen content 158 in a first window on the client machine 110 (e.g., on the monitor 110 a or on multiple such monitors).
- the window manager 124 b also renders the rectangles (or other-shaped regions) specified in the region metadata 156 .
- the user 112 may display or hide the rectangles by operating a UI control.
- the user 112 may select one or more of the regions, e.g., by operating another UI control and then clicking one or more of the regions. Once the user 112 selects one or more regions, the user 112 may drag the regions away from their original locations.
- the window manager 124 b detects the user action and creates a second window for holding the selected regions.
- the second window is sized to tightly surround the selected region or regions, i.e., to be no larger than necessary for holding the selected contents.
- the user 112 may then place the second window at any suitable location for easy viewing.
- the user 112 may also resize the second window as desired, e.g., making it larger where appropriate or smaller where appropriate.
- the window manager 124 b removes screen content from selected regions of the first window when creating the second window.
- the selected content may be regarded as being moved from the first window to the second window rather than being copied.
- the user 112 may create additional windows using the same actions as described above in connection with creating the second window.
- buttons and dragging may be accomplished by tapping a touchscreen or by performing any other suitable selecting operation.
- dragging may be accomplished by holding down a tapped selection and moving a finger, or by any other suitable means.
- click and drag are intended as functional terms and are not limited to any particular user-interface technology.
- FIG. 2 shows an example first window 210 as rendered by the window manager 124 b on the client machine 110 .
- the screen content within the first window 210 corresponds to an instance of a word processing program running on the host machine 150 .
- the user 112 may operate the word processing program using remote desktop (in which case there may be no separate user 152 of the host machine 150 ).
- the user 152 of the host machine 150 may share some or all of the host desktop as part of a web conference or other sharing session, and the user 112 of the client machine 110 may observe and in some cases control that content.
- a UI region 220 includes multiple UI controls 222 , generated by the UI control manager 124 a , which enable the user 112 of the client machine 110 to interact with the shared screen content.
- the UI controls 222 include the following:
- FIG. 3 shows an example result of the window manager 124 b creating a second window 310 .
- the user 112 has selected regions 210 b and 210 c from the first window 210 ( FIG. 2 ), e.g., by clicking the select button 222 b and clicking the regions 210 b and 210 c , and has dragged the selected regions to trigger creation of the second window 310 .
- the client machine 110 has two monitors, 110 a 1 and 110 a 2 , and the user 112 has dragged the selected regions 210 b and 210 c from the monitor 110 a 1 to the monitor 110 a 2 .
- movement of the screen regions 210 b and 210 c leaves empty regions 330 in the original screen-region locations.
- the second window 310 is a fully-functional and interactive window. For instance, when performing screen sharing pursuant to remote desktop control, or pursuant to web conferencing when the client machine 110 has control over a remote application, any content displayed within the second window is interactive. For example, if the second window 310 displays UI controls of an application 162 running on the host machine 150 ( FIG. 1 ), then the UI controls activate when the user 112 clicks them in the second window 310 , just as they would in a normal remote-desktop arrangement or when running the application 162 locally.
- FIGS. 4 a and 4 b show an example sequence for automatically enlarging screen content after creating empty vertical space 410 in the first window 210 .
- regions 210 a , 210 b , and 210 c have been moved to the second window 310 , leaving empty vertical space 410 above the first window 210 , which has shrunken to minimally enclose the remaining regions (here, 210 d and 210 e ).
- the window manager 124 b upon detecting that the user's movement of regions 210 a , 210 b , and 210 c created empty vertical space 410 , the window manager 124 b prompts the user 112 to enlarge the first window 210 , e.g., by displaying a pop-up box asking the user 112 to proceed. If the user 112 agrees, the client machine 110 sends a message to the host machine 150 that directs the host machine 150 to change its screen resolution 164 b ( FIG. 1 ) to a lower value, such that screen content 158 appears larger. The result is shown in FIG. 4 b , where the first window 210 is enlarged to fill the available vertical space.
- FIG. 5 shows an example arrangement for selecting multiple screen regions at a time.
- the user 112 may click the select button 222 b and then click one or more screen regions (e.g., any of 210 a - 210 f ) in sequence.
- the user 112 may click the select button 222 b and then draw a line 510 that intersects one or more screen regions. Each intersected screen region becomes part of the user's selection.
- the user 112 has selected screen regions 210 a , 210 b , and 210 f .
- the user 112 may then drag the group selection to create a new window and move the contents of selected screen regions 210 a , 210 b , and 210 f to the new window.
- FIGS. 6 a and 6 b show an example arrangement for implementing a slice-deeper function, such as the one described in connection with UI control 222 c in FIG. 2 .
- the screen region 210 c includes multiple groups of toolbars and other elements that are separated by faint vertical lines 610 a , 610 b , and 610 c .
- the user 112 selects screen region 210 c and clicks the slice deeper button 222 c .
- the screen region 210 c is itself divided into sub-regions 620 a , 620 b , 620 c , and 620 d .
- the behavior of sub-regions 620 a - 620 d is the same as the behavior described above for the screen regions 210 a - 210 f .
- the user 112 may select one or more of the sub-regions 620 a - 620 d and create a second window 320 that contains them.
- the window manager 124 b in the client machine 110 coordinates with the slicer 164 a in the host machine 150 to implement the slice-deeper functionality. For example, when the user 112 clicks the slice deeper button 222 c , the window manager 124 b sends a message to the host machine 150 . The message identifies the screen region or regions to be further sliced (e.g., region 210 c in this case). In response, the slicer 164 a performs a slicing operation on the identified region or regions, e.g., using any of the above-described methods for performing initial slicing, and sends back updated region metadata 156 that specifies the locations and dimensions of the finer-granularity sub-regions.
- the slicer 164 a performs a slicing operation on the identified region or regions, e.g., using any of the above-described methods for performing initial slicing, and sends back updated region metadata 156 that specifies the locations and dimensions of the finer-granular
- FIG. 7 shows an example arrangement for rendering multiple screen regions in multiple respective windows.
- the monitor shown to the left is the monitor 150 a of the host machine 150 and the monitor shown to the right is a monitor of the client machine 110 , such as the monitor 110 a 2 .
- the two monitors 150 a and 110 a 2 show corresponding views of the same screen content, but the screen content shown on the client monitor 110 a 2 shows different screen regions in respective windows, which were each created from the first window 210 ( FIG. 2 ) using the technique described above.
- the user 112 may place each of the windows displayed on monitor 110 a 2 in any screen location and resize the windows independently as desired.
- the window containing region 210 c (toolbars) may be enlarged for easier access and placed wherever it can be conveniently accessed.
- FIG. 8 shows an example method 800 that may be carried out in connection with the environment 100 and provides a summary of some of the features described so far.
- the method 800 is typically performed, for example, by the software constructs described in connection with FIG. 1 , which reside in the memory 120 and/or 160 of the client machine 110 and/or the host machine 150 , respectively, and may be run by the set of processors 114 and/or 154 .
- the various acts of method 800 may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in orders different from that illustrated, which may include performing some acts simultaneously.
- screen content 158 of the host machine 150 is rendered in a first window 210 on the client machine 110 .
- the client machine 110 may render such content in the context of remote desktop operations, web conferencing, or the like.
- multiple screen regions formed by image features within the first window 210 are identified.
- the client machine 110 may render screen regions 210 a - 210 f in respective rectangles that are visible to the user 112 (see FIG. 2 ).
- the slicer 164 a running on the host machine 150 defines the screen regions and provides the client machine 110 with region metadata 156 that contains information about their locations and dimensions. The client machine 110 processes the region metadata 156 and renders the rectangles in the manner shown.
- the client machine 110 receives a user selection of a set of selected screen regions within the first window 210 .
- the set of selected screen regions selected by the user includes at least one of the multiple screen regions but excludes a set of unselected screen regions in the first window 210 , i.e., screen regions that the user 112 has not selected.
- the client machine 110 creates a second window 310 .
- the second window 310 ( FIG. 3 ) contains screen content within the set of selected screen regions but excludes screen content within the set of unselected screen regions.
- the improved technique enhances user experience and productivity.
- Such techniques include receiving a user action of drawing a shape in a window that displays shared screen content from the host machine 150 .
- the client machine 110 creates a new window and displays the contents of the drawn shape in the new window.
- the client machine 110 may create any number of copies of screen contents with each copy rendered in its own window, which the user 112 may place and resize as desired.
- FIG. 9 shows an example arrangement for enabling freeform copying of shared screen content.
- the client machine 110 has two monitors 110 a 1 and 110 a 2 , with the host desktop (or portion thereof) rendered in the first window 210 of monitor 110 al .
- the user 112 clicks the copy button 222 d ( FIG. 2 ) and uses a mouse or other pointer device 110 b to draw a closed shape 910 , such as a rectangle, circle, ellipse, etc., around a desired portion of the first window 210 .
- the window manager 124 b creates a new window 920 that includes the same screen content shown within the drawn shape 910 .
- the user 112 may then place the new window 920 at any desired screen location, such as on the monitor 110 a 2 (as shown), and may resize the window 920 as desired, e.g., by making it bigger.
- the second window 920 contains a copy of the screen content in the closed shape 910 ; thus, both copies remain.
- the window manager 124 b updates screen content in both windows 210 and 920 .
- the user 112 may minimize the window 210 and continue viewing only the window 920 , e.g., if the window 920 contains the only interesting features.
- copied screen content may also be fully interactive. For example, clicking the “Cancel” button in window 920 has the same effect as clicking the same button in window 210 .
- the coordinate map 124 c ( FIG. 1 ) maintains associations between corresponding screen content across different windows. For example, the coordinate map 124 c maps each pixel in the second window 920 to a corresponding pixel in the first window 910 and to a corresponding pixel in the shared screen content 158 from the host machine 150 . In this manner, windows of any number containing the same content are kept in sync.
- FIG. 10 shows another copying example.
- the user 112 has drawn a rectangle around the menu bar and toolbars of a word processing application and has copied them to a new window 1020 on monitor 110 a 2 .
- the user 112 has also performed similar acts to copy text region 1012 from monitor 110 a 1 to monitor 110 a 2 .
- the monitor 110 a 2 thus shows the toolbars below the text instead of in the usual location above the text.
- the arrangement shown on the monitor 110 a 2 may be easier to operate than the one on the monitor 110 a 1 when working on areas near the bottom of a page.
- the toolbars in their usual location may have scrolled off-screen, meaning that the user 112 would need to scroll up and down to access both the text and the toolbars needed to adjust the text.
- By copying the toolbars to an area below the text such scrolling is avoided, as the copy of the toolbars is adjacent to the text being edited.
- the user 112 may wish to create copies of toolbars or other controls even if no scrolling is needed, e.g., to avoid large pointer movements.
- FIG. 11 shows yet another copying example.
- the user 112 controls multiple remote screens 1110 on monitor 110 al , e.g., by establishing multiple simultaneous remote desktop sessions.
- the user 112 may instead copy desired portions of each screen 1110 to a free desktop area, such as on monitor 110 a 2 .
- the user 112 is thus able to view and interact with multiple screens via windows containing copied content, aggregating information and avoiding the need to switch between screens.
- the user 112 may also place and resize screen content in any desired manner.
- the copying examples above may clearly apply to remote desktop applications, they also apply to web conferencing applications and the like.
- the user 152 of the host machine 150 may point a webcam at a whiteboard and work on the whiteboard during a web conference.
- the user 112 of the client machine 110 may wish to zoom in on the whiteboard to see more easily what the user 152 is drawing.
- the user 112 may draw a closed shape around the image of the whiteboard and create a copy of the whiteboard content in a new window. The user 112 may then enlarge the new window to see the whiteboard markings more easily.
- copied screen content corresponds to an application 162 that does not have focus on the host machine 150 , meaning that it is not the currently active application on the host machine 150 .
- clicking on a button or other control in a window containing copied screen content might yield unpredictable results, as clicking a button of an application 162 that is in focus executes the button-click directly, whereas clicking a button of an application 162 that is out of focus causes the application to get focus on the host machine 150 , but not to execute the button click. Rather, a second click to the same control is required to execute the button click.
- the window manager 124 b upon receiving a single-click by the user 112 on a UI control in a copied window, checks whether the corresponding application 162 is in focus on the host machine 150 . If so, the window manager 124 b transmits the single click to the host machine 150 , i.e., to directly execute the action associated with a click of the UI control. However, if the window manager 124 b determines that the host application 162 receiving the single-click is not in focus, the window manager 124 b directs the host machine 150 to give focus to the host application 162 focus and then to transmit the single-click to the UI control, causing the host machine 150 to execute the action associated with a click of the UI control. In this fashion, the user 112 need not be concerned with whether the host application 162 is in focus or not, and single-clicks to UI controls in copied windows behave consistently.
- the screen contents in a copied window may disappear or change in a significant way.
- the host application 162 from which screen contents have been copied may become minimized on the host machine 150 or may become covered by another window, e.g., a window of another host application.
- the screen contents in a copied window may disappear or change to that of desktop wallpaper or another application.
- the window manager 124 b detects changes in window content and takes action to avoid user confusion, such as by hiding the window, graying out the window, or rendering the window in some other recognizably altered way, such as partially transparently.
- the window manager 124 b monitors the screen contents of the copied windows and restores them to their normal visible condition when the screen content returns to normal.
- the window manager 124 communicates with the host machine 150 to identify the displayed windows and their corresponding applications, which may be obtained by making operating-system calls on the host machine 150 .
- the window manager 124 b then applies application information from the host machine 150 in determining whether hiding or altering a copied window is warranted. For example, content of some copied windows may change normally in the course of an application's use.
- the window manager 124 b may thus apply application information in distinguishing content that changes normally from content that changes as a result of host applications being minimized, occluded by other content, and so forth.
- the window manager 124 b may then take appropriate action with regard to the changed screen content.
- FIG. 12 shows an example method 1200 that may be carried out in connection with the environment 100 and provides a summary of some of the copying features described above.
- the client machine 110 renders screen content of the host machine 150 in a first window 210 on the client machine 110 .
- the client machine 110 may render such content in the context of remote desktop operations, web conferencing, or the like.
- the client machine 110 receives a user action to draw a closed shape, such as the rectangle 910 ( FIG. 9 ) within the first window 210 .
- a user action to draw a closed shape, such as the rectangle 910 ( FIG. 9 ) within the first window 210 .
- the user 112 may click the copy button 222 d and proceed to draw the closed shape.
- copying may be initiated in any suitable way.
- the client machine 110 in response to the user action (e.g., clicking the copy button 222 d and drawing the closed shape), creates a new window (e.g., 920 ) that contains a copy of screen content rendered within the drawn shape (e.g., 910 ) but excludes screen content rendered within the first window 210 outside the drawn shape 910 (such as the rest of the screen content in window 210 ). In this manner, the new window 920 and the first window 210 both display the screen content rendered within the drawn shape 910 .
- a new window e.g., 920
- the client machine 110 creates a new window (e.g., 920 ) that contains a copy of screen content rendered within the drawn shape (e.g., 910 ) but excludes screen content rendered within the first window 210 outside the drawn shape 910 (such as the rest of the screen content in window 210 ).
- the new window 920 and the first window 210 both display the screen content rendered within the drawn shape 910 .
- Such techniques involve identifying, by the host machine 150 , non-shareable elements in the screen content of the host machine 150 and, prior to sending the screen content of the host machine 150 to the client machine 110 for rendering by the client machine 110 , selectively blurring the non-shareable elements, such that the client machine 110 receives the screen content of the host machine 150 with the non-shareable screen elements already blurred.
- screen sharing software Users of screen sharing software may find themselves in a position of needing to share their screens or portions thereof with other participants.
- a user may share a screen with little thought to the contents of open applications, folders, or websites, which might contain private information or simply information that the user does not wish to share.
- most operating systems support notifications, i.e., messages that appear on a user's screen without warning. Certain messages might be private or even embarrassing.
- current screen-sharing solutions fail to provide suitable measures for protecting users from disclosure of private or other non-shareable content.
- Example techniques provided herein address this need by selectively blurring screen content of applications, folders, web domains, and/or notifications based on a black list 164 c or a white list 164 d ( FIG. 1 ).
- the sharing server 164 on the host machine 150 automatically applies the blur filter 164 e to screen content corresponding to elements on the black list 164 c .
- the sharing server 164 automatically applies the blur filter 164 e to all screen content except for screen content corresponding to elements on the white list 164 d .
- the sharing server 164 applies the blur filter 164 e to outgoing screen content 158 ( FIG. 1 ) and preferably not to screen content displayed locally on the host machine 150 .
- the sharing server 164 makes one or more calls into the operating system on the host machine 150 to identify all running applications, as well as their locations, dimensions, stacking orders, and focus state (in focus or not). The sharing server 164 then compares the list of running applications with those on the black list 164 c or on the white list 164 d to identify a set of non-shareable applications, i.e., those that are running on the host machine 150 and are either (i) on the black list 164 c or (ii) not on the white list 164 d .
- the sharing server 164 applies the blur filter 164 e to the entire application window of the non-shareable application (as the application in focus should always appear in the foreground). If a non-shareable application is not in focus, the sharing server 164 identifies which parts, if any, of the non-shareable application is visible, e.g., by identifying the area of the non-shareable application's window and subtracting screen content of every other application window stacked above it in the stacking order. The sharing server 164 then applies the blur filter 164 e to the remaining screen area in the non-shareable application's window (but not to shareable content that blocks parts of the non-shareable application's window).
- Blurring of folders may work in a similar way. For example, anytime the host machine 150 displays a folder, e.g., in Windows Explorer on a Windows machine or in Finder on a Mac, the sharing server 164 gets the current folder from the operating system and checks whether the current folder is listed on the black list 164 c or on the white list 164 d . The sharing server 164 then proceeds accordingly, by blurring visible portions of the folder window if it is non-shareable and by displaying it without blurring otherwise.
- a folder e.g., in Windows Explorer on a Windows machine or in Finder on a Mac
- the sharing server 164 calls the operating system to obtain the URL (uniform resource locator) of any web page displayed in a running web browser on the host machine 150 .
- the sharing server 164 checks whether the domain of the website is listed on the black list 164 c or the white list 164 d .
- the sharing server 164 then proceeds as before, blurring visible portions of the browser window if the domain is non-shareable and displaying the browser window without blurring otherwise.
- the sharing server 164 identifies a notification area on the desktop of the host machine 150 .
- the notification area is typically in the lower-left corner of the main display.
- the notification area is typically in the upper-left corner.
- the sharing server 164 applies the blur filter 164 e to the entire notification area, such that any notifications appearing in the notification area become blurred.
- the sharing server 164 detects that a notification is being issued, e.g., by polling the operating system, subscribing to and receiving an alert from the operating system, and/or detecting a change in screen content in the notification area.
- the sharing server 164 queries the operating system to identify a host application 162 associated with the newly arriving notification.
- the sharing server 164 compares the identified host application with the black list 164 c or the white list 164 d . If the host application is non-shareable, the sharing server 164 applies the blur filter 164 e to the notification area. Otherwise, the sharing server 164 may allow the notification to be displayed without blurring.
- the blur filter 164 e may apply different blurring settings to different content, with blurring settings defined in the blur list 164 f ( FIG. 1 ). For example, applications, websites, and folders that contain large, easily recognizable features may have higher blur settings than applications, websites, and folders that contain only small text.
- FIG. 13 shows an example of selectively blurred screen content as viewed on the client machine 110 .
- Three application windows 1310 , 1320 , and 1330 are seen to be open.
- application windows 1310 and 1330 are shareable (e.g., not on the black list 164 c or on the white list 164 d ), and application window 1320 is non-shareable.
- application window 1320 is blurred whereas application windows 1310 and 1330 appear without blurring. If application window 1310 were to be stacked on top of application window 1320 (instead of behind it, as shown), then none of application window 1310 would be blurred and only the visible portion of application window 1320 would be blurred.
- the blurred application window 1320 includes a UI control 1340 , which a user may click to direct the sharing server 164 to unblur the application window 1320 .
- a user may click to direct the sharing server 164 to unblur the application window 1320 .
- only the user of the host machine 150 is allowed to operate the UI control 1340 to unblur the application window 1320 .
- FIG. 14 shows an example method 1400 that may be carried out in connection with the environment 100 and provides a summary of some of the blurring features described above.
- the client machine 110 renders screen content of the host machine 150 in a window of the client machine 110 , such as a window that shows a remote desktop or screen content being shared over a web conferencing or similar application.
- the host machine 150 identifies non-shareable elements in the screen content of the host machine 150 , such as applications, websites, and folders appearing on the black list 164 c (or not appearing on the white list 164 d ).
- the host machine 150 prior to sending the screen content of the host machine 150 to the client machine 110 for rendering by the client machine 110 , the host machine 150 selectively blurs the non-shareable elements, such that the client machine receives the screen content of the host machine with the non-shareable elements already blurred.
- the improvement or portions thereof may be embodied as a computer program product including one or more non-transient, computer-readable storage media, such as a magnetic disk, magnetic tape, compact disk, DVD, optical disk, flash drive, solid state drive, SD (Secure Digital) chip or device, Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA), and/or the like (shown by way of example as medium 850 in FIGS. 8, 12, and 14 ). Any number of computer-readable media may be used.
- the media may be encoded with instructions which, when executed on one or more computers or other processors, perform the process or processes described herein. Such media may be considered articles of manufacture or machines, and may be transportable from one machine to another.
- the words “comprising,” “including,” “containing,” and “having” are intended to set forth certain items, steps, elements, or aspects of something in an open-ended fashion.
- the word “set” means one or more of something. This is the case regardless of whether the phrase “set of” is followed by a singular or plural object and regardless of whether it is conjugated with a singular or plural verb.
- ordinal expressions such as “first,” “second,” “third,” and so on, may be used as adjectives herein, such ordinal expressions are used for identification purposes and, unless specifically indicated, are not intended to imply any ordering or sequence.
- a “second” event may take place before or after a “first event,” or even if no first event ever occurs.
- an identification herein of a particular element, feature, or act as being a “first” such element, feature, or act should not be construed as requiring that there must also be a “second” or other such element, feature or act. Rather, the “first” item may be the only one.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Description
- Screen sharing is a common feature of many software applications, such as remote desktop, web conferencing, and web presentation applications. Such software applications typically involve a host machine, such as a computer, which may share screen content with one or more client machines. The shared screen content may include the host machine's entire desktop or selected portions thereof, such as content of one or more applications or monitors.
- In a typical remote desktop session, a client machine displays a desktop of a remote host machine, and a user of the client machine operates the host machine by remote control. The client machine displays the remote desktop within a window on the client machine, and the user of the client machine is able to move, resize, or minimize the window, as desired.
- Unfortunately, options for displaying and interacting with shared screen content are often limited. For example, the user of a client machine might display a remote host desktop or application in a window of a desired size. The size of the window might work fairly well overall, but it may be too small to enable easy access to certain features or controls, such as small buttons. The user can enlarge the window, but doing so might cause certain portions of the remote screen to extend off-screen locally, such that the user has to scroll or perform other manipulations to view desired portions. As a consequence, user experience and productivity may suffer.
- In contrast with prior screen-sharing approaches, which are limited in their flexibility, an improved technique for sharing screen content of a host machine with a client machine includes identifying multiple screen regions formed by image features within screen content of the host machine and enabling a user of the client machine to move selected screen regions to desired screen locations on the client machine, while leaving unselected screen regions in place. For example, when the user of the client machine selects and drags a particular screen region, the client machine creates a new window and displays the screen contents of the selected screen region in the new window, which the user may place and resize as desired.
- By allowing the display of different portions of host screen content in respective locations on the client machine, the improved technique enhances user experience and productivity. For example, the user of the client machine need not be limited to a single window that can only have one size at a time. Rather, the user can create one or more additional windows for holding selected screen content, resizing the windows independently as desired and placing the windows at convenient and easily accessible locations on the client screen. For example, the user may select a screen region that holds a toolbar of a host application, enlarge the toolbar in its own window, and place the toolbar wherever it is easy to access, while leaving the rest of the remote screen content intact in its original window.
- In addition, it would also be desirable to allow the user of the client machine to create copies of shared screen content in a freeform manner. To this end, additional techniques are directed to receiving a user action of drawing a closed shape in a window that displays shared screen content from a host machine. In response to the user action, the client machine creates a new window and displays the contents of the drawn shape in the new window. In an example, the client machine may create any number of copies of screen contents with each copy rendered in its own window, which the user may place and resize as desired.
- Further, it would also be desirable to prevent private or other non-shareable screen content on the host machine from being displayed on the client machine when performing screen sharing from the host machine to the client machine. To this end, further improved techniques are directed to identifying, by the host machine, non-shareable elements in the screen content of the host machine and, prior to sending the screen content of the host machine to the client machine for rendering by the client machine, selectively blurring the non-shareable elements, such that the client machine receives the screen content of the host machine with the non-shareable elements already blurred. In various examples, the host machine blurs screen contents based on a black list or a white list and selectively applies blurring to applications, folders, web domains, and/or notifications. Such host-based blurring protects the host user's privacy by blurring non-shareable content, while allowing the display of shareable content on the client machine without blurring.
- Certain embodiments are directed to a method of displaying screen content of a host machine on a client machine. The method includes rendering the screen content of the host machine in a first window on the client machine and identifying multiple screen regions formed by image features within the first window. The method further includes receiving, by the client machine, a user selection of a set of selected screen regions within the first window. The set of selected screen regions include at least one of the multiple screen regions but exclude a set of unselected screen regions in the first window. In response to the user selection, the method still further includes creating a second window on the client machine, the second window containing screen content within the set of selected screen regions but excluding screen content within the set of unselected screen regions.
- Other embodiments are directed to a computerized apparatus constructed and arranged to perform a method of displaying screen content of a host machine, such as the method described above. Still other embodiments are directed to a computer program product. The computer program product stores instructions which, when executed on control circuitry of a computerized apparatus, cause the computerized apparatus to perform a method of displaying screen content of a host machine, such as the method described above.
- The foregoing summary is presented for illustrative purposes to assist the reader in readily grasping example features presented herein; however, the foregoing summary is not intended to set forth required elements or to limit embodiments hereof in any way. One should appreciate that the above-described features can be combined in any manner that makes technological sense, and that all such combinations are intended to be disclosed herein, regardless of whether such combinations are identified explicitly or not.
- The foregoing and other features and advantages will be apparent from the following description of particular embodiments of the invention, as illustrated in the accompanying drawings, in which like reference characters refer to the same or similar parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of various embodiments.
-
FIG. 1 is a block diagram of an example environment in which embodiments of the improved technique hereof can be practiced. -
FIG. 2 is an example screen shot of screen content from a host machine as displayed on a client machine with particular screen regions highlighted. -
FIG. 3 is a front view of left and right monitors of the client machine, where a screen region from the left monitor has been moved to the right monitor. -
FIGS. 4a and 4b are front views of the pair of monitors of the client machine, which show an example sequence for changing a screen resolution on the host machine to enlarge a view on the client machine, once additional vertical space has become available on the client machine. -
FIG. 5 is a screen shot that shows an example selection of multiple screen regions to be moved to a different screen area on the client machine. -
FIGS. 6a and 6b are different views of an example screen region ofFIG. 1 and show a sequence for slicing the screen region into smaller sub-regions. -
FIG. 7 is a comparison front view of a monitor of the host machine (left) and a corresponding front view of a monitor of the client machine (right), which shows different screen portions of the same host screen moved to different screen areas and resized. -
FIG. 8 is a flowchart showing an example method of manipulating shared screen content. -
FIG. 9 is a front view of left and right monitors of the client machine and shows an example copy operation of a user-drawn region of screen content from the left monitor to the right monitor. -
FIG. 10 is a front view of left and right monitors on the client machine and shows another example copy operation of screen content from the left monitor to the right monitor, the copy operation in this case being of a toolbar that would otherwise be off-screen on the right monitor. -
FIG. 11 is a front view of two monitors of the client machine, in which multiple small areas of screen content of different remote-desktop screens on the first monitor are copied to a second monitor, where they all appear together on the second monitor. -
FIG. 12 is a flowchart showing an example method of copying screen content of a shared screen. -
FIG. 13 is a screen shot showing an example blurring operation, in which screen content of the host machine is selectively blurred prior to being sent to the client machine. -
FIG. 14 is a flow chart showing an example method of selectively blurring shared screen content. - Embodiments of the invention will now be described. One should appreciate that such embodiments are provided by way of example to illustrate certain features and principles of the invention but that the invention hereof is not limited to the particular embodiments described.
- An improved technique for sharing screen content of a host machine with a client machine includes identifying multiple screen regions formed by image features within screen content of the host machine and enabling a user of the client machine to selectively move any of the screen regions to desired screen locations on the client machine, while leaving unselected screen regions in place. By displaying different portions of host screen content in respective, user-assigned locations, the improved technique enhances user experience and productivity.
-
FIG. 1 shows anexample environment 100 in which embodiments of the improved technique hereof can be practiced. Here, aclient machine 110 connects to ahost machine 150 over anetwork 170, such as the Internet, a WAN (wide area network), or a LAN (local area network). Optionally, aconferencing server 180 connects to thenetwork 170, e.g., to support web conferencing between theclient machine 110 and thehost machine 150. In the example shown, theclient machine 110 has amonitor 110 a, a pointer device (e.g., a mouse, trackball, trackpad, touchpad, touchscreen, etc.) 110 b, and akeyboard 110 c, which may be implemented in hardware or software. Likewise, thehost machine 150 has amonitor 150 a, apointer device 150 b, and akeyboard 150 c. Theclient machine 110 is operable by auser 112, and thehost machine 150 is operable by auser 152. Although theclient machine 110 and thehost machine 150 are each shown with a single monitor, each may have greater than one monitor, and each monitor may take any suitable form (e.g., as a stand-alone monitor, integrated monitor, touchscreen, projector, or the like. - The
client machine 110 and thehost machine 150 may each take any suitable form. For example, each may be provided as a desktop computer, laptop computer, tablet computer, smart phone, PDA (personal data assistant) or the like, i.e., any computing machine capable of screen sharing. In addition, theclient machine 110 and thehost machine 150 need not be the same type of machine. - As further shown in
FIG. 1 , theclient machine 110 includes a set ofprocessors 114 andmemory 120. The set ofprocessors 114 includes one or more processing chips and/or assemblies. Thememory 120 includes both volatile memory, e.g., Random Access Memory (RAM), and non-volatile memory, such as one or more ROMs (Read-Only Memories), disk drives, solid state drives, and the like. The set ofprocessors 114 and thememory 120 together form control circuitry, which is constructed and arranged to carry out various methods and functions as described herein. Also, thememory 120 includes a variety of software constructs realized in the form of executable instructions. When the executable instructions are run by the set ofprocessors 114, the set ofprocessors 114 carry out the operations of the software constructs. Although certain software constructs are specifically shown and described, it is understood that thememory 120 typically includes many other software constructs, which are not shown, such as an operating system, various applications, processes, and daemons. - The
memory 120 of theclient machine 110 “includes,” i.e., realizes by execution of software instructions, a sharingclient 124. The sharingclient 124 may be provided, for example, as a remote desktop client, a web conferencing program, or the like, which is constructed and arranged to render, on themonitor 110 a, a desktop of thehost machine 150, or a portion thereof, such as screen content for a particular application, document, or monitor of thehost machine 150. The sharingclient 124 includes a UI (user interface)control manager 124 a and a window manager 124 b. TheUI control manager 124 a is configured to provide UI elements to enable theuser 112 to control the display of shared screen content received from thehost machine 150, and the window manager 124 b is configured to control the display of shared screen content in one or more windows, such as those supported by Microsoft Windows or Apple OS X (or any other window-based operating system or program). In some examples, the window manager 124 b includes a coordinatemap 126, which is configured to associate locations of screen content from thehost machine 150 with corresponding screen content as displayed in windows on theclient machine 110. Thus, the coordinatemap 126 provides a common base between the shared screen content from the host and the rendering of that content in windows on the client. - The
host machine 150 has its own set ofprocessors 154 andmemory 160, which may be provided as described above for theclient machine 110 or in a different manner. Thememory 160 also includes a variety of software constructs realized in the form of executable instructions which, when run by the set ofprocessors 154, cause thehost machine 150 to carry out the operations defined by the software constructs. - The
memory 160 of thehost machine 150 is seen to include one or more host applications 162 (e.g., any applications running on the host machine 150) and asharing server 164, such as a remote desktop server or web conferencing program that supports screen sharing to a client. As shown, the sharingserver 164 includes the following constructs: -
-
Slicer 164 a: Configured to slice a frame or portion thereof of host screen content into multiple screen regions formed by image features in the frame or portion thereof. For example, theslicer 164 a is configured to divide screen content from the host desktop into multiple rectangles and to send region metadata identifying locations and dimensions of the rectangles to theclient machine 110, such that theclient machine 110 is enabled to render the rectangles at corresponding screen locations on theclient machine 110. - Screen Resolution Setting 164 b: A resolution setting of the
monitor 150 a (or of multiple such monitors) of thehost machine 150. -
Black List 164 c: A list of applications, folders, and/or web domains that are identified as non-shareable. According to some examples, thehost machine 150 selectively blurs non-shareable screen content on theblack list 164 c prior to sending such screen content to theclient machine 110, so that the non-shareable screen content is not readily observable when rendered on theclient machine 110. -
White List 164 d: A list of applications, folders, and/or web domains that are identified as shareable. According to some examples, thehost machine 150 selectively blurs screen content corresponding to all screen elements except those on thewhite list 164 d prior to sending screen content to theclient machine 110, so thatclient machine 110 can only display elements on thewhite list 164 d without blurring. Typically, only ablack list 164 c or awhite list 164 d is used at a time. -
Blur Filter 164 e: A graphical filter configured to perform a blurring operation on specified graphical content, such as screen areas containing applications, folders, and/or web domains that appear on theblack list 164 c or that do not appear on thewhite list 164 d. - Blur List 164 f: A table that associates applications, folders, and/or web domains with corresponding degrees of blurring to be applied to such content, allowing different types of content to be blurred to different degrees. For example, the blur list 164 f may specify a lesser degree of blurring to a text editor than to a folder containing large, recognizable icons.
-
- In example operation, the
client machine 110 and thehost machine 150 establish a screen-sharing session that enables theuser 112 of theclient machine 110 to view screen content of thehost machine 150. For example, theclient machine 110 runs the sharingclient 124 as a remote-desktop client, to view and remotely control a desktop of thehost machine 150, which runs the sharingserver 164 as a remote-desktop server. Alternatively, theclient machine 110 and thehost machine 150 run therespective sharing client 124 and sharingserver 164 as web conferencing applications or the like, in which theuser 152 of thehost machine 150 shares some or all of a desktop of thehost machine 150 with theclient machine 110. - As the
host machine 150 generates frames of screen content to be shared (e.g., video frames of the desktop ofhost machine 150, theslicer 164 processes the screen content and generates multiple screen regions, such as rectangles or other shapes, based on features in the screen content. For example, theslicer 164 runs an edge-detection algorithm, such as a Hough transform, on the screen content to identify edges in the screen content, such as abrupt changes in color and/or brightness. Theslicer 164 a then generates rectangles based on the detected edges. In an example, theslicer 164 a generates rectangles as non-overlapping regions within the screen content, such that no rectangle overlaps with any other rectangle. - There are multiple ways to construct rectangles from detected edges. In some examples, the
slicer 164 a generates rectangles in a context-sensitive manner, e.g., by applying information about the type of content being displayed. For instance, if theslicer 164 a detects that the screen content shows a Microsoft Word document (e.g., based on an operating system call), theslicer 164 a may apply a priori knowledge of the contents of Microsoft Word windows, such as the fact that they generally include a title bar, a menu bar, a set of toolbars, and a document display window. Theslicer 164 a may then generate rectangles to encompass the corresponding elements, e.g., one for the menu bar, one for the toolbars, etc. In some examples, theslicer 164 a applies machine learning in generating the rectangular regions. For example, theuser 152 and/or 112 may provide feedback to theslicer 164 a, which indicates whether theslicer 164 a has generated rectangles in a manner of which the user approves. Theslicer 164 a receives the feedback and adjusts coefficients of a machine learning module to reward approved selections and/or to punish disapproved selections. Over time, the machine learning module improves its selections and tends to place rectangles in a manner that accords with user preferences. - Once the
slicer 164 a has defined rectangles or other-shaped regions that divide the screen content to be shared, thehost computer 110 generatesregion metadata 156 that identifies the locations and dimensions of the generated regions, e.g., using the same coordinate system as maintained by the coordinatemap 126. Thehost machine 150 then sends theregion metadata 156 to theclient machine 110 along with associatedscreen content 158. For example, thehost machine 150 sends theregion metadata 156 as frame metadata in frames ofscreen content 158, e.g., one set ofregion metadata 156 for each video frame. - The
client machine 110 receives thescreen content 158 andregion metadata 156, and the window manager 124 b renders thescreen content 158 in a first window on the client machine 110 (e.g., on themonitor 110 a or on multiple such monitors). The window manager 124 b also renders the rectangles (or other-shaped regions) specified in theregion metadata 156. In some examples, theuser 112 may display or hide the rectangles by operating a UI control. - With the rectangular or other-shaped regions displayed in the first window, the
user 112 may select one or more of the regions, e.g., by operating another UI control and then clicking one or more of the regions. Once theuser 112 selects one or more regions, theuser 112 may drag the regions away from their original locations. In response to a user action to drag a selection of regions, the window manager 124 b detects the user action and creates a second window for holding the selected regions. Preferably, the second window is sized to tightly surround the selected region or regions, i.e., to be no larger than necessary for holding the selected contents. Theuser 112 may then place the second window at any suitable location for easy viewing. Theuser 112 may also resize the second window as desired, e.g., making it larger where appropriate or smaller where appropriate. - In an example, the window manager 124 b removes screen content from selected regions of the first window when creating the second window. Thus, the selected content may be regarded as being moved from the first window to the second window rather than being copied. In an example, the
user 112 may create additional windows using the same actions as described above in connection with creating the second window. - Although this document uses familiar user-interface terms such as “click” and “drag,” one should appreciate that user-interface technology may provide numerous ways of selecting and moving graphical elements besides clicking buttons and dragging by holding down a button while moving a pointer device. Thus, “clicking” may also be accomplished by tapping a touchscreen or by performing any other suitable selecting operation. Likewise, “dragging” may be accomplished by holding down a tapped selection and moving a finger, or by any other suitable means. Thus, the terms “click” and “drag” are intended as functional terms and are not limited to any particular user-interface technology.
-
FIG. 2 shows an examplefirst window 210 as rendered by the window manager 124 b on theclient machine 110. In the example shown, the screen content within thefirst window 210 corresponds to an instance of a word processing program running on thehost machine 150. For example, theuser 112 may operate the word processing program using remote desktop (in which case there may be noseparate user 152 of the host machine 150). Alternatively, theuser 152 of thehost machine 150 may share some or all of the host desktop as part of a web conference or other sharing session, and theuser 112 of theclient machine 110 may observe and in some cases control that content. - As further shown in
FIG. 2 , aUI region 220 includes multiple UI controls 222, generated by theUI control manager 124 a, which enable theuser 112 of theclient machine 110 to interact with the shared screen content. For example, the UI controls 222 include the following: -
- Show Slices
Button 222 a: Toggles the display of screen regions (e.g., rectangles) on and off, allowing theuser 112 to see available options for moving screen content into a second window (or additional window). Placement of screen regions is based uponregion metadata 156 received from thehost machine 150. -
Select Button 222 b: Clicking this button enables theuser 112 to select one or more screen regions (e.g., any ofregions 210 a-210 f) for placement in a second window or additional window. For example, the acts of clicking theselect button 222 b and then clicking and dragging a particular screen region causes the window manager 124 b to create a new window and to move the selected screen content from thefirst window 210 into the new window. - Slice
Deeper Button 222 c: Clicking this button causes a selected region (or all regions) to be sliced into smaller sub-regions. For example, selectingregion 210 c (toolbars) and then clicking the slicedeeper button 222 c may slice theregion 210 c into multiple sub-regions, which may each contain one group of toolbars, for example. Slice-deeper functionality can be applied multiple times. For instance, clicking thebutton 222 c a third time may cause a sub-region containing a single group of toolbars to be sliced into multiple even smaller sub-regions, each containing a single toolbar button, for example. -
Copy Button 222 d: Clicking this button allows theuser 112 to make a freeform selection of screen content to be copied to a new window. Copy functionality is described at a later point in this document. -
Feedback Button 222 e: Clicking this button opens a feedback screen, which enables theuser 112 to approve or disapprove of the manner in which theslicer 164 a has rendered the screen regions (e.g., 210 a-210 f). In an example, the sharingclient 124 collects entered feedback and sends it to hostmachine 150, where theslicer 164 a applies the feedback in training the machine-learning module.
- Show Slices
-
FIG. 3 shows an example result of the window manager 124 b creating asecond window 310. In this case, theuser 112 has selectedregions FIG. 2 ), e.g., by clicking theselect button 222 b and clicking theregions second window 310. In this case, theclient machine 110 has two monitors, 110 a 1 and 110 a 2, and theuser 112 has dragged the selectedregions monitor 110 a 1 to themonitor 110 a 2. In the example shown, movement of thescreen regions empty regions 330 in the original screen-region locations. - In an example, the
second window 310 is a fully-functional and interactive window. For instance, when performing screen sharing pursuant to remote desktop control, or pursuant to web conferencing when theclient machine 110 has control over a remote application, any content displayed within the second window is interactive. For example, if thesecond window 310 displays UI controls of anapplication 162 running on the host machine 150 (FIG. 1 ), then the UI controls activate when theuser 112 clicks them in thesecond window 310, just as they would in a normal remote-desktop arrangement or when running theapplication 162 locally. -
FIGS. 4a and 4b show an example sequence for automatically enlarging screen content after creating emptyvertical space 410 in thefirst window 210. As shown inFIG. 4a ,regions second window 310, leaving emptyvertical space 410 above thefirst window 210, which has shrunken to minimally enclose the remaining regions (here, 210 d and 210 e). In an example, upon detecting that the user's movement ofregions vertical space 410, the window manager 124 b prompts theuser 112 to enlarge thefirst window 210, e.g., by displaying a pop-up box asking theuser 112 to proceed. If theuser 112 agrees, theclient machine 110 sends a message to thehost machine 150 that directs thehost machine 150 to change its screen resolution 164 b (FIG. 1 ) to a lower value, such thatscreen content 158 appears larger. The result is shown inFIG. 4b , where thefirst window 210 is enlarged to fill the available vertical space. -
FIG. 5 shows an example arrangement for selecting multiple screen regions at a time. As described above, theuser 112 may click theselect button 222 b and then click one or more screen regions (e.g., any of 210 a-210 f) in sequence. Alternatively, as shown inFIG. 4 , theuser 112 may click theselect button 222 b and then draw aline 510 that intersects one or more screen regions. Each intersected screen region becomes part of the user's selection. In the example shown, theuser 112 has selectedscreen regions user 112 may then drag the group selection to create a new window and move the contents of selectedscreen regions -
FIGS. 6a and 6b show an example arrangement for implementing a slice-deeper function, such as the one described in connection withUI control 222 c inFIG. 2 . As shown inFIG. 6a , thescreen region 210 c includes multiple groups of toolbars and other elements that are separated by faintvertical lines user 112 selectsscreen region 210 c and clicks the slicedeeper button 222 c. As a result, as shown inFIG. 6b , thescreen region 210 c is itself divided intosub-regions screen regions 210 a-210 f. For example, theuser 112 may select one or more of the sub-regions 620 a-620 d and create a second window 320 that contains them. - In an example, the window manager 124 b in the
client machine 110 coordinates with theslicer 164 a in thehost machine 150 to implement the slice-deeper functionality. For example, when theuser 112 clicks the slicedeeper button 222 c, the window manager 124 b sends a message to thehost machine 150. The message identifies the screen region or regions to be further sliced (e.g.,region 210 c in this case). In response, theslicer 164 a performs a slicing operation on the identified region or regions, e.g., using any of the above-described methods for performing initial slicing, and sends back updatedregion metadata 156 that specifies the locations and dimensions of the finer-granularity sub-regions. -
FIG. 7 shows an example arrangement for rendering multiple screen regions in multiple respective windows. Here, the monitor shown to the left is themonitor 150 a of thehost machine 150 and the monitor shown to the right is a monitor of theclient machine 110, such as themonitor 110 a 2. The twomonitors FIG. 2 ) using the technique described above. One should appreciate that theuser 112 may place each of the windows displayed onmonitor 110 a 2 in any screen location and resize the windows independently as desired. For example, thewindow containing region 210 c (toolbars) may be enlarged for easier access and placed wherever it can be conveniently accessed. -
FIG. 8 shows anexample method 800 that may be carried out in connection with theenvironment 100 and provides a summary of some of the features described so far. Themethod 800 is typically performed, for example, by the software constructs described in connection withFIG. 1 , which reside in thememory 120 and/or 160 of theclient machine 110 and/or thehost machine 150, respectively, and may be run by the set ofprocessors 114 and/or 154. The various acts ofmethod 800 may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in orders different from that illustrated, which may include performing some acts simultaneously. - At 810,
screen content 158 of thehost machine 150 is rendered in afirst window 210 on theclient machine 110. Theclient machine 110 may render such content in the context of remote desktop operations, web conferencing, or the like. - At 820, multiple screen regions formed by image features within the
first window 210 are identified. For example, theclient machine 110 may renderscreen regions 210 a-210 f in respective rectangles that are visible to the user 112 (seeFIG. 2 ). In an example, theslicer 164 a running on thehost machine 150 defines the screen regions and provides theclient machine 110 withregion metadata 156 that contains information about their locations and dimensions. Theclient machine 110 processes theregion metadata 156 and renders the rectangles in the manner shown. - At 830, the
client machine 110 receives a user selection of a set of selected screen regions within thefirst window 210. The set of selected screen regions selected by the user includes at least one of the multiple screen regions but excludes a set of unselected screen regions in thefirst window 210, i.e., screen regions that theuser 112 has not selected. - At 840, in response to the user selection, the
client machine 110 creates asecond window 310. The second window 310 (FIG. 3 ) contains screen content within the set of selected screen regions but excludes screen content within the set of unselected screen regions. - By allowing different portions of host screen content to be displayed in respective locations on the
client machine 110, the improved technique enhances user experience and productivity. - Further improved techniques will now be described, which allow the
user 112 of theclient machine 110 to create copies of shared screen content in a freeform manner. Such techniques include receiving a user action of drawing a shape in a window that displays shared screen content from thehost machine 150. In response to the user action, theclient machine 110 creates a new window and displays the contents of the drawn shape in the new window. In an example, theclient machine 110 may create any number of copies of screen contents with each copy rendered in its own window, which theuser 112 may place and resize as desired. -
FIG. 9 shows an example arrangement for enabling freeform copying of shared screen content. In this example, theclient machine 110 has twomonitors 110 a 1 and 110 a 2, with the host desktop (or portion thereof) rendered in thefirst window 210 ofmonitor 110 al. To copy a desired portion of thefirst window 210, theuser 112 clicks thecopy button 222 d (FIG. 2 ) and uses a mouse orother pointer device 110 b to draw aclosed shape 910, such as a rectangle, circle, ellipse, etc., around a desired portion of thefirst window 210. In response to theuser 112 drawing theclosed shape 910, the window manager 124 b creates anew window 920 that includes the same screen content shown within the drawnshape 910. Theuser 112 may then place thenew window 920 at any desired screen location, such as on themonitor 110 a 2 (as shown), and may resize thewindow 920 as desired, e.g., by making it bigger. Preferably, thesecond window 920 contains a copy of the screen content in theclosed shape 910; thus, both copies remain. As corresponding screen content on thehost machine 150 changes, e.g., as the status bar shown in thewindows windows user 112 may minimize thewindow 210 and continue viewing only thewindow 920, e.g., if thewindow 920 contains the only interesting features. - As is the case with moved screen content, copied screen content may also be fully interactive. For example, clicking the “Cancel” button in
window 920 has the same effect as clicking the same button inwindow 210. In an example, the coordinate map 124 c (FIG. 1 ) maintains associations between corresponding screen content across different windows. For example, the coordinate map 124 c maps each pixel in thesecond window 920 to a corresponding pixel in thefirst window 910 and to a corresponding pixel in the sharedscreen content 158 from thehost machine 150. In this manner, windows of any number containing the same content are kept in sync. -
FIG. 10 shows another copying example. Here, theuser 112 has drawn a rectangle around the menu bar and toolbars of a word processing application and has copied them to anew window 1020 onmonitor 110 a 2. Theuser 112 has also performed similar acts to copytext region 1012 frommonitor 110 a 1 to monitor 110 a 2. Themonitor 110 a 2 thus shows the toolbars below the text instead of in the usual location above the text. The arrangement shown on themonitor 110 a 2 may be easier to operate than the one on themonitor 110 a 1 when working on areas near the bottom of a page. For example, the toolbars in their usual location may have scrolled off-screen, meaning that theuser 112 would need to scroll up and down to access both the text and the toolbars needed to adjust the text. By copying the toolbars to an area below the text, such scrolling is avoided, as the copy of the toolbars is adjacent to the text being edited. In some cases, theuser 112 may wish to create copies of toolbars or other controls even if no scrolling is needed, e.g., to avoid large pointer movements. -
FIG. 11 shows yet another copying example. Here, theuser 112 controls multipleremote screens 1110 onmonitor 110 al, e.g., by establishing multiple simultaneous remote desktop sessions. Rather than having to switch between screens to view desired content on each screen, theuser 112 may instead copy desired portions of eachscreen 1110 to a free desktop area, such as onmonitor 110 a 2. Theuser 112 is thus able to view and interact with multiple screens via windows containing copied content, aggregating information and avoiding the need to switch between screens. Theuser 112 may also place and resize screen content in any desired manner. - Although the copying examples above may clearly apply to remote desktop applications, they also apply to web conferencing applications and the like. For example, the
user 152 of thehost machine 150 may point a webcam at a whiteboard and work on the whiteboard during a web conference. As this occurs, theuser 112 of theclient machine 110 may wish to zoom in on the whiteboard to see more easily what theuser 152 is drawing. To this end, theuser 112 may draw a closed shape around the image of the whiteboard and create a copy of the whiteboard content in a new window. Theuser 112 may then enlarge the new window to see the whiteboard markings more easily. - In some situations, copied screen content corresponds to an
application 162 that does not have focus on thehost machine 150, meaning that it is not the currently active application on thehost machine 150. In such cases, clicking on a button or other control in a window containing copied screen content might yield unpredictable results, as clicking a button of anapplication 162 that is in focus executes the button-click directly, whereas clicking a button of anapplication 162 that is out of focus causes the application to get focus on thehost machine 150, but not to execute the button click. Rather, a second click to the same control is required to execute the button click. To address this inconsistency, the window manager 124 b, upon receiving a single-click by theuser 112 on a UI control in a copied window, checks whether thecorresponding application 162 is in focus on thehost machine 150. If so, the window manager 124 b transmits the single click to thehost machine 150, i.e., to directly execute the action associated with a click of the UI control. However, if the window manager 124 b determines that thehost application 162 receiving the single-click is not in focus, the window manager 124 b directs thehost machine 150 to give focus to thehost application 162 focus and then to transmit the single-click to the UI control, causing thehost machine 150 to execute the action associated with a click of the UI control. In this fashion, theuser 112 need not be concerned with whether thehost application 162 is in focus or not, and single-clicks to UI controls in copied windows behave consistently. - In some situations, the screen contents in a copied window may disappear or change in a significant way. For example, the
host application 162 from which screen contents have been copied may become minimized on thehost machine 150 or may become covered by another window, e.g., a window of another host application. In such cases, the screen contents in a copied window may disappear or change to that of desktop wallpaper or another application. In an example, the window manager 124 b detects changes in window content and takes action to avoid user confusion, such as by hiding the window, graying out the window, or rendering the window in some other recognizably altered way, such as partially transparently. In some examples, the window manager 124 b monitors the screen contents of the copied windows and restores them to their normal visible condition when the screen content returns to normal. In some examples, thewindow manager 124 communicates with thehost machine 150 to identify the displayed windows and their corresponding applications, which may be obtained by making operating-system calls on thehost machine 150. The window manager 124 b then applies application information from thehost machine 150 in determining whether hiding or altering a copied window is warranted. For example, content of some copied windows may change normally in the course of an application's use. The window manager 124 b may thus apply application information in distinguishing content that changes normally from content that changes as a result of host applications being minimized, occluded by other content, and so forth. The window manager 124 b may then take appropriate action with regard to the changed screen content. -
FIG. 12 shows anexample method 1200 that may be carried out in connection with theenvironment 100 and provides a summary of some of the copying features described above. - At 1210, the
client machine 110 renders screen content of thehost machine 150 in afirst window 210 on theclient machine 110. As before, theclient machine 110 may render such content in the context of remote desktop operations, web conferencing, or the like. - At 1220, the
client machine 110 receives a user action to draw a closed shape, such as the rectangle 910 (FIG. 9 ) within thefirst window 210. For example, theuser 112 may click thecopy button 222 d and proceed to draw the closed shape. Alternatively, copying may be initiated in any suitable way. - At 1230, in response to the user action (e.g., clicking the
copy button 222 d and drawing the closed shape), theclient machine 110 creates a new window (e.g., 920) that contains a copy of screen content rendered within the drawn shape (e.g., 910) but excludes screen content rendered within thefirst window 210 outside the drawn shape 910 (such as the rest of the screen content in window 210). In this manner, thenew window 920 and thefirst window 210 both display the screen content rendered within the drawnshape 910. - Further improved techniques will now be described that allow the
user 152 of thehost machine 150 to prevent private or other non-shareable screen content on thehost machine 150 from being displayed on theclient machine 110 when performing screen sharing from thehost machine 150 to theclient machine 110. Such techniques involve identifying, by thehost machine 150, non-shareable elements in the screen content of thehost machine 150 and, prior to sending the screen content of thehost machine 150 to theclient machine 110 for rendering by theclient machine 110, selectively blurring the non-shareable elements, such that theclient machine 110 receives the screen content of thehost machine 150 with the non-shareable screen elements already blurred. - Users of screen sharing software may find themselves in a position of needing to share their screens or portions thereof with other participants. A user may share a screen with little thought to the contents of open applications, folders, or websites, which might contain private information or simply information that the user does not wish to share. Also, most operating systems support notifications, i.e., messages that appear on a user's screen without warning. Certain messages might be private or even embarrassing. However, current screen-sharing solutions fail to provide suitable measures for protecting users from disclosure of private or other non-shareable content. Example techniques provided herein address this need by selectively blurring screen content of applications, folders, web domains, and/or notifications based on a
black list 164 c or awhite list 164 d (FIG. 1 ). - For example, the sharing
server 164 on thehost machine 150 automatically applies theblur filter 164 e to screen content corresponding to elements on theblack list 164 c. Alternatively, the sharingserver 164 automatically applies theblur filter 164 e to all screen content except for screen content corresponding to elements on thewhite list 164 d. One should appreciate that the sharingserver 164 applies theblur filter 164 e to outgoing screen content 158 (FIG. 1 ) and preferably not to screen content displayed locally on thehost machine 150. - To selectively blur screen content corresponding to host
applications 162, the sharingserver 164 makes one or more calls into the operating system on thehost machine 150 to identify all running applications, as well as their locations, dimensions, stacking orders, and focus state (in focus or not). The sharingserver 164 then compares the list of running applications with those on theblack list 164 c or on thewhite list 164 d to identify a set of non-shareable applications, i.e., those that are running on thehost machine 150 and are either (i) on theblack list 164 c or (ii) not on thewhite list 164 d. If a non-shareable application is in focus, the sharingserver 164 applies theblur filter 164 e to the entire application window of the non-shareable application (as the application in focus should always appear in the foreground). If a non-shareable application is not in focus, the sharingserver 164 identifies which parts, if any, of the non-shareable application is visible, e.g., by identifying the area of the non-shareable application's window and subtracting screen content of every other application window stacked above it in the stacking order. The sharingserver 164 then applies theblur filter 164 e to the remaining screen area in the non-shareable application's window (but not to shareable content that blocks parts of the non-shareable application's window). - Blurring of folders may work in a similar way. For example, anytime the
host machine 150 displays a folder, e.g., in Windows Explorer on a Windows machine or in Finder on a Mac, the sharingserver 164 gets the current folder from the operating system and checks whether the current folder is listed on theblack list 164 c or on thewhite list 164 d. The sharingserver 164 then proceeds accordingly, by blurring visible portions of the folder window if it is non-shareable and by displaying it without blurring otherwise. - For websites, the sharing
server 164 calls the operating system to obtain the URL (uniform resource locator) of any web page displayed in a running web browser on thehost machine 150. The sharingserver 164 checks whether the domain of the website is listed on theblack list 164 c or thewhite list 164 d. The sharingserver 164 then proceeds as before, blurring visible portions of the browser window if the domain is non-shareable and displaying the browser window without blurring otherwise. - For notifications, the sharing
server 164 identifies a notification area on the desktop of thehost machine 150. On a Windows machine, the notification area is typically in the lower-left corner of the main display. On a Mac, the notification area is typically in the upper-left corner. In some examples, the sharingserver 164 applies theblur filter 164 e to the entire notification area, such that any notifications appearing in the notification area become blurred. In other examples, the sharingserver 164 detects that a notification is being issued, e.g., by polling the operating system, subscribing to and receiving an alert from the operating system, and/or detecting a change in screen content in the notification area. In an example, the sharingserver 164 then queries the operating system to identify ahost application 162 associated with the newly arriving notification. The sharingserver 164 compares the identified host application with theblack list 164 c or thewhite list 164 d. If the host application is non-shareable, the sharingserver 164 applies theblur filter 164 e to the notification area. Otherwise, the sharingserver 164 may allow the notification to be displayed without blurring. - In some examples, the
blur filter 164 e may apply different blurring settings to different content, with blurring settings defined in the blur list 164 f (FIG. 1 ). For example, applications, websites, and folders that contain large, easily recognizable features may have higher blur settings than applications, websites, and folders that contain only small text. -
FIG. 13 shows an example of selectively blurred screen content as viewed on theclient machine 110. Threeapplication windows application windows black list 164 c or on thewhite list 164 d), andapplication window 1320 is non-shareable. Accordingly,application window 1320 is blurred whereasapplication windows application window 1310 were to be stacked on top of application window 1320 (instead of behind it, as shown), then none ofapplication window 1310 would be blurred and only the visible portion ofapplication window 1320 would be blurred. - In an example, the
blurred application window 1320 includes aUI control 1340, which a user may click to direct the sharingserver 164 to unblur theapplication window 1320. In an example, only the user of thehost machine 150 is allowed to operate theUI control 1340 to unblur theapplication window 1320. -
FIG. 14 shows anexample method 1400 that may be carried out in connection with theenvironment 100 and provides a summary of some of the blurring features described above. - At 1410, the
client machine 110 renders screen content of thehost machine 150 in a window of theclient machine 110, such as a window that shows a remote desktop or screen content being shared over a web conferencing or similar application. - At 1420, the
host machine 150 identifies non-shareable elements in the screen content of thehost machine 150, such as applications, websites, and folders appearing on theblack list 164 c (or not appearing on thewhite list 164 d). - At 1430, prior to sending the screen content of the
host machine 150 to theclient machine 110 for rendering by theclient machine 110, thehost machine 150 selectively blurs the non-shareable elements, such that the client machine receives the screen content of the host machine with the non-shareable elements already blurred. - Having described certain embodiments, numerous alternative embodiments or variations can be made. For example, although embodiments have been described between a
single host machine 150 and asingle client machine 110, this is merely an example, as some embodiments may includemultiple client machines 110. Also, machines may be configured to act as both clients and hosts, such that machines that operate as clients at one time may operate as hosts at another time, and vice-versa. - Further, although features are shown and described with reference to particular embodiments hereof, such features may be included and hereby are included in any of the disclosed embodiments and their variants. Thus, it is understood that features disclosed in connection with any embodiment are included as variants of any other embodiment.
- Further still, the improvement or portions thereof may be embodied as a computer program product including one or more non-transient, computer-readable storage media, such as a magnetic disk, magnetic tape, compact disk, DVD, optical disk, flash drive, solid state drive, SD (Secure Digital) chip or device, Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA), and/or the like (shown by way of example as medium 850 in
FIGS. 8, 12, and 14 ). Any number of computer-readable media may be used. The media may be encoded with instructions which, when executed on one or more computers or other processors, perform the process or processes described herein. Such media may be considered articles of manufacture or machines, and may be transportable from one machine to another. - As used throughout this document, the words “comprising,” “including,” “containing,” and “having” are intended to set forth certain items, steps, elements, or aspects of something in an open-ended fashion. Also, as used herein and unless a specific statement is made to the contrary, the word “set” means one or more of something. This is the case regardless of whether the phrase “set of” is followed by a singular or plural object and regardless of whether it is conjugated with a singular or plural verb. Further, although ordinal expressions, such as “first,” “second,” “third,” and so on, may be used as adjectives herein, such ordinal expressions are used for identification purposes and, unless specifically indicated, are not intended to imply any ordering or sequence. Thus, for example, a “second” event may take place before or after a “first event,” or even if no first event ever occurs. In addition, an identification herein of a particular element, feature, or act as being a “first” such element, feature, or act should not be construed as requiring that there must also be a “second” or other such element, feature or act. Rather, the “first” item may be the only one. Although certain embodiments are disclosed herein, it is understood that these are provided by way of example only and that the invention is not limited to these particular embodiments.
- Those skilled in the art will therefore understand that various changes in form and detail may be made to the embodiments disclosed herein without departing from the scope of the invention.
Claims (24)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/851,321 US10331394B1 (en) | 2017-12-21 | 2017-12-21 | Manipulating shared screen content |
US16/414,135 US10732922B2 (en) | 2017-12-21 | 2019-05-16 | Manipulating shared screen content |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/851,321 US10331394B1 (en) | 2017-12-21 | 2017-12-21 | Manipulating shared screen content |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/414,135 Continuation US10732922B2 (en) | 2017-12-21 | 2019-05-16 | Manipulating shared screen content |
Publications (2)
Publication Number | Publication Date |
---|---|
US10331394B1 US10331394B1 (en) | 2019-06-25 |
US20190196774A1 true US20190196774A1 (en) | 2019-06-27 |
Family
ID=66951241
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/851,321 Active US10331394B1 (en) | 2017-12-21 | 2017-12-21 | Manipulating shared screen content |
US16/414,135 Active US10732922B2 (en) | 2017-12-21 | 2019-05-16 | Manipulating shared screen content |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/414,135 Active US10732922B2 (en) | 2017-12-21 | 2019-05-16 | Manipulating shared screen content |
Country Status (1)
Country | Link |
---|---|
US (2) | US10331394B1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022271368A1 (en) * | 2021-06-24 | 2022-12-29 | Microsoft Technology Licensing, Llc | Screen sharing session privacy manager |
US20230017091A1 (en) * | 2021-07-12 | 2023-01-19 | Citrix Systems, Inc. | Remote access for resource links shared during web conference session |
WO2023003382A1 (en) * | 2021-07-21 | 2023-01-26 | Samsung Electronics Co., Ltd. | Method, device and system for sharing screen by plurality of devices |
WO2023056076A1 (en) * | 2021-10-01 | 2023-04-06 | ShareSafe Media, LLC | System and method for decreasing data transfer between computing devices |
US20230137876A1 (en) * | 2021-11-04 | 2023-05-04 | Oracle International Corporation | System and method for providing on-demand localization in a microservice application environment |
US11663350B2 (en) * | 2018-05-16 | 2023-05-30 | Planisware SAS | Enhanced mechanisms for information exchange in an enterprise environment |
US11972169B2 (en) | 2021-07-21 | 2024-04-30 | Samsung Electronics Co., Ltd. | Method, device and system for sharing screen by plurality of devices |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10331394B1 (en) * | 2017-12-21 | 2019-06-25 | Logmein, Inc. | Manipulating shared screen content |
US10971161B1 (en) | 2018-12-12 | 2021-04-06 | Amazon Technologies, Inc. | Techniques for loss mitigation of audio streams |
US11336954B1 (en) | 2018-12-12 | 2022-05-17 | Amazon Technologies, Inc. | Method to determine the FPS on a client without instrumenting rendering layer |
US11368400B2 (en) | 2018-12-13 | 2022-06-21 | Amazon Technologies, Inc. | Continuously calibrated network system |
US11252097B2 (en) | 2018-12-13 | 2022-02-15 | Amazon Technologies, Inc. | Continuous calibration of network metrics |
US11356326B2 (en) | 2018-12-13 | 2022-06-07 | Amazon Technologies, Inc. | Continuously calibrated network system |
US11016792B1 (en) * | 2019-03-07 | 2021-05-25 | Amazon Technologies, Inc. | Remote seamless windows |
US11245772B1 (en) | 2019-03-29 | 2022-02-08 | Amazon Technologies, Inc. | Dynamic representation of remote computing environment |
US11461168B1 (en) | 2019-03-29 | 2022-10-04 | Amazon Technologies, Inc. | Data loss protection with continuity |
CN110582749B (en) * | 2019-07-11 | 2022-06-24 | 深圳市鹰硕技术有限公司 | Remote desktop control method, device and system, equipment and storage medium |
US11669291B2 (en) * | 2019-10-23 | 2023-06-06 | Co-Commerce Shopping Platform Ltd. | System and method for sharing altered content of a web page between computing devices |
JP2022013115A (en) * | 2020-07-03 | 2022-01-18 | セイコーエプソン株式会社 | Image supply device, display system, and image output method |
CN114442969A (en) * | 2020-10-30 | 2022-05-06 | 华为技术有限公司 | Inter-device screen cooperation method and device |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3753207B2 (en) * | 1997-08-11 | 2006-03-08 | 富士ゼロックス株式会社 | Collaborative work support system and collaborative work support method |
US6331855B1 (en) | 1999-04-28 | 2001-12-18 | Expertcity.Com, Inc. | Method and apparatus for providing remote access, control of remote systems and updating of display information |
US20070260742A1 (en) * | 2003-12-10 | 2007-11-08 | Clark Evan W | Media Storage and distribution in a Local Area Network |
US20060002315A1 (en) * | 2004-04-15 | 2006-01-05 | Citrix Systems, Inc. | Selectively sharing screen data |
US7827139B2 (en) | 2004-04-15 | 2010-11-02 | Citrix Systems, Inc. | Methods and apparatus for sharing graphical screen data in a bandwidth-adaptive manner |
US20060277482A1 (en) * | 2005-06-07 | 2006-12-07 | Ilighter Corp. | Method and apparatus for automatically storing and retrieving selected document sections and user-generated notes |
US20090254824A1 (en) * | 2008-04-08 | 2009-10-08 | Gurvinder Singh | Distribution Of Context Aware Content And Interactable Advertisements |
JP4591567B2 (en) * | 2008-07-16 | 2010-12-01 | セイコーエプソン株式会社 | Image display system |
US20100045567A1 (en) * | 2008-08-19 | 2010-02-25 | Lin Frank C H | Systems and methods for facilitating presentation |
US9377991B1 (en) * | 2009-02-13 | 2016-06-28 | Northwest Analytics, Inc. | System for applying privacy settings in connection with creating, storing, distributing, and editing mixed-media collections |
US8261361B2 (en) * | 2009-03-11 | 2012-09-04 | Microsoft Corporation | Enabling sharing of mobile communication device |
US8451994B2 (en) | 2010-04-07 | 2013-05-28 | Apple Inc. | Switching cameras during a video conference of a multi-camera mobile device |
US9269072B2 (en) | 2010-12-23 | 2016-02-23 | Citrix Systems, Inc. | Systems, methods, and devices for facilitating navigation of previously presented screen data in an ongoing online meeting |
US9342817B2 (en) * | 2011-07-07 | 2016-05-17 | Sony Interactive Entertainment LLC | Auto-creating groups for sharing photos |
US20130019186A1 (en) | 2011-07-13 | 2013-01-17 | International Business Machines Corporation | Managing privacy preferences in a web conference |
US20130043302A1 (en) * | 2011-08-18 | 2013-02-21 | Mark Stuart Powlen | Social media platforms |
KR101952682B1 (en) * | 2012-04-23 | 2019-02-27 | 엘지전자 주식회사 | Mobile terminal and method for controlling thereof |
JP5923726B2 (en) * | 2012-07-25 | 2016-05-25 | パナソニックIpマネジメント株式会社 | Display control apparatus and display control system |
US20140108542A1 (en) * | 2012-10-11 | 2014-04-17 | Nec Europe Ltd. | Method and system for providing a multiuser web session |
US9870115B2 (en) * | 2013-06-07 | 2018-01-16 | Apple Inc. | User interfaces for multiple displays |
US9712577B2 (en) | 2013-06-09 | 2017-07-18 | Apple Inc. | Device, method, and graphical user interface for sharing content from a respective application |
US9282285B2 (en) | 2013-06-10 | 2016-03-08 | Citrix Systems, Inc. | Providing user video having a virtual curtain to an online conference |
US20150033140A1 (en) * | 2013-07-23 | 2015-01-29 | Salesforce.Com, Inc. | Providing active screen sharing links in an information networking environment |
CA2923435A1 (en) * | 2013-09-05 | 2015-03-12 | Mosaiqq, Inc. | System and method for decoupling windows from the desktop it was created on in a multiple desktop environment |
EP3054378B1 (en) * | 2013-10-04 | 2022-11-02 | Sony Group Corporation | Information processing device, information processing method, and program |
US9864479B2 (en) * | 2014-12-19 | 2018-01-09 | Xerox Corporation | System and method for managing and reviewing document integration and updates |
US10437549B2 (en) * | 2017-05-19 | 2019-10-08 | Vmware, Inc. | Selective screen sharing |
US10331394B1 (en) * | 2017-12-21 | 2019-06-25 | Logmein, Inc. | Manipulating shared screen content |
-
2017
- 2017-12-21 US US15/851,321 patent/US10331394B1/en active Active
-
2019
- 2019-05-16 US US16/414,135 patent/US10732922B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663350B2 (en) * | 2018-05-16 | 2023-05-30 | Planisware SAS | Enhanced mechanisms for information exchange in an enterprise environment |
WO2022271368A1 (en) * | 2021-06-24 | 2022-12-29 | Microsoft Technology Licensing, Llc | Screen sharing session privacy manager |
US20230017091A1 (en) * | 2021-07-12 | 2023-01-19 | Citrix Systems, Inc. | Remote access for resource links shared during web conference session |
US11770423B2 (en) * | 2021-07-12 | 2023-09-26 | Citrix Systems, Inc. | Remote access for resource links shared during web conference session |
WO2023003382A1 (en) * | 2021-07-21 | 2023-01-26 | Samsung Electronics Co., Ltd. | Method, device and system for sharing screen by plurality of devices |
US11972169B2 (en) | 2021-07-21 | 2024-04-30 | Samsung Electronics Co., Ltd. | Method, device and system for sharing screen by plurality of devices |
WO2023056076A1 (en) * | 2021-10-01 | 2023-04-06 | ShareSafe Media, LLC | System and method for decreasing data transfer between computing devices |
US20230137876A1 (en) * | 2021-11-04 | 2023-05-04 | Oracle International Corporation | System and method for providing on-demand localization in a microservice application environment |
Also Published As
Publication number | Publication date |
---|---|
US10732922B2 (en) | 2020-08-04 |
US20190272140A1 (en) | 2019-09-05 |
US10331394B1 (en) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10732922B2 (en) | Manipulating shared screen content | |
US9600595B2 (en) | Modification of windows across multiple displays | |
RU2691260C2 (en) | Method of controlling system panel of user device and user device | |
US8856682B2 (en) | Displaying a user interface in a dedicated display area | |
US9196227B2 (en) | Selecting techniques for enhancing visual accessibility based on health of display | |
US20120311501A1 (en) | Displaying graphical object relationships in a workspace | |
US20150135113A1 (en) | Gestures for Manipulating Tables, Charts, and Graphs | |
WO2016045523A1 (en) | Display method and device for interface contents of mobile terminal and terminal | |
US11556235B2 (en) | Interacting with nonconforming applications in a windowing environment | |
CN102622223A (en) | Directly assigning desktop backgrounds | |
CN110457102B (en) | Visual object blurring method, visual object rendering method and computing equipment | |
WO2022083088A1 (en) | Method and device for generating mobile terminal desktop, and electronic device | |
US20190258396A1 (en) | Layout design with adaptive areas | |
US20230004673A1 (en) | Information management system and method for communication application, and display terminal | |
JP2016520923A (en) | Multi-panel view interface for browsers running on computing devices | |
US10437410B2 (en) | Conversation sub-window | |
WO2023216976A1 (en) | Display method and apparatus, electronic device, and storage medium | |
CN109766530B (en) | Method and device for generating chart frame, storage medium and electronic equipment | |
US20180181262A1 (en) | Grid-based rendering of nodes and relationships between nodes | |
CN111142754A (en) | Screenshot processing method and device and storage medium | |
US11847294B2 (en) | Method for generating desktop of mobile terminal, device and electronic device | |
US20220308740A1 (en) | Information processing system and non-transitory computer readable medium storing program | |
CN112783382B (en) | Method, device, terminal and storage medium for setting document icons | |
CN114518821A (en) | Application icon management method and device and electronic equipment | |
US20140375576A1 (en) | Facilitating touch screen users to select elements in a densely populated display |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: LOGMEIN, INC., MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SARFI, DAVID;SZENTANNAI, BOTOND;HOFFMANN, ISTVAN;REEL/FRAME:044870/0810 Effective date: 20180108 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: BARCLAYS BANK PLC, AS COLLATERAL AGENT, NEW YORK Free format text: SECOND LIEN PATENT SECURITY AGREEMENT;ASSIGNOR:LOGMEIN, INC.;REEL/FRAME:053667/0079 Effective date: 20200831 Owner name: U.S. BANK NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT, MINNESOTA Free format text: NOTES LIEN PATENT SECURITY AGREEMENT;ASSIGNOR:LOGMEIN, INC.;REEL/FRAME:053667/0032 Effective date: 20200831 Owner name: BARCLAYS BANK PLC, AS COLLATERAL AGENT, NEW YORK Free format text: FIRST LIEN PATENT SECURITY AGREEMENT;ASSIGNOR:LOGMEIN, INC.;REEL/FRAME:053667/0169 Effective date: 20200831 |
|
AS | Assignment |
Owner name: LOGMEIN, INC., MASSACHUSETTS Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS (SECOND LIEN);ASSIGNOR:BARCLAYS BANK PLC, AS COLLATERAL AGENT;REEL/FRAME:055306/0200 Effective date: 20210209 |
|
AS | Assignment |
Owner name: GOTO GROUP, INC., MASSACHUSETTS Free format text: CHANGE OF NAME;ASSIGNOR:LOGMEIN, INC.;REEL/FRAME:059644/0090 Effective date: 20220131 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: BARCLAYS BANK PLC, AS COLLATERAL AGENT, UNITED KINGDOM Free format text: SECURITY INTEREST;ASSIGNORS:GOTO GROUP, INC.,;GOTO COMMUNICATIONS, INC.;LASTPASS US LP;REEL/FRAME:066508/0443 Effective date: 20240205 |
|
AS | Assignment |
Owner name: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS THE NOTES COLLATERAL AGENT, MINNESOTA Free format text: SECURITY INTEREST;ASSIGNORS:GOTO COMMUNICATIONS, INC.,;GOTO GROUP, INC., A;LASTPASS US LP,;REEL/FRAME:066614/0402 Effective date: 20240205 Owner name: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS THE NOTES COLLATERAL AGENT, MINNESOTA Free format text: SECURITY INTEREST;ASSIGNORS:GOTO COMMUNICATIONS, INC.;GOTO GROUP, INC.;LASTPASS US LP;REEL/FRAME:066614/0355 Effective date: 20240205 |
|
AS | Assignment |
Owner name: GOTO GROUP, INC. (F/K/A LOGMEIN, INC.), MASSACHUSETTS Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 053667/0169, REEL/FRAME 060450/0171, REEL/FRAME 063341/0051);ASSIGNOR:BARCLAYS BANK PLC, AS COLLATERAL AGENT;REEL/FRAME:066800/0145 Effective date: 20240313 |