Function: make-frame-on-monitor

make-frame-on-monitor is an interactive and byte-compiled function defined in frame.el.gz.

Signature

(make-frame-on-monitor MONITOR &optional DISPLAY PARAMETERS)

Documentation

Make a frame on monitor MONITOR.

The optional argument DISPLAY can be a display name, and the optional argument PARAMETERS specifies additional frame parameters.

View in manual

Probably introduced at or before Emacs version 27.1.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/frame.el.gz
(defun make-frame-on-monitor (monitor &optional display parameters)
  "Make a frame on monitor MONITOR.
The optional argument DISPLAY can be a display name, and the optional
argument PARAMETERS specifies additional frame parameters."
  (interactive
   (list
    (let* ((default (cdr (assq 'name (frame-monitor-attributes)))))
      (completing-read
       (format-prompt "Make frame on monitor" default)
       (or (delq nil (mapcar (lambda (a)
                               (cdr (assq 'name a)))
                             (display-monitor-attributes-list)))
           '(""))
       nil nil nil nil default))))
  (let* ((monitor-workarea
          (catch 'done
            (dolist (a (display-monitor-attributes-list display))
              (when (equal (cdr (assq 'name a)) monitor)
                (throw 'done (cdr (assq 'workarea a)))))))
         (geometry-parameters
          (when monitor-workarea
            `((top . ,(nth 1 monitor-workarea))
              (left . ,(nth 0 monitor-workarea))))))
    (make-frame (append geometry-parameters parameters))))