Thomas Adam wrote: > Let's see what I notice first of all: > > # start several pagers > AddToFunc StartFunction > + I GotoDesk 0 0 > + I FvwmPager minipager 0 11 > + I Wait minipager > > + I GotoDesk 0 0 > + I FvwmPager 0 3 > + I Wait FvwmPager > > + I GotoDesk 0 1 > + I FvwmPager 0 3 > + I Wait FvwmPager > > ... etc., etc. You seem to have not heeded my very original advise to you > regarding *why* the above is problematic. It doesn't have anything to do > with your problem, BTW, it's just mildly frustrating that you're asking for > help and not doing anything with the advise you're given.
If you speak about the wait function: I *tried* to avoid the wait function. I wrote another solution using StartsOnDesktop instead of the wait function. The result was that fvwm did not keep the current desk + page anymore after I restarted it using this key binding: > Key Pause A CM Restart After each restart, fvwm showed a random desktop and page. Using the wait function, after a restart, fvwm shows exactly this desktop and page that was shown before the restart. This is the reason why I still use the wait function. So, I do not ignore some advices of you. I just found out that not every advise works for me and the fact that I did not have the time to write you that some advice did not work because it has unwanted side effects makes you think that I just ignore your advices. (When I started learning fvwm, there where a lot of problems I was faced with, so I had to assign priorities even within my littly project "learning fvwm", and justifying why I anyway need the wait function had a low priority, because this construction site at least worked for me without problems.) Another advise of you is using the latest version of fvwm. I use an experimental Linux system to test the problems at the latest fvwm 2.5.31. It was not so easy to find out how to update the "2.5.30" to a "2.5.31", but finally I got the result after finding out in the hard way that I need to install "libx11-dev", "libxt-dev" and "libgtkglext1-dev" to get this package compiled and installed. There is no tutorial in the web that explains such kind of stuff. I had to read the error messages, guess the problems, made an odyssey of trial and error and finally I had a solution that cost some hours of hard work and looks as simple as installing three lousy packages: That is to say "libx11-dev", "libxt-dev" and "libgtkglext1-dev". But: Testing something at experimental Linux systems is one thing. The other thing is that I have to work with a stable Linux system. And this is currently Debian Linux Lenny with fvwm "2.5.26", and this has to work until another Linux system with newer components becomes stable and I get the time to customize it. So, also here, it appears that I ignore an advise of you (using the latest version of fvwm), but doing this is simply a risk that I cannot take. All I can do is making a compromise and test some problems at my late-breaking test system with the newest fvwm before I post the problem to the fvwm mailing list. > Without your entire config present, I can't offer an explanation as to why > you get the results you do -- it might very well be that the pager is > closing, but that's different from crashing. You don't need my entire config. I reduced it and the pager still disappears (to avoid the term "crash)". I posted all the config you need to get the minipager disappeared. What I could do is to remove the second pager: This one that shows 4 desktops at the same time. If still the remaining minipager disappears, then it would show that the other pager does not have something to do with the bug that I found. Now, I can do these things: 1.) Remove the second pager and prove that the remaining minipager still disappears, just using this minimum set of config files that I will post then. 2.) Try out your suggestions about using FvwmButtons, KillModule, Piperead and so on. This will cost me some extra hours, but if this gives me a more clean fvwm configuration that still satisfies my requirements, then I could spend these hours, learn something and improve the quality of my fvwm config files. > So by this point, for each of your defined desks, we have a separate pager > per *page*. Meanwhile, there's only one instance of your minipager running, > it's just sticky. Fine. But if it closes, then it closes completely and > you'll never see it again. Yeah, but, it is not planned that it closes. It is to run until I finish the fvwm session and shut down the computer. > If it crashed you would get a corefile -- I > promise you that. I still do not know if my system is able to generate a core file. The last core file that I saw was sometime around the year 2000 and this was not a Linux system. > So I suspect something is closing it. But, what could it be? > I don't know what, I *might* be able to tell from looking at > the rest of your configs, No. The rest is irrelevant. I removed the rest, restarted the system and reproduced the bug. My fvwm was completely naked, only using these 3 config files that I posted, without any comfort. > and even > an ~/.xsession-error log, if FVWM ever printed anything there. Good idea. If I find something useful in this file, then I will post it. > But the minipager there is a gratuitous "hack" for what is simply a desk > chooser -- something you can use FvwmButtons for -- and this is ultimately > what you *should* be doing. Here: > > DestroyModuleConfig foo:* > *foo: Columns x > *foo: Rows y > *foo: (1x1, Title z, Action (Mouse 1) GotoDesk z) A simple desk chooser. This is what I'm looking for. And it is to highlight the current desk and print a number at each desk. As soon as I have time, I will try out your foo thing (using FvwmButtons to create an instance with the name "foo" I suppose). If this thing would solve my needs, then I could stop wasting my time proving that FvwmPager is buggy... > ... where: x, y and z, are calculated from $[pages.nx] $[pages.ny], etc. > That's an exercise best left to you to work out -- hint: PipeRead is your > friend here and a simple for(( .....)) loop in sh. > > Now -- the part that makes this more interesting is making your requirement > of seeing only four desks per desk for which you're currently on. Well, > here's one way of doing it using FvwmEvent: > > DestroyModuleConfig foo2:* > *foo2: new_desk SomeFunc > > AddToFunc StartFunction I Module FvwmEvent foo2 > > DestroyFunc SomeFunc > AddToFunc SomeFunc > + I KillModule FvwmPager some_alias > + I PipeRead `[[ $[desk.n] -le 3 ]] && echo \ > "Module FvwmPager some_alias 0 3" || > [[ $[desk.n] -gt 3 ]] && [[ $[desk.n] -le 7 ]] && \ > echo "Module FvwmPager some_alias 4 7"` > > ... etc., etc. Note that I'd use a simple modulo calculation to make this > easier here. > > Now -- the interesting part here is that if you made this pager sticky -- > you could then also selectively work out within a given range of a desk you > were on, whether you needed to kill the pager or not -- reducing the need to > start it up again each time. But that's just showing off... :) You think that killing and restarting applications is better than using the wait function? I'm indetermined, but if you think so, I could give it a try. At first sight, it looks good. Perhaps I should post the side effects if I find some instead of dismissing the whole solution without posting any reason about it, so you cannot easily blame me for ignoring your advises... Michael