Is it time for a rethink of the style system? It seems that the style
command and a few builtin commands manipulate a windows appearance and
behaviour but they don't do a complete job. We could generalize them and
provide a means to do more selective control with some additional commands.

Commands like Stick alter the windows sticky behaviour. Style <pattern>
Sticky does the same thing for a set of windows and also maintains a
list of patterns to apply to newly created windows.

A lot of style types do not have matching builtin commands.

How about a new command: WindowStyle? It would apply to the current
window or could be used as part of a selective command e.g.
WindowStyle Sticky
All (*Buttons*) WindowStyle Layer 5
WindowId ??? WindowStyle Iconic

The simple built-ins like Stick could be aliases e.g.
Stick On = WindowStyle Sticky
Stick Off = WindowStyle Slippery

The Style command could be aliased also e.g.
Style <pattern> ResizeOpaque = All (<pattern>) WindowStyle ResizeOpaque
Style <pattern> <style-args> = All (<pattern>) WindowStyle <style-args>

plus the pattern to apply to new windows could be written as a function
AddToFunc StyleFunction I WindowId $0 (<pattern>) WindowStyle ResizeOpaque

The StyleFunction function would be called with the newly-created
window's id as the first parameter.

Additional style commands would just add to StyleFunction in
a similar way to the way the style list build up. I think we may be able
to remove the style list altogether with this. The only problem being
the DestroyStyle command which would have to selectively remove parts of
StyleFunction! DestroyStyle * would be the same a
DestroyFunc StyleFunction.

Doing this would require moving most of the style parsing code from the
Style command to the new WindowStyle command and rewriting the simple
commands like Stick.

Benefits:
* possible to control every style on a per window basis
* extending the conditions for Next/All also extends the ability to set
  styles e.g.
`All (class=*Fvwm*) WindowStyle Sticky' is better than `style *Fvwm* Sticky'
* possible to obsolete commands like Stick in the future
* Larrys suggestion for conditions would work with this e.g.
  `Style (Condition=Terminal) Colorset 2' is aliased to
  `All (Condition=Terminal) WindowStyle Colorset 2'

Cheers,
Tim.

--
Visit the official FVWM web page at <URL:http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm-workers" in the
body of a message to [EMAIL PROTECTED]
To report problems, send mail to [EMAIL PROTECTED]

Reply via email to