If I have a separate info frame beside my main emacs frame and the info frame is (set-frame-parameter nil 'unsplittable t) (set-window-dedicated-p nil t) and I switch to this info frame, eval the below code (M-:) and switch to an other app then my main emacs frame is raised automatically to the foreground when the timer runs. switch-to-buffer should not cause emacs bringing a frame to the foreground (and thereby interrupting the user) without the user asking for this behavior. GNU Emacs 27.1 (build 1, x86_64-w64-mingw32) of 2020-08-12 (run-with-timer 3 nil (lambda () (with-current-buffer "*test*" (erase-buffer)) (set-process-sentinel (start-process-shell-command "test" "*test*" "dir d:") (lambda (process event) (switch-to-buffer "*test*") (goto-char (point-min)) ))))