Hi, It is several Maximize function in Fvwm-Crystal. When a new window is opened, a SetEnv made a variable with its window id and its maximized state. 2 temporary files are also created, one with the window width, the other with its height. I done this because I found no other to do what I want and this to survive a restart. May be it is simpler solution, but I didn't find it if it exist.
When a given Maximize function is called, I want the window to go in that state. Only the SetEnv is updated. If the same Maximize function is called 2 consecutive times, I want the window to return in its original state and at its original location. The 2 temporary files are used to get the original size. It is a wrapper function: DestroyFunc Window-Resize AddToFunc Window-Resize + I Test (EnvMatch CurrentWindowState_$[w.id] "$0") NS-Default + I TestRc (NoMatch) NS-"$0" which is called by Window-Resize argument where argument can be one of Maximize Minimize Default A100 H100 V100 VHgrow Hgrow Vgrow The function that return to the original size is: DestroyFunc NS-Default AddToFunc NS-Default + I Maximize $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]] + I SetEnv CurrentWindowState_$[w.id] Default And the other functions look like: DestroyFunc NS-Maximize AddToFunc NS-Maximize + I Maximize True 100 100 + I SetEnv CurrentWindowState_$[w.id] Maximize DestroyFunc NS-Minimize AddToFunc NS-Minimize + I ResizeMaximize direction East 200p 60p + I SetEnv CurrentWindowState_$[w.id] Minimize It is also the Fullscreen function that is called directly, and when quitting the full screen style, NS-Default is called directly. If I open a new window, place it in the middle of the screen and do With NS-Minimize the window get very small and go to its left corner. I try other direction like West, and to add fixeddirection, but I was not able to get it to minimize around its right corner, which I would prefer. Beside that, NS-Maximize -> NS-Minimize -> NS-Minimize work as expected and described above. Another issue is with the FullScreen function. When returning to the normal state, NS-Default is called with: DestroyFunc Fullscreen AddToFunc Fullscreen + I ThisWindow (State 19, !FvwmButtons, !MPlayer) Fullscreen-Stop + I TestRc (NoMatch) ThisWindow (!State 19, !FvwmButtons, !MPlayer) Fullscreen-Start AddToFunc FullScreen-Stop snip + I NS-Default Normally, it work just fine and the window is restored to its original size and location. But sometime after a restart, only the window borders and title style are restored and the window remain in its full maximized state. When this append, I can call FulScreen several times, the window never return to its original size and location. I done some experiment. If I run WindowID id FullScrenn-Stop the problem is the same. If I change NS-Default to + I Maximize False $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]] the problem is the same. If I change it to + I Maximize True $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]] I get the original size, but the window is always at the top left border of the screen, that even with a newly opened window or when restoring NS-Default from another Maximize function than FullScreen. And I want the location to be restored too. At restart, it is a fullscreen recover function that apply again the styles to the maximized windows: DestroyFunc Fullscreen-Recover AddToFunc Fullscreen-Recover + I WindowStyle !Title, !Borders, !Handles, Iconifiable, ResizeHintOverride + I UpdateStyles + I WindowStyle State 19 + I WindowStyle State 20 + I Maximize ewmhiwa True 100 100 + I WindowStyle !Maximizable, FixedSize + I UpdateStyles DestroyFunc RecoverFullscreen AddToFunc RecoverFullscreen PipeRead 'for i in $[infostore.TmpDirectory]/fullscreen.19.*; do wid=`basename "$i" | awk --field-separator . \'{print $$3}\'`; echo "+ I WindowId ${wid} Fullscreen-Recover"; done' AddToFunc StartFunction I Schedule 1000 RecoverFullscreen Is it possible to insure the correct location will be restored after a restart and to not use more SetEnv or temporary files for that? Best, Dominique -- "We have the heroes we deserve."