IP Library Granted Patent US 8,713,474
Granted Patent B2
US 8,713,474 · App. 13/252,557 · Granted Apr 29, 2014

Providing user interfaces and window previews for hosted applications

Inventors: Nitin Desai (Coral Springs, FL); Georgy Momchilov (Coconut Creek, FL)
Assignee: Citrix Systems, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,713,474
App. No.
13/252,557
Granted
Apr 29, 2014
Kind
B2
Abstract

A local computing device may use a remote computing device to host various resources on behalf of the local computing device. The local computing device may receive data related to a graphical window of the remotely hosted resource and generate a graphical window on the local desktop environment for the remotely hosted resource. The local computing device may also update a taskbar to include the remote hosted resource. Window previews may also be generated by the local computing device and the window previews may include snapshots or dynamic images of the graphical window for the remotely hosted resource. In some instances, the snapshots may be provided to the local computing device from the remote computing device.

Claims (85)

1. A method comprising:

receiving, by a client computing device and from a remote computing platform, data for an application executed by the remote computing platform, wherein the data for the application executed by the remote computing platform defines properties for a graphical window in which the application executed by the remote computing platform is presented by the client computing device;

generating, by the client computing device, the graphical window in which the application executed by the remote computing platform is presented by the client computing device;

receiving, by the client computing device and from the remote computing platform, data for one or more other applications executed by the remote computing platform, wherein the data for the one or more other applications executed by the remote computing platform defines properties for one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the client computing device;

generating, by the client computing device, the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the client computing device;

determining that a preview for said graphical window in which the application executed by the remote computing platform is presented by the client computing device is needed;

responsive to determining that the preview for said graphical window in which the application executed by the remote computing platform is presented by the client computing device is needed, communicating, to the remote computing platform, a request for a snapshot of the application executed by the remote computing platform;

receiving, from the remote computing platform, the snapshot of the application executed by the remote computing platform, wherein the snapshot of the application executed by the remote computing platform includes an appearance of the application executed by the remote computing platform generated by the remote computing platform; and

generating, by the client computing device and at a time when said graphical window in which the application executed by the remote computing platform is presented by the client computing device is overlapped by at least one of the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the client computing device, a window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device and at least one of the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the client computing device, wherein generating the window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device comprises utilizing the snapshot of the application executed by the remote computing platform to generate the window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device, and wherein the window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device reflects an appearance of said graphical window in which the application executed by the remote computing platform is presented by the client computing device without the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the client computing device overlapping said graphical window in which the application executed by the remote computing platform is presented by the client computing device.

2. The method of claim 1 , comprising:

enabling a custom icon preview for said graphical window in which the application executed by the remote computing platform is presented by the client computing device; and

displaying, in a desktop environment generated by the client computing device, the custom icon preview for said graphical window in which the application executed by the remote computing platform is presented by the client computing device.

3. The method of claim 1 , comprising:

determining that said graphical window in which the application executed by the remote computing platform is presented by the client computing device does not comprise one or more windows associated with the application executed by the remote computing platform that are clipped by or that overlap with one or more other windows associated with the application executed by the remote computing platform; and

responsive to determining that said graphical window in which the application executed by the remote computing platform is presented by the client computing device does not comprise one or more windows associated with the application executed by the remote computing platform that are clipped by or that overlap with one or more other windows associated with the application executed by the remote computing platform, communicating, to the remote computing platform, a notification indicating that snapshots of the application executed by the remote computing platform are no longer needed.

4. The method of claim 1 , comprising:

determining that previews are not needed for said graphical window in which the application executed by the remote computing platform is presented by the client computing device; and

responsive to determining that previews are not needed for said graphical window in which the application executed by the remote computing platform is presented by the client computing device:

communicating, to the remote computing platform, a notification indicating that snapshots of the application executed by the remote computing platform are no longer needed; and

ceasing to display the window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device.

5. The method of claim 1 , comprising:

disabling updates to said graphical window in which the application executed by the remote computing platform is presented by the client computing device; and

providing a dynamic window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device.

6. The method of claim 1 , wherein said graphical window in which the application executed by the remote computing platform is presented by the client computing device comprises one or more windows associated with the application executed by the remote computing platform that are overlapped or clipped by one or more other windows associated with the application executed by the remote computing platform.

7. The method of claim 1 , comprising:

receiving, from the remote computing platform, a first stream of data that includes an image for the window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device;

receiving, from the remote computing platform, a second stream of data that includes data related to graphics acceleration features of said graphical window in which the application executed by the remote computing platform is presented by the client computing device; and

