1. A method, comprising: providing a device having a first desktop displayed on a first screen of the device; providing a computer system having a second, different desktop displayed on a second screen of the computer system; docking the device to the computer system to form a unified system; in response to the docking, hiding the first and second desktops; generating a unified desktop for the unified system in place of the hidden first and second desktops, wherein the unified desktop includes at least a first user interface executing on the device and a second user interface executing on the computer system, and wherein the unified desktop emulates a personal computer environment for the hidden first and second desktops; while docked, opening one or more first windows on the on the unified desktop; undocking the device, wherein the one or more first windows on the unified desktop close in response to the undocking but remain available for when the device is re-docked; storing a data structure of the one or more first windows that were opened on the unified desktop while docked in response to the undocking; opening one or more second windows on the device while in an undocked state; storing information of the one or more second windows open on the device while in the undocked state in the data structure; re-docking the device to the computer system; and in response to re-docking the device: re-hiding the first and second desktops; regenerating the unified desktop for the unified system in place of the hidden first and second desktops; accessing the data structure to reopen the one or more first windows on the unified desktop; re-opening the one or more first windows on the second user interface on the unified desktop using the accessed data structure; and moving the one or more second windows open on the device while in the undocked state to the unified desktop using the stored information in the data structure.