Subject: bug#76691: closed (Re: 29.4; Incorrect workarea entry in display-monitor-attributes-list on macOS)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 02 Jun 2025 20:18:03 +0000

Your bug report

#76051: `display-monitor-attributes-list` not working properly on macOS

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
76051: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76051
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: 29.4; Incorrect workarea entry in display-monitor-attributes-list on macOS
From: Alan Third <[email-masked]>
To: Anders Lindgren <[email-masked]>
Cc: [email-masked]
Date: Mon, 2 Jun 2025 21:16:53 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

On Mon, Jun 02, 2025 at 10:01:24PM +0200, Anders Lindgren wrote:
> Hi!
> 
> I have built a fresh Emacs with your patch, and it appears to be working
> well. Thanks!

Superb, thanks! I'll push it up to master now.

> I also put together a small Emacs package to draw the monitor layout with
> workareas as ASCII-boxes, based on the information provided by
> display-monitor-attributes-list. This makes it easier to check that the
> values returned are sane. I haven't published it yet, so I attached a copy.
> 
> For example, this is my mac layout with the laptop screen with doc to the
> right and an external monitor to the left. The numbers are the margin (in
> pixels), i.e. the space between the workarea and the full area of the
> monitor.
> 
> +---------------------------------------+
> |                                       |
> |                   ^ 25                |
> |                                       |
> |                                       |
> |                                       |
> |                                       |
> |                                       |
> |                                       |
> |                                       |
> |                                       |
> | < 0                              > 0  +--------------------------+
> |                                       |                          |
> |                                       |            ^ 38          |
> |                                       |                          |
> |                                       |                          |
> |                                       |                          |
> |                                       |                          |
> |                                       |                          |
> |                                       |                          |
> |                   v 0                 | < 0                 > 0  |
> |                                       |                          |
> +---------------------------------------+                          |
>                                         |                          |
>                                         |                          |
>                                         |                          |
>                                         |            v 66          |
>                                         |                          |
>                                         +--------------------------+
> 
> 
>     -- Anders

That's pretty cool!

-- 
Alan Third

Subject: `display-monitor-attributes-list` not working properly on macOS
From: Ruiyang Wu <[email-masked]>
To: [email-masked]
Date: Sun, 2 Mar 2025 15:59:05 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

I am using the official NS port Emacs 30.1 on a MacBook (macOS Sequoia) with an external monitor. The output of `display-monitor-attributes-list` is as follows:
> (((geometry 0 0 1512 982) (workarea 0 38 1512 944) (mm-size 301 195) (frames) (source . "NS")) ((geometry 1512 -517 1600 900 (workarea 1512 -517 1600 875) (mm-size 549 311) (frames #<frame scratch* 0x12d08e430>) (source . "NS")))
It fails to recognize my monitors. Furthermore, when I run `M-x make-frame-on-monitor`, no candidate is provided.

However, if I use `emacs-mac` from https://bitbucket.org/mituharu/emacs-mac/src/master/, the monitors can be correctly recognized. `display-monitor-attributes-list` prints
> (((geometry 0 0 1512 982) (workarea 0 38 1512 944) (mm-size 301 196) (frames) (name . "Built-in Retina Display") (backing-scale-factor . 2)) ((geometry 1512 -517 1600 900) (workarea 1512 -492 1600 875) (mm-size 549 311) (frames #<frame *scratch* - GNU Emacs at Ruiyangs-MBP 0x1400a62c8>) (name . "DELL U2515H") (backing-scale-factor . 2)))
And I can also use `make-frame-on-monitor` to create new frames without issue.

Is it possible to have the aforementioned behavior from `emacs-mac` in the official NS port? That would greatly improve my workflow. Thank you very much!

Best,
Ruiyang