При компиляции с опцией M4 fvwm использует m4(1) для преобразования своих начальных данных перед грамматическим анализом. Поэтому Вы можете пользоваться макросами m4 во время своей работы. Это весьма облегчает работу на дисплеях с различными характеристиками.
Например, Вы можете задавать цвета под стать Вашему настроению. Этого можно добиться используя -m4opt. При светлом настроении используйте -m4opt -DSunny; а при темном -m4opt -DDark. Ваш файл .fvwmrc должен для этого содержать:
ifdef(`Sunny',`
StdForeColor Black
StdBackColor LightSkyBlue
HiForeColor yellow
HiBackColor PeachPuff1
PagerBackColor BlanchedAlmond ')
ifdef(`Dark',`
StdForeColor Black
StdBackColor #60a0c0
HiForeColor black
HiBackColor #c06077
PagerBackColor #5c54c0
PagerForeColor orchid
StickyForeColor Black
StickyBackColor #60c0a0 ')
В fvwm предопределены следующие символы для m4:
Число значащих бит в RGB цвете.(Равно двоичному логарифму от числа всех возможных цветов. Которое, вообще-то, отличется от числа цветов которые можно одновременно показать на экране.)
Класс Вашего изображения. Может возвращать одино из значений: StaticGray, GrayScale, StaticColor, PseudoColor, TrueColor, DirectColor, или, при невозможности определить, NonStandard.
Машина на которой выполняются клиенты.
Это просто сокращение от определения CLASS-а. Возвращает 'Yes' для *Color и 'No' для StaticGray и GrayScale.
Устанавливает путь где хранятся конфигурации для инсталяции модулей.
Строка с версией fvwm.
Высота Вашего дисплея в точках.
Пользовательский домашний каталог. Получается из переменной окружения.
Канонизированное имя хоста для выполнения приложений-клиентов (т.е. CLIENTHOST с полной квалификацией).
Строка опций используемых при компиляции. Опции разделены пробелами.
Число битовых плоскостей Вашего дисплея поддерживаемое стандартным главным окном.
Номер выпуска Вашего X-сервера. Для MIT X11R5 оно равно 5.
Проверка X-протокола низкого уровня. См. так же ProtocolRevision(3).
Переменная с именем машины на которой работает X-сервер.
Сообщает какой потомок twm работает. Для этой программы всегда должна быть равна строке "fvwm". Используется для защиты частей Вашего .twmrc файла которые fvwm не может правильно интерпретировать (типа WorkSpace) и которые используются другими twm программами.
Имя пользователя, запустившего программу. Получается из переменной окружения.
Поставщик вашего X-сервера. Например: MIT X Consortium.
Версия X-протокола высокого уровня. Смю так же ProtocolVersion(3).
Ширина Вашего дисплея в точках.
Разрешение Вашего дисплея по оси X в точках на метр.
Разрешение Вашего дисплея по оси Y в точках на метр.
Например, Sun-овский m4 предопределяет имя include, и если Вы используете это имя в Вашем .fvwmrc файле - Вам не повезло. Правильное решение этой проблемы состоит в установке кавычек вокруг слова 'include'.
Для иной интерпретации кавычек в m4 применяются опции -m4-squote и -m4-equote. Во избежание недоразумений должны быть заданы обе опции. При их задании, поправка в интерпретации макросов произойдет до обработки пользовательского .fvwmrc фаила.
Некоторые версии m4 по разному интерпретируют кавычки при включении файлов.
В SunOS 4.1.3, например, в строке "include(<<file>>)" кавычки выглядят как "<<" и ">>" вокруг имени включаемого файла. Fvwm этого не понимает.
Возможности при препроцессировании m4 зависят от компиляции определений M4.