utilizing the image for the window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device and the data related to graphics acceleration features of said graphical window in which the application executed by the remote computing platform is presented by the client computing device to generate the window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device.

8. An apparatus comprising:

one or more processors; and

memory storing computer executable instructions configured to, with the one or more processors, cause the apparatus to:

receive, from a remote computing platform, data for an application executed by the remote computing platform, wherein the data defines properties for a graphical window in which the application executed by the remote computing platform is presented by the apparatus;

generate the graphical window in which the application executed by the remote computing platform is presented by the apparatus;

receive, from the remote computing platform, data for one or more other applications executed by the remote computing platform, wherein the data for the one or more other applications executed by the remote computing platform defines properties for one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the apparatus;

generate the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the apparatus;

determine that a preview for said graphical window in which the application executed by the remote computing platform is presented by the apparatus is needed;

responsive to determining that the preview for said graphical window in which the application executed by the remote computing platform is presented by the apparatus is needed, communicate, to the remote computing platform, a request for a snapshot of the application executed by the remote computing platform;

receive, from the remote computing platform the snapshot of the application executed by the remote computing platform, wherein the snapshot of the application executed by the remote computing platform includes an appearance of the application executed by the remote computing platform generated by the remote computing platform; and

generate, at a time when said graphical window in which the application executed by the remote computing platform is presented by the apparatus is overlapped by at least one of the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the apparatus, a window preview of said graphical window in which the application executed by the remote computing platform is presented by the apparatus and at least one of the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the apparatus, wherein the window preview of the graphical window in which the application executed by the remote computing platform is presented by the apparatus is generated using the snapshot of the application executed by the remote computing platform, and wherein the window preview of said graphical window in which the application executed by the remote computing platform is presented by the apparatus reflects an appearance of said graphical window in which the application executed by the remote computing platform is presented by the apparatus without the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the apparatus overlapping said graphical window in which the application executed by the remote computing platform is presented by the apparatus.

9. The apparatus of claim 8 , wherein the memory further stores computer executable instructions configured to, with the one or more processors, cause the apparatus to:

enable a custom icon preview for said graphical window in which the application executed by the remote computing platform is presented by the apparatus; and

display, in a desktop environment generated by the apparatus, the custom icon preview for said graphical window in which the application executed by the remote computing platform is presented by the apparatus.

10. The apparatus of claim 8 , wherein the memory further stores computer executable instructions configured to, with the one or more processors, cause the apparatus to:

determine that said graphical window in which the application executed by the remote computing platform is presented by the apparatus does not comprise one or more windows associated with the application executed by the remote computing platform that are clipped by or that overlap with one or more other windows associated with the application executed by the remote computing platform; and

responsive to determining that said graphical window in which the application executed by the remote computing platform is presented by the apparatus does not comprise one or more windows associated with the application executed by the remote computing platform that are clipped by or that overlap with one or more other windows associated with the application executed by the remote computing platform, communicate, to the remote computing platform, a notification indicating that snapshots of the application executed by the remote computing platform are no longer needed.

11. The apparatus of claim 8 , wherein the memory further stores computer executable instructions configured to, with the one or more processors, cause the apparatus to:

determine that previews are not needed for said graphical window in which the application executed by the remote computing platform is presented by the apparatus; and

responsive to determining that previews are not needed for said graphical window in which the application executed by the remote computing platform is presented by the apparatus:

communicate, to the remote computing platform, a notification indicating that snapshots of the application executed by the remote computing platform are no longer needed; and

cease to display the window preview of said graphical window in which the application executed by the remote computing platform is presented by the apparatus.

12. The apparatus of claim 8 , wherein the memory further stores computer executable instructions configured to, with the one or more processors, cause the apparatus to:

receive, from the remote computing platform, a first stream of data that includes an image for the window preview of said graphical window in which the application executed by the remote computing platform is presented by the apparatus;

receive, from the remote computing platform, a second stream of data that includes data related to graphics acceleration features of said graphical window in which the application executed by the remote computing platform is presented by the apparatus; and

utilize the image for the window preview of said graphical window in which the application executed by the remote computing platform is presented by the apparatus and the data related to graphics acceleration features of said graphical window in which the application executed by the remote computing platform is presented by the apparatus to generate the window preview of said graphical window in which the application executed by the remote computing platform is presented by the apparatus.

13. The apparatus of claim 8 , wherein the memory further stores computer executable instructions configured to, with the one or more processors, cause the apparatus to:

disable updates to said graphical window in which the application executed by the remote computing platform is presented by the client computing device; and

provide a dynamic window preview of said graphical window in which the application executed by the remote computing platform is presented by the client computing device.

