12

I use maxframe.el to maximize my Emacs frames.

It works great on all three major platforms, except on my dual-head Mac setup (Macbook Pro 15-inch laptop with 23-inch monitor).

When maximizing an Emacs frame, the frame expands to fill the width of both monitors and the height of the larger monitor.

Obviously, I would like the frame to maximize to fill only the monitor it's on. How can I detect the resolutions of the two individual monitors using elisp?

Thanks, Jacob

EDIT: As Denis points out, setting mf-max-width is a reasonable workaround. But (as I should have mentioned) I was hoping for a solution that works on both monitors and with any resolution. Maybe something OSX-specific in the style of the Windows-specific w32-send-sys-command.

Chopmo
  • 1,416
  • 1
  • 10
  • 18

3 Answers3

8

I quickly scanned the reference that you provided to maxframe.el and I don't think that you're using the same technique that I use. Does the following code snippet help you?


(defun toggle-fullscreen ()
  "toggles whether the currently selected frame consumes the entire display or is decorated with a window border"
  (interactive)
  (let ((f (selected-frame)))
    (modify-frame-parameters f `((fullscreen . ,(if (eq nil (frame-parameter f 'fullscreen)) 'fullboth nil))))))
Greg Mattes
  • 33,090
  • 15
  • 73
  • 105
  • Cool! You're right, it's a completely different solution, but much better, because it gets rid of the dock and menu bar as well. Unfortunately, it only works on the big monitor of my dual-head setup, but I think the pros outweigh the cons in this case. Thanks! – Chopmo Sep 21 '08 at 18:48
  • Unfortunately this doesn't seem to work with http://emacsformacosx.com/ - any known workaround for the 'ns' window system? – Glyph Oct 14 '09 at 15:37
  • This does work for the `mac` window system, thankfully, and I was able to use it to replace `ediff-toggle-wide-display`: https://gist.github.com/1283061 – Nicholas Riley Oct 13 '11 at 00:54
4

Does customising `mf-max-width' work? Its documentation:

"*The maximum display width to support.  This helps better support the true
nature of display-pixel-width.  Since multiple monitors will result in a
very large display pixel width, this value is used to set the stop point for
maximizing the frame.  This could also be used to set a fixed frame size
without going over the display dimensions."
EfForEffort
  • 55,816
  • 4
  • 36
  • 41
-2

This sort of thing is the job of your window manager, not the job of emacs. (For example, Xmonad handles full-screen emacs just fine.)

jrockway
  • 42,082
  • 9
  • 61
  • 86
  • Agree.. but at startup time Emacs doesn't seem to understand the window dimensions XMonad gives him. So I end up switching between some layouts to let Emacs understand its dimensions. – Rene Saarsoo Mar 02 '10 at 18:55