Of course it can, yes. But if that’s your own consideration, then:
Next (!Visible) SomeAction
CirculateSkip is really meant as a blanket covering for missing out all conditional commands, not just one where you’ve failed to cater for a specific instance.
But that’s not preventative – it’s always going to be “after the fact” since there’s no way of checking which window has requested/receiving focus until it has got it in this case.
Aha, this is what I don’t know. It might be the major problem I’m having also in the other “focus” thread. I skimmed over the man page and is still not clear on the difference. Can you explain it for me? Thank you.
I have tried to remove CirculateSkip and use “Next” instead of “All”. It also works fine and the term never gets inputed when invisible. I’m really confused…
Finally, what does the !Overlapped comment mean? Is there a reason to prefer !Overlapped to Visible?
Well, keyboard focus refers to the window which accepts input from the keyboard. It may or may not be the currently focused window (c.f. mousefocus, or transient/modal windows). Input focus typically involves the window which the mouse pointer is in.
An example of this is using:
Focus NoWarp
to focus a window for keyboard input without warping the pointer to it.
But surely that’s correct behaviour when invisible?
Depends what you want out of it. !Visible means covered. !Overlapped means the window isn’t obscured by other windows – c.f. you’d probably want to RaiseLower anyway to obviate these conditions.
Yes, exactly what I want in a quake style term. I’m just curious why the term won’t get input when invisible, even if I change the last line of Thumbnail to
No. I want to simulate a possible case in which the invisible term can get focused and inputed. This is of course what I do not like in my future use.
What I thought was that invisible term can receive keyboard input. This causes all the complications in my first attempt of implementation. But I’m aware now that it is not the case after playing with the following experiment.
First I made the term invisible. Then type in FvwmConsole, All (quake) Focus. After that I type some words. These words will not be inputed to the term. However, if the term is not completely invisible, things differ.
The reason is Visible condition does not work while xcompmgr is running (cf. this thread) . You need to change the first line of ToggleQuakeTerminal to something like
+ I ThisWindow State 0 toggle
+ I ThisWindow (State 0) AnimatedMove +0p -100
and add your transset-df commands.
You’ll also need to toggle State 0 in the last line of FvwmAuto
Sorry but I am lost in the code …
I’d need the following 2 days of RTFM !
###################
Style quake NoTitle, Sticky, WindowListSkip, CirculateSkipIcon, \
CirculateSkip, StaysOnTop, NoHandles, BorderWidth 1
SetAnimation 20 0 .01 .03 .08 .18 .3 .45 .65 1
DestroyFunc QuakeTerminal
AddToFunc QuakeTerminal
+ I All (quake) ToggleQuakeTerminal
+ I TestRc (NoMatch) StartQuakeTerminal
Key F12 A N QuakeTerminal
Key Escape A M QuakeTerminal
DestroyFunc ToggleQuakeTerminal
AddToFunc ToggleQuakeTerminal
#+ I None (quake) StartQuakeTerminal
+ I All (quake, CurrentPage, Overlapped, !State 0) Nop
+ I TestRc (Match) All (quake) Focus
+ I TestRc (Match) All (quake) Raise
+ I TestRc (Match) Break
+ I All (quake, State 0) Move screen 0 +0p +0p
#+ I TestRc (NoMatch) ThisWindow Focus
+ I TestRc (Match) All (quake) Focus
+ I TestRc (Match) All (quake) Raise
+ I TestRc (Match) All (quake) State 0 False
+ I TestRc (Match) Break
+ I All (quake) State 0 toggle
+ I All (quake) Move +0p -1000p
+ I All (quake) PipeRead 'echo Exec exec transset-df -i $[w.id] 0.75'
+ I All (quake) Exec exec transset-df -i $[w.id] 0.75
+ I TestRc (Match) KeepRc Next (HasPointer) Focus
+ I All (quake) State 0 True
+ I UnSetEnv i
#+ I ThisWindow State 0 toggle
#+ I ThisWindow (State 0) AnimatedMove +0p -100
DestroyFunc StartQuakeTerminal
AddToFunc StartQuakeTerminal
+ I Exec exec mrxvt -g 170x14+0+0 -name quake -fg green -bg black
+ I Wait quake
+ I All (quake) State 0 True
AddToFunc RestartFunction
+ I All (quake) Move +0p -1000p
Module FvwmAuto 40 -mleave "Silent ThisWindow (quake) AnimatedMove +0p -1000p"
Is it possible to notify fvwm when a long-time job finishes in the shell of quake term? For example, I’d like to bring back the quake term when some time consuming job is done.
Seems that we can write a script to track the processes spawned by quake term using pstree and act correspondingly. Are there better ways to achieves this?
Good it works for you. Hence what is your final code you use?
I think that I will remove the auto-rolling up when you start a command. I’d rather have the quake down even if doing net for debuging.