Léxico de TI › Programação › WM_COMMAND

WM_COMMAND

Programação Svenska → Atualizado: 2026-10-10

A propriedade do ICCCM com a linha de comando usada para iniciar um programa, pensada para reiniciá-lo após o logout, e ainda hoje uma janela aberta direto para o argv.

A propriedade é anterior ao ICCCM: o X11R1, em 1987, já tinha o XSetCommand, que coloca o argv na janela de nível superior como uma lista de strings separadas por NUL, e o shell de aplicação do Xt a define sozinho, de modo que o xterm, o xclock e todo programa Athena e Motif a carregam. O xprop mostra WM_COMMAND(STRING) = { "xterm", "-geometry", "80x24" }. O objetivo eram as sessões. Na primeira versão do ICCCM, o gerenciador de janelas enviava WM_SAVE_YOURSELF por meio do WM_PROTOCOLS, o programa atualizava o WM_COMMAND com um comando capaz de recriar seu estado atual, ou o esvaziava se não conseguisse, e o gerenciador o lia e o guardava. Junto com o WM_CLIENT_MACHINE, que originalmente servia para o rsh saber em qual máquina executar o comando, isso era todo o gerenciamento de sessões.

O ICCCM 2.0 tornou o procedimento obsoleto em 1994 em favor do XSMP, mas manteve a propriedade para os programas que nunca aprenderam o jeito novo: o smproxy do xsm, o dtsession do CDE e o salvamento de sessão do Window Maker leem o WM_COMMAND para anotar o que iniciar da próxima vez, e o antigo módulo FvwmSaveDesk do FVWM o escrevia direto num script de shell. GTK e Qt nem chegam a defini-lo. O que sobra é o efeito colateral: o argv fica legível por todos os clientes do display, de modo que uma senha na linha de comando aparece não só no ps da sua máquina, mas no xprop de qualquer máquina que tenha o display à frente.

← Voltar ao léxico