42.25 Системы окон

Emacs работает с несколькими системами окон, в первую очередь с X Window System. И Emacs, и X используют термин «окно», но используют его по-разному. Фрейм Emacs — это одно окно с точки зрения X; отдельные окна Emacs не известны X вовсе.

Переменная: window-system

Эта терминальная переменная сообщает программам Lisp, какую систему окон Emacs использует для отображения фрейма. Возможные значения:

x

Emacs отображает фрейм с помощью X.

w32

Emacs отображает фрейм с помощью нативного GUI MS-Windows.

ns

Emacs отображает фрейм с помощью интерфейса Nextstep (используется в GNUstep и macOS).

pc

Emacs отображает фрейм с помощью прямых записей экрана MS-DOS.

haiku

Emacs отображает фрейм с помощью Application Kit на Haiku.

pgtk

Emacs отображает фрейм с помощью чистых возможностей GTK.

android

Emacs отображает фрейм на Android.

nil

Emacs отображает фрейм в терминале, основанном на символах.

Переменная: initial-window-system

Эта переменная хранит значение window-system, используемое для первого фрейма, созданного Emacs при запуске. (Когда Emacs вызывается как демон, он не создает никаких начальных фреймов, поэтому initial-window-system равен nil, за исключением MS-Windows, где он по-прежнему w32. См. daemon в Руководство GNU Emacs.)

Функция: window-system &optional frame

Эта функция возвращает символ, имя которого указывает, какая система окон используется для отображения frame (по умолчанию — текущий выбранный фрейм). Список возможных возвращаемых символов совпадает с тем, что описано для переменной window-system выше.

Не используйте window-system и initial-window-system в качестве предикатов или булевых флагов, если вы хотите написать код, который по-разному работает в текстовых терминалах и графических дисплеях. Это связано с тем, что window-system не является хорошим индикатором возможностей Emacs для данного типа дисплея. Вместо этого используйте display-graphic-p или любой другой предикат display-*-p, описанный в Тестирование функций дисплея.