[
Thread Prev][
Thread Next] >
Date Index
>
Thread Index
Re: [wmx] Patch for no window decorations
lcommons -
Wed May 23 21:42:19 2001
For what it's worth, I used 'xnodecor', and don't recall
haveing any problem getting it to work. I have it set up
to park a clock in the top right, and the battery monitor
in the bottom right; works like a charm.
That's not to say that this solution might not work
also....
--
Mr. Lauren Commons
"Math will still be there when the
snow melts." -
Calvin & Hobbes
>
> Greetings,
>
> I am a recent convert to wmx, I just subscribed to the list and this is my
> first post.
>
> One of the things in the documentation is that one can use 'xnodecor' to
> prevent the window manager from putting borders on windows such as clocks.
> Once I finally found it, I had no luck ever getting it to work. I simply
> wanted my borderless Eterms and my gkrellm to have no borders.
>
> Simple solution: make windows with the MWM decorations hint set to 0 be
> treated as shaped/transient windows, so wmx won't add a border. This is
> what the code for Eterm sets to remove borders, and it appears to work for
> gkrellm too. Below is a patch which adds a noDecorations check to
> Client.C, and modifies isTransient and isShaped to call it.
>
> It works for my configuration, and it may be useful for someone else...
>
> -Scott
>
> diff -c wmx-6/Client.C wmx-6.new/Client.C
> *** wmx-6/Client.C Fri May 12 02:40:20 2000
> --- wmx-6.new/Client.C Wed May 23 11:28:30 2001
> ***************
> *** 9,18 ****
> #include <X11/Xmu/Atoms.h>
> #endif
>
> - #if CONFIG_GNOME_COMPLIANCE != False
> // needed this to be able to use CARD32
> #include <X11/Xmd.h>
> ! #endif
>
> const char *const Client::m_defaultLabel = "incognito";
>
> --- 9,28 ----
> #include <X11/Xmu/Atoms.h>
> #endif
>
> // needed this to be able to use CARD32
> #include <X11/Xmd.h>
> !
> !
> ! typedef struct _mwmhints {
> ! CARD32 flags;
> ! CARD32 functions;
> ! CARD32 decorations;
> ! INT32 input_mode;
> ! CARD32 status;
> ! } MWMHints;
> !
> ! #define MWM_HINT_LEN (sizeof(MWMHints) / sizeof(INT32))
> !
>
> const char *const Client::m_defaultLabel = "incognito";
>
> ***************
> *** 1307,1309 ****
> --- 1317,1343 ----
>
> }
> #endif
> +
> + Boolean Client::noDecorations() {
> + Boolean ret = False;
> + Atom type_return;
> + int format_return;
> + unsigned long nitems, bytes_after;
> + MWMHints *mwmhints;
> + Atom prop = None;
> +
> + prop = XInternAtom(display(), "_MOTIF_WM_HINTS", True);
> + if(prop == None)
> + return(ret);
> +
> + if(XGetWindowProperty(display(), m_window, prop,
> + 0, MWM_HINT_LEN, False, AnyPropertyType, &type_return, &format_return,
> + &nitems, &bytes_after, (unsigned char**)&mwmhints) == Success)
> + {
> + if(nitems == MWM_HINT_LEN)
> + ret = True;
> + XFree((unsigned char*)mwmhints);
> + }
> + return(ret);
> + }
> +
> diff -c wmx-6/Client.h wmx-6.new/Client.h
> *** wmx-6/Client.h Fri May 12 02:40:20 2000
> --- wmx-6.new/Client.h Wed May 23 11:28:00 2001
> ***************
> *** 50,56 ****
> Boolean isWithdrawn() { return (m_state == WithdrawnState); }
> Boolean isNormal() { return (m_state == NormalState); }
> Boolean isKilled() { return (m_window == None); }
> ! Boolean isTransient() { return ((m_transient != None)||(m_shaped)); }
> Boolean isSticky() { return m_sticky; }
> Window transientFor() { return m_transient; }
> #ifdef CONFIG_USE_WINDOW_GROUPS
> --- 50,56 ----
> Boolean isWithdrawn() { return (m_state == WithdrawnState); }
> Boolean isNormal() { return (m_state == NormalState); }
> Boolean isKilled() { return (m_window == None); }
> ! Boolean isTransient() { return ((m_transient != None)||isShaped()); }
> Boolean isSticky() { return m_sticky; }
> Window transientFor() { return m_transient; }
> #ifdef CONFIG_USE_WINDOW_GROUPS
> ***************
> *** 58,64 ****
> Boolean isGroupParent() { return m_window == m_groupParent; }
> #endif
> Boolean isFixedSize() { return m_fixedSize; }
> ! Boolean isShaped() { return m_shaped; }
>
> const char *label() { return m_label; }
> const char *name() { return m_name; }
> --- 58,65 ----
> Boolean isGroupParent() { return m_window == m_groupParent; }
> #endif
> Boolean isFixedSize() { return m_fixedSize; }
> ! Boolean isShaped() { return(m_shaped || noDecorations()); }
> ! Boolean noDecorations();
>
> const char *label() { return m_label; }
> const char *name() { return m_name; }
>
Next: