Eu também tenho um Dell XPS com uma tela HiDPI e tive o mesmo problema. Acontece que o Emacs queria ocupar mais espaço na tela do que estava disponível porque em meus arquivos de inicialização do Emacs eu estava definindo uma largura de quadro de 88 caracteres, o que foi duplicado porque eu defini meu fator de escala de UI para 2 para tornar as coisas legíveis na tela HiDPI . Então o gerenciador de janelas (corretamente) abriu o Emacs no modo de tela cheia. Descobri isso quando tentei a solução do ennob no link . No código da ennob, o tamanho do quadro é 40 x 25 caracteres, o que resultou em um tamanho de quadro de 80x50 no meu sistema. Uma pequena experimentação confirmou que o Emacs multiplica a largura e a altura do texto solicitada pelo fator de escala ao definir a largura e a altura reais do quadro.
Você pode obter o fator de escala do dconf:
dconf read /com/ubuntu/user-interface/scale-factor
que no meu sistema retorna {'eDP1': 16}
. Um fator de escala de 1 fornece {'eDP1': 8}
. Então eu generalizei o código da ennob e adicionei isso ao meu arquivo de inicialização do Emacs (para mim, ~/.emacs.d/init.el)
:
(defun my:window-setup-hook ()
(when (and (string= system-type "gnu/linux") window-system)
(toggle-frame-maximized)
(let* ((dconf-entry
(shell-command-to-string
"dconf read /com/ubuntu/user-interface/scale-factor"))
(scale-factor (progn (string-match "'[eD][FD]P1': \([0-9]+\)[,\}]"
dconf-entry)
(string-to-int (match-string 1 dconf-entry))))
(text-width (truncate (/ desired-width (/ scale-factor 8.0))))
(text-height (truncate (/ desired-height (/ scale-factor 8.0)))))
(message "set-frame-size is %dx%d, scale-factor is %s"
text-width text-height scale-factor)
(set-frame-size (selected-frame) text-width text-height))))
(setq window-setup-hook 'my:window-setup-hook)
Isso funciona para mim para fatores de escala > = 2 e quando minha fonte padrão é 14 pt ( (set-face-attribute 'default nil :height 140)
). Então, eu ainda não entendo a miríade de fatores em jogo, mas meu problema imediato está resolvido e espero que isso ajude você também.