2013-06-06 3 views
6

У меня есть многоэкранный дисплей. Внутри emacs (GNU Emacs 24.2.1 (i386-mingw-nt6.1.7601) в Windows 7), как я могу определить количество физических экранов и вызвать что-то на разных экранах? Например, мне может понадобиться открыть новый кадр на другом экране, или мне может понадобиться переместить фрейм, в котором Emacs начинает с другого экрана.В emacs, как я могу ссылаться на физические экраны?

ответ

6

Я не уверен, если эти функции работают на Windows, но на Linux и Mac OS X, вы можете использовать:

  • x-display-screens: Количество мониторов
  • x-display-pixel-width: Текущий экран (экран, содержащий Emacs окна) ширина
  • x-display-pixel-height: высота Текущий экран
  • set-frame-width и set-frame-height: размер
  • set-frame-position: Перемещение рамки

Например, если вы хотите создать новую рамку в другом экране, вы можете сделать:

(when (and (display-graphic-p) (= (display-screens) 2)) 
    (make-frame) 
    (set-frame-position (selected-frame) 1280 0)) 

Где 1280 ширина первого экрана.

+0

Вы также можете посмотреть мои настройки https://github.com/tungd/dotfiles/blob/master/emacs/init.el#L278 – tungd

+0

Похоже, что экран x-display не работает на моем Emacs в Windows. Он возвращает «1 (# o1, # x1)», и у меня есть три экрана. Экранные экраны возвращают то же самое. – kc2001

+0

Как насчет 'x-display-pixel-width'? Если он возвращает что-то вроде общей ширины ваших экранов, это все равно будет полезно. – tungd

2

Checkout код поз-tip.el (http://www.emacswiki.org/emacs/pos-tip.el)

Он говорит, что работает в X и Windows, так что, вероятно, вы могли бы найти совместимый слой в нем.

+0

Спасибо за указатель, но мне кажется, что он использует ширину x-display-pixel-width и друзей для выполнения экранных расчетов. я вижу что-то похожее на то, что он был осведомлен о экранах Windows. – kc2001

+0

Попробовал ли он его использовать? Почему бы не установить его и не использовать сначала, чтобы узнать, работает ли он? – tkf

Смежные вопросы