bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#4523: 23.1.50; Cannot set Motif Hints (Reopen of bug#4363)


From: Jan Djärv
Subject: bug#4523: 23.1.50; Cannot set Motif Hints (Reopen of bug#4363)
Date: Sat, 14 Nov 2009 19:57:26 +0100
User-agent: Thunderbird 2.0.0.23 (X11/20090817)

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.










reply via email to

[Prev in Thread] Current Thread [Next in Thread]