-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Matthew Hobbs wrote: | Hi, | | I would like to have a keystroke that will move the window under focus to an | adjacent page. Any suggestions appreciated! |
I'm using some window movements from tavisos config: ##### # Name: PackWindowUp # Bound: Alt+Shift+Up When a window is active # Purpose: Interrogate all windows on the current page, find the window with an edge # closest to active window, and slide the Active window upto that edge, or # the Page edge, if no window is in the way. # # The Wrappers are required to look after the Context while we're testing # windows. Could also do it with a load of variables, but this is nicer. # # See PackWindowLeft for a description of the logic (i know it looks a little # cryptic). # # Sometimes terminals seem to need WindowRefresh, but 99% of the time it just # works, it creates a little flicker so I'll leave it out until it starts to bug # me. # # Windows are also Raised, you can disable this. # ################# DestroyFunc PackWindowUp AddToFunc PackWindowUp + I SetEnv low_w 0 + I WindowId $3 Raise + I All (CurrentPage !Iconic AcceptsFocus \ ~ !Shaded) PipeRead "test `expr $[w.y] + $[w.height]` -gt $[low_w] \ ~ -a `expr $[w.y] + $[w.height]` -lt $0 \ ~ -a \\( \\( $[w.x] -gt $1 -a $[w.x] -lt `expr $1 + $2` \\) \ ~ -o \\( $1 -gt $[w.x] -a $1 -lt `expr $[w.x] + $[w.width]` \\) \ ~ -o \\( $1 -le $[w.x] -a `expr $1 + $2` -ge `expr $[w.x] + $[w.width]` \\) \ ~ -o \\( $[w.x] -lt $1 -a `expr $[w.x] + $[w.width]` -gt `expr $1 + $2` \\) \ ~ \\) \ ~ && echo SetEnv low_w `expr $[w.y] + $[w.height]` \ ~ || echo Nop" + I WindowId $3 AnimatedMove keep $[low_w]p #+ I WindowId $3 RefreshWindow
AddToFunc PackWrapperUp I NoWindow PackWindowUp $[w.y] $[w.x] $[w.width] $[w.id]
##### # Name: PackWindowDown # Bound: Alt+Shift+Down When a window is active. # Purpose: See PackWindowUp. # ################# DestroyFunc PackWindowDown AddToFunc PackWindowDown + I SetEnv high_w $[vp.height] + I WindowId $3 Raise + I All (CurrentPage !Iconic AcceptsFocus \ ~ !Shaded) PipeRead "test $[w.y] -lt $[high_w] \ ~ -a $[w.y] -gt `expr $0 + $4` \ ~ -a \\( \\( $[w.x] -gt $1 -a $[w.x] -lt `expr $1 + $2` \\) \ ~ -o \\( $1 -gt $[w.x] -a $1 -lt `expr $[w.x] + $[w.width]` \\) \ ~ -o \\( $1 -le $[w.x] -a `expr $1 + $2` -ge `expr $[w.x] + $[w.width]` \\) \ ~ -o \\( $[w.x] -lt $1 -a `expr $[w.x] + $[w.width]` -gt `expr $1 + $2` \\) \ ~ \\) \ ~ && echo SetEnv high_w $[w.y] \ ~ || echo Nop" + I PipeRead "echo WindowId $3 AnimatedMove keep `expr $[high_w] - $4`p" #+ I WindowId $3 RefreshWindow
AddToFunc PackWrapperDown I NoWindow PackWindowDown $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]
##### # Name: PackWindowLeft # Bound: Alt+Shift+Left When a window is active # Purpose: See PackWindowUp. # # The Logic works likes this: # 1. Set Destination to the Left Edge # 2. For every window, Run these tests: # + Is the Window's Right edge further _Right_ than furthest edge seen yet? # And: + Is it's Right edge Further _Left_ than Target Windows Left edge? (ie, in the way) # Yes: # + Does the window start inside Target Window, and end below? # Or + Does it start above, and end inside? # Or + Is it the same vertical position/height/size, or start inside and end inside? # Or + Does it start above, and end below? # Yes: # This is the new Destination. # No: # Nop # No: # Nop # 3. Move to Destination. # ################# DestroyFunc PackWindowLeft AddToFunc PackWindowLeft + I SetEnv left_w 0 + I WindowId $3 Raise + I All (CurrentPage !Iconic AcceptsFocus \ ~ !Shaded) PipeRead "test `expr $[w.x] + $[w.width]` -gt $[left_w] \ ~ -a `expr $[w.x] + $[w.width]` -lt $1 \ ~ -a \\( \\( $[w.y] -gt $0 -a $[w.y] -lt `expr $0 + $4` \\) \ ~ -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt $0 \\) \ ~ -o \\( $[w.y] -ge $0 -a `expr $[w.y] + $[w.height]` -le `expr $0 + $4` \\) \ ~ -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt `expr $0 + $4` \\) \ ~ \\) \ ~ && echo SetEnv left_w `expr $[w.x] + $[w.width]` \ ~ || echo Nop" + I WindowId $3 AnimatedMove $[left_w]p keep #+ I WindowId $3 RefreshWindow
AddToFunc PackWrapperLeft I NoWindow PackWindowLeft $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]
DestroyFunc PackWindowRight AddToFunc PackWindowRight + I SetEnv right_w $[vp.width] + I WindowId $3 Raise + I All (CurrentPage !Iconic AcceptsFocus \ ~ !Shaded) PipeRead "test $[w.x] -lt $[right_w] \ ~ -a $[w.x] -gt `expr $1 + $2` \ ~ -a \\( \\( $[w.y] -gt $0 -a $[w.y] -lt `expr $0 + $4` \\) \ ~ -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt $0 \\) \ ~ -o \\( $[w.y] -ge $0 -a `expr $[w.y] + $[w.height]` -le `expr $0 + $4` \\) \ ~ -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt `expr $0 + $4` \\) \ ~ \\) \ ~ && echo SetEnv right_w $[w.x] \ ~ || echo Nop" + I PipeRead "echo WindowId $3 AnimatedMove `expr $[right_w] - $2`p keep" #+ I WindowId $3 RefreshWindow
AddToFunc PackWrapperRight I NoWindow PackWindowRight $[w.y] $[w.x] $[w.width] $[w.id] $[w.height] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux)
iD8DBQFBsCS5d1zGxPhGhFcRAh16AKDPf7Gvo6p6DDro67Ru3ewl7a+QmwCgjA+v 7zo9JtnZpQau358W+Z3XILE= =gSWe -----END PGP SIGNATURE----- -- Visit the official FVWM web page at <URL: http://www.fvwm.org/>. To unsubscribe from the list, send "unsubscribe fvwm" in the body of a message to [EMAIL PROTECTED] To report problems, send mail to [EMAIL PROTECTED]
