1. A non-transitory computer readable medium, having stored thereon, computer-executable instructions executable by a processor, the computer-executable instructions causing the processor to execute a method for creating a window stack for a multi-display device, the computer-executable instructions comprising: instructions to create a first window stack for a first display of the multi-display device, wherein the first window stack is a logical arrangement stored in a memory of the multi-display device that describes a display order of all windows and desktops associated with the first display from a top to a bottom of the first window stack, wherein an inactive window or desktop is not displayed, and wherein the display order of windows and desktops in the first window stack can change based on user input; instructions to create a second window stack for a second display of the multi-display device, wherein the second window stack is a logical arrangement stored in the memory of the multi-display device that describes a display order of all windows and desktops associated with the second display from a top to a bottom of the second window stack, and wherein the display order of windows and desktops in the second window stack can change based on user input; instructions to create a logical data structure for each of one or more active windows and two or more inactive windows and desktops in each of the first and second window stacks; instructions to assign a window identifier for each of the one or more windows and desktops; instructions to assign a stack position identifier for all windows and desktops that identifies a position of each window and desktop from the top to the bottom of one of the first and the second window stacks; instructions to receive an input to launch a first application in the multi-display device; instructions to create a logical data structure for the first application; instructions to open a first window of the first application; instructions to assign a window identifier for the first window and store the window identifier in the logical data structure of the first application; in response to receiving the input to launch the first application, instructions to determine one of the first display and the second display associated with the first window of the first application, wherein a window of a newly launched application can be displayed on either the first display or the second display; after determining the first display is associated with the first window, instructions to assign a stack position identifier to the first window to indicate that the first window is at a top of the first window stack; instructions to store the stack position identifier in the logical data structure of the first application; after assigning the stack position identifier to the first window, instructions to change the stack position identifier for the one or more windows and desktops of the first window stack; and instructions to display the first window on the first display, wherein the first window is displayed and is visible on at least a portion of the first display, a second window of a second open application is active and is displayed on the second display, and a third window of a third open application is displayed across a portion of both the first and second displays, wherein the third window has a display identifier indicating that the third window is associated with a composite display comprising at least the portion of the first and second displays, wherein the first window, the second window, and the third window are active, and wherein a first display controller is associated with the first display and a second display controller is associated with the second display.