
Cuando inicio emacs, siempre está en pantalla completa. No encuentro la configuración para iniciar emacsnoen pantalla completa (maximizada). No soy el único con este problema:
http://ubuntuforums.org/showthread.php?t=2282182
Sistema:
- Dell XPS 15
- Ubuntu 14.04 (instalado de fábrica)
- Emacs 24.3.1 (instalado de fábrica, actualizado)
Probé la --geometry
opción y funciona desde la línea de comando, pero no cambia el comportamiento del ícono del muelle. Incluso cuando elimino el ícono, comienzo desde la línea de comando con custom --geometry
y bloqueo el nuevo ícono; simplemente comienza nuevamente en pantalla completa. Tampoco he tenido suerte con *-frame-alist
la configuración. ¿Qué otra configuración podría estar haciendo esto?
Respuesta1
También tengo una Dell XPS con pantalla HiDPI y tuve el mismo problema. Resulta que Emacs quería ocupar más espacio en pantalla del que estaba disponible porque en mis archivos de inicio de Emacs estaba configurando un ancho de marco de 88 caracteres, que se estaba duplicando porque configuré el factor de escala de mi interfaz de usuario en 2 para que las cosas fueran legibles en la pantalla HiDPI. . Entonces, el administrador de ventanas (con razón) abrió Emacs en modo de pantalla completa. Lo descubrí cuando probé la solución de ennob enhttp://ubuntuforums.org/showthread.php?t=2282182. En el código de ennob, el tamaño del marco es de 40 x 25 caracteres, lo que resultó en un tamaño de marco de 80x50 en mi sistema. Un poco de experimentación confirmó que Emacs multiplica el ancho y alto del texto solicitado por el factor de escala al configurar el ancho y alto real del marco.
Puede obtener el factor de escala de dconf:
dconf read /com/ubuntu/user-interface/scale-factor
que en mi sistema devuelve {'eDP1': 16}
. Un factor de escala de 1 da {'eDP1': 8}
. Así que generalicé el código de ennob y lo agregué a mi archivo de inicio de Emacs (para mí ~/.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)
Esto me funciona para factores de escala >= 2 y cuando mi fuente predeterminada es 14 pt ( (set-face-attribute 'default nil :height 140)
). Todavía no entiendo los innumerables factores que intervienen, pero mi problema inmediato está resuelto y espero que esto también te ayude.
Respuesta2
La respuesta de @chris-simpkins casi funcionó para mí, pero la función para alternar pantalla completa no funcionó por alguna razón :/ Según mi comentario, aquí está el código que sí funciona para mí (prefiero una pantalla más estrecha):
(defun toggle-fullscreen-x11 ()
"Toggle full screen on X11"
(interactive)
(when (eq window-system 'x)
(set-frame-parameter
nil 'fullscreen
(when (not (frame-parameter nil 'fullscreen)) 'fullboth))))
(defun my:window-setup-hook ()
(toggle-fullscreen-x11)
(when window-system
(let* ((dconf-entry
(shell-command-to-string
"dconf read /com/ubuntu/user-interface/scale-factor"))
(scale-factor (progn (string-match "{'eDP1': \\([0-9]+\\)}"
dconf-entry)
(string-to-int (match-string 1 dconf-entry))))
;; text-width make room for gutter and fringes
(text-width (truncate (/ 48 (/ scale-factor 8.0))))
(text-height (truncate (/ 50 (/ scale-factor 8.0)))))
(set-frame-size (selected-frame) text-width text-height))))
(setq window-setup-hook 'my:window-setup-hook)