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

2

Quando inicio o emacs, é sempre em tela cheia. Não consigo encontrar a configuração para que o emacs inicie não em tela cheia (maximizado). Eu não sou o único com este problema:

link

Sistema:

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

Eu tentei a opção --geometry e ela funciona na linha de comando, mas não altera o comportamento do ícone do dock. Mesmo quando eu remover o ícone, inicie a partir da linha de comando com o --geometry personalizado e bloqueie o novo ícone - ele só começa em tela cheia novamente. Eu também não tive sorte com *-frame-alist configurações. Que outra configuração poderia estar fazendo isso?

    
por Niles 13.10.2015 / 18:34

2 respostas

1

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.

    
por Chris Simpkins 04.01.2016 / 08:14
1

A resposta de @ chris-simpkins quase funcionou para mim, mas a função de alternar a tela cheia não funcionou por algum motivo: / Conforme 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)
    
por Niles 04.01.2016 / 15:01