XmProtocols (Motif)
ICCCMのWM_PROTOCOLSをMotifが包んだ層。ウィンドウマネージャのメッセージを普通のコールバックにしてくれたが、閉じるボックスを押すと多くのMotifプログラムが落ちた原因でもある。
素のXlibでは、アプリケーションが自分でWM_PROTOCOLSを設定し、ClientMessageイベントを仕分ける。Motifはそれを包んだ。XmAddWMProtocolCallback(shell, XmInternAtom(dpy, "WM_DELETE_WINDOW", False), on_close, data) でプロトコルを登録し、関数を結び付ける。ところがシェルの XmNdeleteResponse リソースも独自に働き、既定値の XmDESTROY は、コールバックの考えにかかわらずウィンドウを破棄した。プログラムはメインウィンドウを失うか、クラッシュした。対処法は XmDO_NOTHING を設定し、閉じる処理を自分で行うことだった。
同じ仕組みがMotif独自の拡張 _MOTIF_WM_MESSAGES も運んだ。アプリケーションは XmNmwmMenu リソースでmwmのウィンドウメニューに項目を追加でき、ユーザーが選ぶと、mwmは f.send_msg でメッセージを返した。使うプログラムはほとんどなく、他のウィンドウマネージャで理解するものはまずなかった。