Максимизировать Emacs при запуске?(не на весь экран) - PullRequest
21 голосов
/ 14 октября 2011

Обычно я нажимаю alt-f10 (в GNU / Linux) после запуска Emacs для максимизации окна (в терминологии Emacs это фактически фрейм). Большую часть времени я нажимаю трижды, потому что я слишком рано нажимаю первый alt-f10, из-за которого вокруг минибуфера появляется мусор (ошибка отображения Emacs?)

Как я могу автоматизировать это? (Может быть с настройками Gnome или с elisp?)

Я использую emacs24 (из репозитория bzr).

Обратите внимание, что это не обычный полноэкранный режим, который я хочу получить, нажав клавишу f11.

Ответы [ 5 ]

14 голосов
/ 14 октября 2011
(defun fullscreen (&optional f)
       (interactive)
       (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
               '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
       (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
               '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)))

может работать.(Взято с здесь .)

10 голосов
/ 14 октября 2011
;; Next code works with Emacs 21.4, 22.3, 23.1, 24.3.
(when window-system
  (let (
        (px (display-pixel-width))
        (py (display-pixel-height))
        (fx (frame-char-width))
        (fy (frame-char-height))
        tx ty
        )
    ;; Next formulas discovered empiric on Windows host with default font.
    (setq tx (- (/ px fx) 7))
    (setq ty (- (/ py fy) 4))
    (setq initial-frame-alist '((top . 2) (left . 2)))
    (add-to-list 'initial-frame-alist (cons 'width tx))
    (add-to-list 'initial-frame-alist (cons 'height ty))
    ) )

Этот код сохраняет некоторое место для панели задач внизу под Windows / Gnome / KDE

Но вместо того, чтобы спрашивать, попробуйте прочитать: http://www.emacswiki.org/emacs/FullScreen

9 голосов
/ 10 сентября 2013

OSX:

В сборке Emacs Trunk для разработчиков есть функция toggle-frame-maximized, включенная в .../lisp/frame.el.Эту функцию можно добавить в after-init-hook или emacs-startup-hook или просто включить в файл .emacs, который загружается при запуске.В OSX он увеличивает ширину и высоту одним махом.


Windows XP:

Следующая команда может использоваться после команды make-frame или после Emacsгенерирует начальный кадр.

(w32-send-sys-command 61488)

OSX и Windows

Вот пример для установки исходного размера и местоположения кадра - он у меня рядомначало моего .emacs файла:

(let ((frame (selected-frame)))
  (cond
    ((eq system-type 'darwin)
      (setq ns-auto-hide-menu-bar t)
      (set-frame-position frame 0 0) ;; must come after `ns-auto-hide-menu-bar`
      (cond
        ((and
            (= 1920 (display-pixel-width))
            (= 1080 (display-pixel-height)))
          (set-frame-size frame 1895 1054 t))
        ((and
            (= 1920 (display-pixel-width))
            (= 1200 (display-pixel-height)))
          (set-frame-size frame 1895 1174 t))
        ((and
            (= 1280 (display-pixel-width))
            (= 800 (display-pixel-height)))
          (set-frame-size frame 1265 774 t))) )
    ((and
        (eq system-type 'windows-nt)
        (equal (w32-version) '(5 1 2600)))
      ;; (w32-send-sys-command #xf030)
      (set-frame-position frame 0 0)
      (cond
        ((and
            (= 1920 (display-pixel-width))
            (= 1003 (display-pixel-height)))
          (set-frame-size frame 1898 924 t))
        ((and
            (= 1920 (display-pixel-width))
            (= 1123 (display-pixel-height)))
          (set-frame-size frame 1876 1052 t))
        ((and
            (= 1280 (display-pixel-width))
            (= 723 (display-pixel-height)))
          (set-frame-size frame 1250 670 t))))
      ((and
          (eq system-type 'windows-nt)
          (equal (w32-version) '(6 1 7601)))
        (set-frame-position frame 0 0)
        (cond
          ((and
              (= 1920 (display-pixel-width))
              (= 1080 (display-pixel-height)))
            (set-frame-size frame 1890 1003 t))
          (t
            (message "Not yet contemplated.")))) ))

Вот пример того, что я использую для создания новых фреймов - контроля точного размера и местоположения:

(defun lawlist-make-frame (&optional alist)
  (let ((frame (make-frame alist)))
    (set-frame-position frame 0 0)
    (cond
      ((eq system-type 'darwin)
        (cond
          ((and
              (= 1920 (display-pixel-width))
              (= 1080 (display-pixel-height)))
            (set-frame-size frame 1895 1054 t))
          ((and
              (= 1920 (display-pixel-width))
              (= 1200 (display-pixel-height)))
            (set-frame-size frame 1895 1174 t))
          ((and
              (= 1280 (display-pixel-width))
              (= 800 (display-pixel-height)))
            (set-frame-size frame 1265 774 t))))
      ((and
          (eq system-type 'windows-nt)
          (equal (w32-version) '(5 1 2600)))
        (select-frame frame)
        (cond
          ((and
              (= 1920 (display-pixel-width))
              (= 1003 (display-pixel-height)))
            (set-frame-size frame 1898 924 t))
          ((and
              (= 1920 (display-pixel-width))
              (= 1123 (display-pixel-height)))
            (set-frame-size frame 1876 1052 t))
          ((and
              (= 1280 (display-pixel-width))
              (= 723 (display-pixel-height)))
            (set-frame-size frame 1250 670 t))))
      ((and
          (eq system-type 'windows-nt)
          (equal (w32-version) '(6 1 7601)))
        (select-frame frame)
        (cond
          ((and
              (= 1920 (display-pixel-width))
              (= 1080 (display-pixel-height)))
            (set-frame-size frame 1890 1003 t))
          (t
            (message "Not yet contemplated.")))) )))
3 голосов
/ 11 марта 2016

Включение этого в мои ~ / .emacs работает для меня (Emacs 24.5.1 в Debian GNU / Linux):

(toggle-frame-maximized)

Чтобы найти это, я проверил название команды, вызванной ярлыком M-F10, с помощью: Ch M-F10: она вернула «toggle-frame-maximized», который я просто вызываю в моих ~ / .emacs.

Другое решение, возможно, даже лучше, найдено здесь :

(add-to-list 'initial-frame-alist '(fullscreen . maximized))

2 голосов
/ 18 марта 2015

По какой-то причине x-send-client-message у меня не работал в какой-то момент (или, во всяком случае, ненадежно). По этой причине я использую это:

(defun set-maximized ()
  (interactive)
  (shell-command "wmctrl -r :ACTIVE: -badd,maximized_vert,maximized_horz"))

Для этого при запуске:

(add-hook 'window-setup-hook 'set-maximized t)
...