about gimp transient

Style "gimp" RaiseTransient LowerTransient StackTransientParent

i copy this line from someone, but it does not work.

Two things:

  1. Check using FvwmIdent that the “gimp” is going to match the window’s title, or class.

  2. When using more than one style option, they’re separated by commas.

– Thomas Adam

thanks for reply.

i used FvwmIdent, found the class name is “Gimp”, resource name is “gimp”, all other(except boolean attribute) is defferent. but “Gimp” also does not work.
and the Transient attribute is all “no”… :confused:

Then it does work – but the window isn’t transient, so of course the styles
won’t be applied. Perhaps the bigger question is: What are you trying to
do?

– Thomas Adam

So if i can make those gimp windows’ transient set to ‘true’?

thanks. if can, that’s great useful to me.

How is that useful? You can’t force a window to be transient – the application decides that.

So I’ll ask again: What is it that you’re trying to do?

– Thomas Adam

for each time i edit some picture using gimp, it may open multiply windows to work, many times some other window cover them(also always serval), if i click some window belongs to gimp group, i want all those gimp windows also bring to front. if not, i must click each window to bring them front.

due to here has the transient attribute with all window(just seem by use FvwmIdent you told me). i think there has some way to set it.

thanks.

In that case, you can bind something like this to a key,
maybe:

ThisWindow Next (Gimp) Raise

Ensuring that “Gimp” matches the class of these window, or is
at least common to all of the windows. You might have to use
some wildcard attributes.

If you wanted to make it, such that it applied when you
clicked on them, then you have two options — either bind a
function to the S and T parts of the window, or use FvwmEvent
— both of which have been covered over numerous posts on
this forum.

– Thomas Adam

thanks for your mind. i do as this

Key F4 A A All (Gimp) Raise

so i counld get rid of transient problem.

thanks again.

another i made

Mouse 1 WTFS A ThisWindow (Gimp) All (Gimp) Raise

but only click title(plus frame and side of window) can works well. and now can not move a window by hold on title.

So bind a function to it instead:

Mouse 1 WTFS A MyFunc

DestroyFunc MyFunc
AddToFunc MyFunc
+ C ThisWindow TestRc (Match) All (Gimp) Raise
+ H Move

.....

– Thomas Adam

i think it is some strange, not only move, also double click title(Fvwm set it to send window to back as default) can not work. so if made a function, it’s diffcult to recovery all those function set by Fvwm.

i want do this

Mouse 1 WTFS A ThisWindow (Gimp) All (Gimp) Raise TestRc (!Match) [color=red]PassClick[/color]

but not such command. if any other command can pass the click action when window is not Gimp.

But that’s why you’d use a function — essentially, if none of the windows you click on are The Gimp, then don’t raise all of them, just do whatever you need to – this was the point of my previous post.

– Thomas Adam

I had test your function. it eat all click action on all windows. so system can not know any click had occured.

#Mouse 1 WTFS A MyFunc
#DestroyFunc MyFunc
#AddToFunc MyFunc
#+ C ThisWindow (Gimp) TestRc (Match) All (Gimp) Raise
#+ H Move

i also test your fvwmevent :laughing:

DestroyModuleConfig FE-Raise: *
*FE-Raise: PassId
*FE-Raise: Cmd Function
*FE-Raise: raise_window RaiseAllSameClass

AddToFunc I Module FvwmEvent FE-Raise

DestroyFunc RaiseAllSameClass
AddToFunc RaiseAllSameClass
[color=red]+ I ThisWindow (Gimp) All (gnome-terminal) Raise[/color]
[color=blue]#+ I WindowId $0 Raise
#+ I All (CurrentDesk, AcceptsFocus, !Transient) ThisWindow ($[w.class]) Raise[/color]

AddToFunc StartFunction

  • I Module FvwmEvent FE-Raise

the blue part(as your orginal code) will make system dead for several second and gimp exit.
the red part if i changed as “+ I ThisWindow (Gimp) All (Gimp) Raise”, the raise event will get into a loop. also till gimp exit. so i now use gnome-terminal as a test. this can work.

I wasn’t aware I had one.

That part looks OK.

This is wrong — you probably meant:

AddToFunc StartFunction I Module FvwmEvent FE-Raise

This statement is ambiguous. What this is saying is that
assuming the window has name/class/resource of Gimp – then
for All windows that match “gnome-terminal” raise them. So
assuming you have (somewhere) a window called ‘gnome-terminal’
that’s going to get matched, regardless.

Since you’re passing nothing into this function, “$0” expands
to nothing. What’s more, using $[w.class] is going to catch
you out here — have you checked that these windows you’re
wanting to raise all have the same class?

I didn’t write any of the above code. If you have sourced it
from somewhere, referencing it, would be the better option.

This is much more likely the fact that you’ve tried to merge
parts of code together that have failed. I suppose you’re
wanting to try something like this:

DestroyModuleConfig FE-Raise: *
*FE-Raise: PassId
*FE-Raise: Cmd Function
*FE-Raise: raise_window RaiseAllSameClass

DestroyFunc RaiseAllSameClass 
AddToFunc   RaiseAllSameClass
+ I All ($[w.class], !Transient, CurrentPage) ThisWindow Raise

Although this might prove to be undesirable. You might also
want to look at the “Visible” condition as well, depending on
your needs.

– Thomas Adam

and i reduce the code like this.

[code]DestroyModuleConfig FE-Raise: *
*FE-Raise: raise_window “ThisWindow (Gimp) All (gnome-terminal) MoveToPage 0 2”
AddToFunc StartFunction

  • I Module FvwmEvent FE-Raise
    [/code]

all works well, except ‘ThisWindow (Gimp) All (Gimp) Raise’

thanks so much for your explain. i get those code here
viewtopic.php?t=632&highlight=feraise