14. One or more non-transitory computer-readable media having instructions stored thereon, that when executed by one or more computers, cause the one or more computers to:

receive, from a remote computing platform, data for an application executed by the remote computing platform, wherein the data defines properties for a graphical window in which the application executed by the remote computing platform is presented by the one or more computers;

generate the graphical window in which the application executed by the remote computing platform is presented by the one or more computers;

receive, from the remote computing platform, data for one or more other applications executed by the remote computing platform, wherein the data for the one or more other applications executed by the remote computing platform defines properties for one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the one or more computers;

generate the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the one or more computers;

determine that a preview for said graphical window in which the application executed by the remote computing platform is presented by the one or more computers is needed;

responsive to determining that the preview for said graphical window in which the application executed by the remote computing platform is presented by the one or more computers is needed, communicate, to the remote computing platform, a request for a snapshot of the application executed by the remote computing platform;

receive, from the remote computing platform the snapshot of the application executed by the remote computing platform, wherein the snapshot of the application executed by the remote computing platform includes an appearance of the application executed by the remote computing platform generated by the remote computing platform; and

generate, at a time when said graphical window in which the application executed by the remote computing platform is presented by the one or more computers is overlapped by at least one of the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the one or more computers, a window preview of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers and at least one of the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the one or more computers, wherein the window preview of the graphical window in which the application executed by the remote computing platform is presented by the one or more computers is generated using the snapshot of the application executed by the remote computing platform, and wherein the window preview of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers reflects an appearance of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers without the one or more graphical windows in which the one or more other applications executed by the remote computing platform are presented by the one or more computers overlapping said graphical window in which the application executed by the remote computing platform is presented by the one or more computers.

15. The one or more non-transitory computer-readable media of claim 14 , wherein the instructions, when executed by the one or more computers, cause the one or more computers to:

enable a custom icon preview for said graphical window in which the application executed by the remote computing platform is presented by the one or more computers; and

display, in a desktop environment generated by the one or more computers, the custom icon preview for said graphical window in which the application executed by the remote computing platform is presented by the one or more computers.

16. The one or more non-transitory computer-readable media of claim 14 , wherein the instructions, when executed by the one or more computers, cause the one or more computers to:

determine that said graphical window in which the application executed by the remote computing platform is presented by the one or more computers does not comprise one or more windows associated with the application executed by the remote computing platform that are clipped by or that overlap with one or more other windows associated with the application executed by the remote computing platform; and

responsive to determining that said graphical window in which the application executed by the remote computing platform is presented by the one or more computers does not comprise one or more windows associated with the application executed by the remote computing platform that are clipped by or that overlap with one or more other windows associated with the application executed by the remote computing platform, communicate, to the remote computing platform, a notification indicating that snapshots of the application executed by the remote computing platform are no longer needed.

17. The one or more non-transitory computer-readable media of claim 14 , wherein the instructions, when executed by the one or more computers, cause the one or more computers to:

determine that previews are not needed for said graphical window in which the application executed by the remote computing platform is presented by the one or more computers; and

responsive to determining that previews are not needed for said graphical window in which the application executed by the remote computing platform is presented by the one or more computers:

communicate, to the remote computing platform, a notification indicating that snapshots of the application executed by the remote computing platform are no longer needed; and

cease to display the window preview of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers.

18. The one or more non-transitory computer-readable media of claim 14 , wherein the instructions, when executed by the one or more computers, cause the one or more computers to:

disable updates to said graphical window in which the application executed by the remote computing platform is presented by the one or more computers; and

provide a dynamic window preview of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers.

19. The one or more non-transitory computer-readable media of claim 14 , wherein said graphical window in which the application executed by the remote computing platform is presented by the one or more computers comprises one or more windows associated with the application executed by the remote computing platform that are overlapped or clipped by one or more other windows associated with the application executed by the remote computing platform.

20. The one or more non-transitory computer-readable media of claim 14 , wherein the instructions, when executed by the one or more computers, cause the one or more computers to:

receive, from the remote computing platform, a first stream of data that includes an image for the window preview of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers;

receive, from the remote computing platform, a second stream of data that includes data related to graphics acceleration features of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers; and

utilize the image for the window preview of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers and the data related to graphics acceleration features of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers to generate the window preview of said graphical window in which the application executed by the remote computing platform is presented by the one or more computers.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2011
From: DESAI, NITIN; MOMCHILOV, GEORGY
To: CITRIX SYSTEMS, INC.
Reel/Frame 027012/0885 →
Continuity (2)
Provisional Application 61389767 · Oct 5, 2010
Related Publication 20120084713A1 · Apr 5, 2012