Как установить размер окна Emacs?
Я пытаюсь определить размер экрана, на котором я запускаю emacs, и отрегулировать размер и положение окна, в котором он запускается (я думаю, что кадр в emacs-говорить) соответственно. Я пытаюсь настроить свои .emacs, чтобы у меня всегда было окно с достаточно большим размером с верхним левым углом в левом верхнем углу экрана.
Я предполагаю, что это большой запрос для общего случая, поэтому немного сузить дело. Меня больше всего интересует GNU Emacs 22 на Windows и (Debian) Linux.
Ответы
Ответ 1
Если вы хотите изменить размер в соответствии с разрешением, вы можете сделать что-то вроде этого (регулировка предпочтительной ширины и разрешений в соответствии с вашими конкретными потребностями):
(defun set-frame-size-according-to-resolution ()
(interactive)
(if window-system
(progn
;; use 120 char wide window for largeish displays
;; and smaller 80 column windows for smaller displays
;; pick whatever numbers make sense for you
(if (> (x-display-pixel-width) 1280)
(add-to-list 'default-frame-alist (cons 'width 120))
(add-to-list 'default-frame-alist (cons 'width 80)))
;; for the height, subtract a couple hundred pixels
;; from the screen height (for panels, menubars and
;; whatnot), then divide by the height of a char to
;; get the height we want
(add-to-list 'default-frame-alist
(cons 'height (/ (- (x-display-pixel-height) 200)
(frame-char-height)))))))
(set-frame-size-according-to-resolution)
Обратите внимание, что оконная система устарела в новых версиях emacs. Подходящей заменой является (display-graphic-p)
. См. этот ответ на вопрос Как определить, что emacs находится в терминальном режиме? для получения более подробной информации,
Ответ 2
У меня есть следующее в .emacs
:
(if (window-system)
(set-frame-height (selected-frame) 60))
Вы также можете посмотреть функции set-frame-size
, set-frame-position
и set-frame-width
. Используйте C-h f
(aka M-x describe-function
), чтобы открыть подробную документацию.
Я не уверен, есть ли способ вычислить максимальную высоту/ширину кадра в текущей среде окон.
Ответ 3
Взято из: http://www.gnu.org/software/emacs/windows/old/faq4.html
(setq default-frame-alist
'((top . 200) (left . 400)
(width . 80) (height . 40)
(cursor-color . "white")
(cursor-type . box)
(foreground-color . "yellow")
(background-color . "black")
(font . "-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1")))
(setq initial-frame-alist '((top . 10) (left . 30)))
Первый параметр применяется ко всем кадрам emacs, включая первый, который появляется при запуске. Второй параметр добавляет дополнительные атрибуты к первому кадру. Это потому, что иногда приятно знать исходный фрейм, в который вы запускаете emacs.
Ответ 4
Самый простой способ, который я нашел для этого в среде X-Window, - это ресурсы X. Соответствующая часть моих .Xdefault выглядит следующим образом:
Emacs.geometry: 80x70
Вы можете суффиктировать его с координатами местоположения + 0 + 0, чтобы заставить его в верхнем левом углу вашего дисплея. (причина, по которой я этого не делаю, - это то, что я иногда создаю новые кадры, и это путает вещи, если они появляются в том же месте, что и предыдущий)
В соответствии с руководством
Ответ 5
Попробуйте добавить следующий код в .emacs
(add-to-list 'default-frame-alist '(height . 24))
(add-to-list 'default-frame-alist '(width . 80))
Ответ 6
Вы также можете использовать параметр -geometry при запуске emacs: emacs -geometry 80x60+20+30
даст вам окно шириной 80 символов, высоту 60 строк, верхний левый угол 20 пикселей вправо и 30 пикселей вниз от верхнего левого угла фона.
Ответ 7
На ubuntu do:
(defun toggle-fullscreen ()
(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))
)
(toggle-fullscreen)
Ответ 8
В окнах вы можете сделать максимальную рамку emacs с помощью этой функции:
(defun w32-maximize-frame ()
"Maximize the current frame"
(interactive)
(w32-send-sys-command 61488))
Ответ 9
(setq initial-frame-alist
(append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
initial-frame-alist))
(setq default-frame-alist
(append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
default-frame-alist))
Ответ 10
(defun set-frame-size-according-to-resolution ()
(interactive)
(if window-system
(progn
;; use 120 char wide window for largeish displays
;; and smaller 80 column windows for smaller displays
;; pick whatever numbers make sense for you
(if (> (x-display-pixel-width) 1280)
(add-to-list 'default-frame-alist (cons 'width 120))
(add-to-list 'default-frame-alist (cons 'width 80)))
;; for the height, subtract a couple hundred pixels
;; from the screen height (for panels, menubars and
;; whatnot), then divide by the height of a char to
;; get the height we want
(add-to-list 'default-frame-alist
(cons 'height (/ (- (x-display-pixel-height) 200)
(frame-char-height)))))))
(set-frame-size-according-to-resolution)
Я предпочитаю настройки Брайана Окли. Однако 'height не работает должным образом в моем GNU Emacs 24.1.1.