человечность 14.04 emacs: как отменить полноэкранное значение по умолчанию?

Когда я запускаю emacs, это всегда - полный экран. Я не могу найти, что конфигурация, чтобы иметь emacs запускается не в (максимизируемом) полном экране. Я не единственный с этой проблемой:

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

Система:

  • Dell XPS 15
  • (Установленная изготовителем) Ubuntu 14.04
  • Emacs 24.3.1 (установленный изготовителем, обновленный)

Я попробовал --geometry опция, и это работает из командной строки, но не изменяет поведение значка панелей. Даже когда я удаляю значок, запустите с командной строки с пользовательским --geometry, и заблокируйте новый значок - он только запускается в полном экране снова. У меня не было удачи с *-frame-alist настройки также. Что другая конфигурация могла делать это?

2
задан 14 October 2015 в 15:14

2 ответа

У меня также есть Dell XPS с экраном HiDPI, и у меня была та же проблема. Оказывается, что Emacs хотел занять больше экранного места, чем было доступно, потому что в моем Emacs запускают файлы, я устанавливал ширину кадра 88 символов, которая удваивалась, потому что я установил свой масштабный коэффициент UI на 2 для создания вещей читаемыми на дисплее HiDPI. Таким образом, менеджер окон (справедливо) открыл Emacs в полноэкранном режиме вместо этого. Я понял это когда, когда я попробовал решение ennob на http://ubuntuforums.org/showthread.php?t=2282182 . В коде ennob формат кадра является символами 40 x 25, которые привели к формату кадра 80x50 в моей системе. Немного экспериментирования подтвердило, что Emacs умножает требуемую текстовую ширину и высоту масштабным коэффициентом при установке фактической ширины и высоты кадра.

можно получить масштабный коэффициент от dconf:

dconf read /com/ubuntu/user-interface/scale-factor

, который по моим системным возвратам {'eDP1': 16}. Масштабный коэффициент 1 дает {'eDP1': 8}. Таким образом, я обобщил код ennob и добавил это к моему файлу запуска Emacs (для меня, ~/.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)

Это работает на меня для масштабных коэффициентов> = 2 и когда мой стандартный шрифт составляет 14 ПБ ((set-face-attribute 'default nil :height 140)). Таким образом, я все еще не понимаю бесчисленных факторов в действии, но моя непосредственная проблема решена, и я надеюсь, что это помогает Вам также.

1
ответ дан 2 December 2019 в 03:51

Ответ от @chris-simpkins почти обработанного для меня, но функции для переключения полного экрана не работал по некоторым причинам:/Согласно моему комментарию, вот код, который действительно работает на меня (я предпочитаю более узкий экран):

(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)
1
ответ дан 2 December 2019 в 03:51

Другие вопросы по тегам:

Похожие вопросы: