Максимизировать Emacs при запуске? (не полный экран)
Обычно для меня нажать alt-f10 (в GNU/Linux) после запуска Emacs для максимизации окна (в терминологии Emacs это фактически кадр). Большую часть времени я нажимаю три раза, потому что мне было слишком рано нажимать первый альт-f10, что заставляет мусор появляться вокруг минибуфера (ошибка дисплея Emacs?)
Как я могу автоматизировать это? (Может быть, с настройками Gnome или с elisp?)
Я использую emacs24 (из bzr repo).
Обратите внимание, что это не обычный полноэкранный режим, который я хочу получить, нажав f11.
Ответы
Ответ 1
(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)))
может работать. (Взято из здесь.)
Ответ 2
;; 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
Ответ 3
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)
ОС и 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.")))) )))
Ответ 4
Включение этого в мои файлы ~/.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))
Ответ 5
По какой-то причине 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)