From: asjo@koldfront.dk (Adam Sjøgren)
To: emacs-devel@gnu.org
Cc: ding@gnus.org
Subject: Re: Scaling stuff for high dpi screens
Date: Fri, 30 Jan 2015 00:57:14 +0100 [thread overview]
Message-ID: <87siet3ztx.fsf@topper.koldfront.dk> (raw)
In-Reply-To: 878ugncmwv.fsf@fencepost.gnu.org
David writes:
> (/ (display-pixel-width) (/ (display-mm-width) 25.4))
Here are my observations so far:
a) When starting Emacs by using "emacs" on the command line,
display-pixel-width and display-mm-width returns what I expect
(3200, 406).
b) after-make-frame-functions are not called when I start Emacs using
"emacs" on the command line and the first frame appears.
If I subsequently create a new frame with C-x 5 2, or emacsclient
--create-frame --alternate-editor="", they are called, and the
widths are as expected.
c) If I use 'emacsclient --create-frame --alternate-editor=""' to start
Emacs, then after-make-frame-functions are called, but when I call
display-pixel-width and display-mm-width in such a function, I get
(10, nil) back.
If I subsequently make a new frame with C-x 5 2, or emacsclient
--create-frame --alternate-editor="", then the expected values are
returned.
I don't understand b), but don't mind much, as it is easy to call my
function on the first frame created in my init.el.
I don't understand c) either, but it is quite annoying, because I can't
find a suitable way/hook in which to call display-pixel/mm-width at a
time where they give the results I expect.
This is what I have been playing around with in my init.el:
(defun get-x11-dpi ()
(let ((pixel-width (display-pixel-width))
(mm-width (display-mm-width)))
(message "display-pixel-width: %s" pixel-width)
(message "display-mm-width: %s" mm-width)
(if (and pixel-width mm-width)
(round (/ (display-pixel-width) (/ (display-mm-width) 25.4)))
100)))
; Activate scaling:
(defun asjo-new-frame-setup-scaling (new-frame)
(set-frame-parameter new-frame 'image-dpi-scale-magnitude (if (> (get-x11-dpi) 100) 2.0 1.0)))
; This does not work for the first emacsclient frame, but it does for
; subsequent frames, it is not run for first emacs frame either:
(add-hook 'after-make-frame-functions 'asjo-new-frame-setup-scaling)
; This is for non-emacsclient startup:
(asjo-new-frame-setup-scaling nil)
Best regards,
Adam
--
"I think I've learned by now Adam Sjøgren
There's never an easy way" asjo@koldfront.dk
next prev parent reply other threads:[~2015-01-29 23:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87vbu5m25o.fsf@topper.koldfront.dk>
[not found] ` <b4ma9bfzbny.fsf@jpl.org>
[not found] ` <871twqefd6.fsf@topper.koldfront.dk>
[not found] ` <87lhulyz7g.fsf@topper.koldfront.dk>
2015-01-28 6:23 ` Scaling stuff for high dpi screens Lars Ingebrigtsen
2015-01-28 8:46 ` David Kastrup
2015-01-29 1:02 ` Lars Ingebrigtsen
2015-01-29 22:26 ` Adam Sjøgren
2015-01-29 23:57 ` Adam Sjøgren [this message]
2015-01-30 6:26 ` Eli Zaretskii
2015-01-30 10:05 ` David Kastrup
2015-01-30 15:19 ` Vincent Bernat
2015-01-30 23:38 ` Adam Sjøgren
2015-01-31 15:59 ` Vincent Bernat
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87siet3ztx.fsf@topper.koldfront.dk \
--to=asjo@koldfront.dk \
--cc=ding@gnus.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.