WindowList and it's order

all –

So, it appears that my WindowList is getting all kinds of messed up - if i have three applications up, A, B, and C, and I start “Alt+Tab”-ing through them, I cycle,

A --> B --> C --> A --> B --> C … etc…

Which is the desired effect.

However, below is a funky state that my system gets into when/if I close/destroy one of the applications:

Problem: Applicatoins B and C are launched via Application A. Then, when i alt+tab, I want to cycle through all three applications - this works fine unless I close either B or C, and then restart B or C, at that point the Alt+Tab ALWAYS cycles like the following:

B --> A --> C --> A --> B --> A --> C --> A --> B … etc – it is no longer cycling through the entire list, it keeps going back to application A as if A were acting as a parent node in a tree, and the only way to traverse between apps B and C anymore is via A, ala:
A
/
B C

It seems to me that somehow the WindowList is getting completely hosed, but I am not sure how to fix this - anyone have any ideas? I just want to be able to cycle through the list, A --> B --> C --> A … or whatever order the windows end up in, but I don’t want to keep repeating application A every other time…

any thoughts would be great,
Thanks,
Jared

Do you mean the WindowList, or have you got alt-tab bound to a series of functions? The reason you see the behaviour you do when you close B or C down, and then go back to focusing your windows is because the stack-ring that FVWM uses is changed once a window is created. When you next switch focus, you’re taking into account this factor – along with which window last had the focus.

It’s not the windowlist that gets hosed – but rather the ordering of the stack is changed (see above). You’ll have to post your key binding for ALT TAB, and your WindowListFunc (and any-related functions that go with it), if you want specific help. (I’m interesting in what you have told WindowList to show.)

That said, assuming these windows: A, B, C are always called that – and that you only ever want focus to switch between those windows and no others, you could do something like this:

Key Tab A M FuncFF

DestroyFunc FuncFF
AddToFunc   FuncFF
+ I Next (CurrentPage, AcceptsFocus, "A|B|C") FlipFocus

It doesn’t answer your question directly – you might still want to use WindowList…

— Thomas Adam

I have no specific function overwriting the WindowList function itself.

Thomas, this is the same function that we have discussed multiple times, that simulates alt+tab, but does so with one key press, ala:

Key F22 A N FuncSwitchApplications

# where the WindowList only considers A, B, and C -- all other windows have 
# style CirculateSkip

AddToFunc FuncSwitchApplicaitons
+ I Next (!Sticky, !Iconic) SwapDesk

AddToFunc SwapDesk
+ I PipeRead `[ $[w.name] == "A" ] && echo 'GoToDesk 0 0'`
+ I PipeRead `[ $[w.name] == "B" ] && echo 'GoToDesk 0 1'`
+ I PipeRead `[ $[w.name] == "C" ] && echo 'GoToDesk 0 2'`

So, depending on who is next in the windowList, it will swap to the correct desk. At least, that is how it works, until one is closed, and then it keeps going back to the ‘launcher window’ every other time I press F22… I am quite perplexed… any thoughts would be appreciated…

thanks,
Skender

PS-> I hope your holidays were nice.

Why are we using PipeRead here? That’s a waste. :)

DestroyFunc SwapDesk
AddToFunc   SwapDesk
+ I ThisWindow (some_name) GotoDesk 0 0
+ I ThisWindow (some_other_name) GotoDesk 0 1
+ I ThisWindow (bleh) GotoDesk 0 2

You’ll need to reverse direction, then – and use Prev, once one of the windows has been closed and reopened. But I’m, tired – I’ll let you give it a shot, and get back to you on your efforts. :slight_smile:

– Thomas Adam