anchor.diff:    (setf *last* (setf *curr* (first *windows*)))
     (focus *curr*)
   
  -  (unwind-protect (handler-bind ((window-error #'window-error)) (evloop))
  +  (unwind-protect (handler-bind ((window-error #'restart-window-error)
  +                                 (simple-error #'restart-simple-error))
  +                    (evloop))
       (ungrab-all)
       (close-display *display*)))
   
  
positive.code:         'wont-move))))
  
  ;; Restart functions
  (defun window-error (c)
    (declare (ignore c))
    (let ((restart (find-restart 'window-error)))
      (when restart
        (invoke-restart restart))))
  
  (defun evloop ()
    (do () ((eql (process-event *display* :handler *handlers* :discard-p t) 'quit))))
  
negative.code: (defun run (command)
    (let ((com (split-string command)))
      #+clisp (ext:run-program (first com) :arguments (rest com) :wait nil)
      #+sbcl (restart-case (sb-ext:run-program (first com) (rest com) :wait nil :search t)
                           (simple-error () (format t "~&Cannot execute ~s~%" (first com))))))
  
  (defun raise-or-run (program)
    "Raise (an existing window) or run a program."
  