bug#4523: 23.1.50; Cannot set Motif Hints (Reopen of bug#4363)
Jan Djärv <[email protected]> Sat, 14 Nov 2009 19:57:26 +0100
| Newsgroups | gmane.emacs.bugs,gmane.emacs.pretest.bugs |
|---|---|
| Message-ID | <[email protected]> |
Ulrich Neumerkel skrev:
> --text follows this line--
>
> There is no way to set Motif Hints like the nodecoration hint which is
> needed to go fullscreen with the qvwm windowmanager. I need this for
> older IGEL-X-Terminals were qvwm is preinstalled.
>
> Unfortunatly Emacs still needs "manual" customization going into
> C-sources and guessing where those hints should be put. That is not
> everybody's turf. I try to avoid that myself delaying upgrades by
> years. Last time I upgraded was 2002/2003. Everytime the relevant
> files change a bit so it takes time to adjust. I wonder how other
> people do that.
>
> At least some "better defined" way as simply patching sources manually
> would be nice. Maybe there is no need to put Motif hints by default.
> But it would be very helpful to avoid any customization that goes
> beyond .emacs.el editing.
>
Motif wm hits is just a property with 5 values. Just use x-change-window-property.
(defun make-special-frame (data)
(let ((ff (make-frame '((visibility . nil)))))
(progn
(x-change-window-property "_MOTIF_WM_HINTS" data ff
"_MOTIF_WM_HINTS" 32 t)
(make-frame-visible ff))))
To make a frame without decoration:
(make-special-frame '(2 0 0 0 0))
The first value tells what to change (from /usr/include/Xm/MwmUtils.h):
#define MWM_HINTS_FUNCTIONS (1L << 0)
#define MWM_HINTS_DECORATIONS (1L << 1)
#define MWM_HINTS_INPUT_MODE (1L << 2)
#define MWM_HINTS_STATUS (1L << 3)
The third is the decorations:
#define MWM_DECOR_ALL (1L << 0)
#define MWM_DECOR_BORDER (1L << 1)
#define MWM_DECOR_RESIZEH (1L << 2)
#define MWM_DECOR_TITLE (1L << 3)
#define MWM_DECOR_MENU (1L << 4)
#define MWM_DECOR_MINIMIZE (1L << 5)
#define MWM_DECOR_MAXIMIZE (1L << 6)
Note that most wm:s just check MWM_HINTS when the window is mapped, thats why
the function creates it invisible at first.
If a frame is visible, you must (make-frame-invisble),
(x-change-window-properties...) (make-frame-visible).
We are not putting in code for old deprecated stuff. There are new and better
ways than MOTIF WM HINTS nowdays.
Jan D.