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…
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…
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…
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.