Ubuntu 14.04 emacs: ¿cómo revocar el valor predeterminado de pantalla completa?

Ubuntu 14.04 emacs: ¿cómo revocar el valor predeterminado de pantalla completa?

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 --geometryopció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 --geometryy bloqueo el nuevo ícono; simplemente comienza nuevamente en pantalla completa. Tampoco he tenido suerte con *-frame-alistla 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)

información relacionada