If you have followed the lengthy recent discussions here: https://lists.gnu.org/archive/html/emacs-devel/2017-12/msg00418.html and https://lists.gnu.org/archive/html/emacs-devel/2017-12/msg00372.html on temporarily displaying frames when multiple overlapping frames are on screen, then you know this is a complex issue and hard to get right. I suggested a higher level programming model for this, so I wrote a library to make this easy: display-until.el. Please try it out and send any improvement suggestions. I would like to see this code added to core Emacs if it is acceptable and someone will help me add the external documentation and commits needed for it. The library is attached and the commentary is included below. -- Bob ----- # display-until - Display a window or frame topmost in the frame stack until a condition or timeout occurs. This library temporarily displays an existing or new frame topmost in the frame stack. Then it restores the prior topmost frame as well as any prior visibility status of the temporarily displayed frame, e.g. if it was hidden or iconified. See the end of the file for sample usage expressions. It includes the following: Variable: display-until-delay - time in seconds to display a temporary frame or window Display Functions: display-window-until - given a window and optional buffer, display the buffer in the window, make the window's frame topmost for `display-until-delay' seconds, then return the window's frame to its prior visibility display-frame-until - given a frame and optional buffer, display the buffer in the frame's selected window, make the frame topmost for `display-until-delay' seconds, then return the frame to its prior visibility Utility Functions: display-until-get-frame-by-name - given a name string, return the matching frame or nil Utility Macros: display-until-condition-or-timeout - wait for a boolean condition or timeout seconds display-until-thread-condition-or-timeout - run a thread until a boolean condition or timeout seconds