IT-словарь › Программирование › WM_COMMAND

WM_COMMAND

Программирование Svenska → Обновлено: 2026-10-18

Свойство ICCCM с командной строкой, которой запущена программа, — предназначено для перезапуска после выхода и до сих пор служит окном прямо в argv.

Свойство старше ICCCM: уже в X11R1 (1987) был XSetCommand, кладущий argv на окно верхнего уровня как список строк, разделённых NUL, а прикладная оболочка Xt ставит его сама, так что xterm, xclock и любая программа на Athena и Motif его несёт. xprop показывает WM_COMMAND(STRING) = { "xterm", "-geometry", "80x24" }. Назначение — сеансы. В первой версии ICCCM оконный менеджер слал WM_SAVE_YOURSELF через WM_PROTOCOLS, программа обновляла WM_COMMAND командой, воссоздающей её состояние (или очищала, если не могла), менеджер считывал и сохранял. Вместе с WM_CLIENT_MACHINE, нужным rsh, чтобы знать, где запускать команду, это и было всё управление сеансами.

ICCCM 2.0 объявил процедуру устаревшей в 1994 году в пользу XSMP, но оставил свойство для не научившихся новому: smproxy из xsm, dtsession из CDE и сохранение сеансов в Window Maker читают WM_COMMAND, чтобы знать, что запускать в следующий раз, а старый модуль FVWM FvwmSaveDesk писал его прямо в shell-скрипт. GTK и Qt его вообще не ставят. Остаётся побочный эффект: argv читается любым клиентом дисплея, так что пароль в командной строке виден не только в ps на вашей машине, но и в xprop на каждой, где открыт ваш дисплей.

← Назад к словарю