Shouldn't frame.el provide a command like make-frame-on-display, but to make a frame on the specified monitor instead of display? Isn't the following patch the right way to do this? (It also adds completion for the existing command):