(Feel free to change this file as things get done) Proposal for changing the way styles are done enabling per window styles ======================================================================== The final objective of this proposal is to have a WindowStyle command that understands all the current Style command options but operates on a single window. Minor objectives are: *) The Style command would share the same pattern matching as the ThisWindow command, any enhancements (e.g. "Class==XXX") will apply to both. *) Remove the style list management and replace it by reusing the function list management code (some additions will have to be provided to allow removing lines from a function) *) Simplify some commands (e.g. Sticky) to be a wrapper to a WindowStyle command WindowStyle Command usage: WindowStyle is On/Off, True/False, for on/off flags (flag prefix '!' may be used instead of setting Off, like !Sticky) is number for numeric flags is a string for all other types of flag Not supplying setting is equivalent to "True" for binary flags, 0 for numeric flags, "" for others. on/off flags: IconWindow, Title, TitleAtTop, StippledTitle, ResizeHandles, WindowListSkip, CirculateSkip, Sticky, StartIconic etc. numeric flags: BorderWidth, StartsOnDesk, StartsOnPage etc. string flags: Icon, MiniIcon etc. (Note that these aren't exact copies of the style flags e.g "Style Slippery" is "WindowStyle Sticky Off". This should make it easier to write the WindowStyle command at the expense of complicating the final Style command replacement) Doing all this in one go will probably introduce a lot of bugs for a long time so I'm proposing a step by step approach to make it less traumatic: *) Fill out the above usage so we can agree on the complete syntax before we start coding *) Create a new style flag: X with on/off states. *) Modify FvwmIdent to show the X flag. (or make it visible on the title somehow) *) Write a WindowStyle command that only takes two args: X On/Off that sets/clears the X flag on the current window. *) Test it with "Pick WindowStyle X On" and "All WindowStyle X Off" *) Write a SetOneStyle command that is effectively AddToFunc SetOneStyle + I AddToFunc StyleFunction I ThisWindow ($0) WindowStyle $1 $2 + I All StyleFunction *) Test it with "SetOneStyle X On" etc *) Write a DumpFunction command to print out StyleFunction *) Make sure StyleFunction looks like: + I ThisWindow (