ubuntu 14.04 emacs: como revogar o padrão de tela cheia?

ubuntu 14.04 emacs: como revogar o padrão de tela cheia?

Quando inicio o emacs, ele sempre fica em tela cheia. Não consigo encontrar a configuração para iniciar o emacsnãoem tela cheia (maximizada). Não sou o único com esse problema:

http://ubuntuforums.org/showthread.php?t=2282182

Sistema:

  • Dell XPS15
  • Ubuntu 14.04 (instalado de fábrica)
  • Emacs 24.3.1 (instalado de fábrica, atualizado)

Eu tentei a --geometryopção e ela funciona na linha de comando, mas não altera o comportamento do ícone do dock. Mesmo quando eu removo o ícone, inicio na linha de comando com custom --geometrye bloqueio o novo ícone - ele apenas inicia em tela inteira novamente. Também não tive sorte com *-frame-alistas configurações. Que outra configuração poderia estar fazendo isso?

Responder1

Eu também tenho um Dell XPS com 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, que estava sendo duplicada porque defini meu fator de escala da UI como 2 para tornar as coisas legíveis na tela HiDPI . Portanto, o gerenciador de janelas (com razão) abriu o Emacs no modo de tela inteira. Eu descobri quando tentei a solução do ennob emhttp://ubuntuforums.org/showthread.php?t=2282182. No código do 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 solicitadas pelo fator de escala ao definir a largura e a altura reais do quadro.

Você pode obter o fator de escala no 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 generalizei o código do 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)). 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.

Responder2

A resposta de @ chris-simpkins quase funcionou para mim, mas a função para alternar para tela cheia não funcionou por algum motivo:/De acordo com meu comentário, aqui está o código que funciona para mim (prefiro uma tela mais estreita):

(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)

informação relacionada