Shading Windows using $[func.context]

[color=blue]
–> This was split from here:

viewtopic.php?t=440
[/color]

Hi,

its a real nice config. BTW, in some of the screenshots, the fvwmindent window is rolled on to right (or left). Can u please tell me how to achieve this

girish

bla bla bla bla yea yeah …

TitleAtLeft or TitleAtBottom or TitleRight … bla bla bla …

The other option (without changing the title location) is to use a window shade function:

DestroyFunc FuncFvwmResizeOrRaiseOrShade
AddToFunc   FuncFvwmResizeOrRaiseOrShade
+ H     Resize $0
+ M     Resize $0
+ C     Raise
+ D     WindowShade $[func.context]

The thing to realise here is that:

WindowShade $[func.context]

Is the key here. Essentially what happens is the window will shade in the given direction, depending on which edge I doube-click on the window. So for instance, double-clicking on the left edge, shades the window to the left. Double-clicking in the top-left corner shades it diagonally in that direction. Double-clicking a shade window restores it.

Finally, I have that function bound thus:

Mouse 1         SF      A       FuncFvwmResizeOrRaiseOrShade Maximize

Have fun. :slight_smile:

– Thomas Adam

thanks TA and mascanho,

that really helps.

Is it possible to change the title position depending on the context as well. The reason I need is, I am setting one particular title position and when shaded in the other direction, all I get is a single border. It will be nice if the function can revert back when unshaded.

thanks in advance and sorry for the newbi questions

-Girish

How about something like this:

DestroyFunc FuncShadeMe
AddToFunc FuncShadeMe                                                           
+ I PipeRead `case $[func.context] in "t") \
echo 'ThisWindow \(!Shaded\) WindowStyle TitleAtTop'; \
echo WindowShade toggle;; \
"[") echo 'ThisWindow \(!Shaded\) WindowStyle TitleAtLeft' && echo WindowShade [;; \
"]") echo 'ThisWindow \(!Shaded\) WindowStyle TitleAtRight' && echo WindowShade ];; \
"-") echo 'ThisWindow \(!Shaded\) WindowStyle TitleAtTop' && echo WindowShade -;; \
"_") echo 'ThisWindow \(!Shaded\) WindowStyle TitleAtBottom' && echo WindowShade _;;esac`

I have that bound to the same function:

DestroyFunc FuncFvwmResizeOrRaiseOrShade
AddToFunc   FuncFvwmResizeOrRaiseOrShade
+ H     Resize $0
+ M     Resize $0
+ C     Raise
+ D     WindowShade $[func.context]

except that I’ve changed it such that it now reads:

DestroyFunc FuncFvwmResizeOrRaiseOrShade
AddToFunc   FuncFvwmResizeOrRaiseOrShade
+ H     Resize $0
+ M     Resize $0
+ C     Raise
+ D     FuncShadeMe

Essentially, clicking on either window border will move the titlebar and shade it – clicking on the titlebar will restore the titlebar to the top of the window and shade/unshade it.

– Thomas Adam

Thanks very much for that TA, it works perfectly. I just had to make one simple change in the function (4th line), changed

echo 'ThisWindow \(!Shaded\) WindowStyle TitleAtTop'; \

to

echo 'ThisWindow \(Shaded\) WindowStyle TitleAtTop'; \

as the function was not changing the title bar position on unshading the first time.

thanks again

Girish