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.
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))))