On 18 Dec, Dominik Vogt wrote: > In my eyes, implementing contitional styles breaks up into three > things: features, performance and design of the code. Here are my > thoughts.
I made a stab at some sort of syntactical suggestion for this kind of feature right after 2.4 was released (ie, when fvwm2 was no longer in "feature freeze"). In fact, I had started writing some code to implement it. I received zero responses from my message (sent on 7-Aug-2001), so I figured that there was no interest in this at the current time, so I abandoned the work that I had started. I hope Dominick fares better. In case you were wondering, I include my original message below. > Date: Tue, 7 Aug 2001 08:24:15 -0400 (EDT) > From: Larry Gensch <[EMAIL PROTECTED]> > Reply-To: Larry Gensch <[EMAIL PROTECTED]> > Subject: While we are discussing new features...! > To: fvwm-workers <fvwm-workers@fvwm.org> > MIME-Version: 1.0 > Content-Type: TEXT/plain; charset=us-ascii > X-Status: > X-Keywords: > Status: RO > I've had a desire for some time for an improved syntax for matching > windows using the Style, Next, Current, etc. commands. > Right now, I can say: > Next ("xterm") Focus > I can even use wildcards: > Next ("*term*") Focus > This is all well and good when your terminal windows all have "term" > somewhere in their name/iconname/class/resource. > However, I have a few applications that give terminal windows: > Powershell > Konsole > xterm > gnome-terminal > There isn't one wildcard expression that will capture all of those. > Add to this the ability of some applications to change their window > title due to state (xterm has an escape sequence that most terminal > windows accept, Netscape is another application that comes to mind > that does this), and it gets difficult to map a "hot key" that will > traverse through a related set of windows. > Do you think it might be a good time now to add some functionality to > the window matching feature to allow for alternates and/or more > specific matching? > My thought is that we could create "conditions" in a way similar to > that of Functions, Menus, Decors, etc: > DestroyCondition "ConditionName" > AddToCondition "ConditionName" > + ConditionTerm ConditionPhrase > + ConditionTerm ConditionPhrase > Each condition line is parsed one at a time. At first, the condition > will select no windows, and each successive line will narrow or widen > the windows selected. > ConditionTerm may be: > All Select all windows > Widen Term Add to the selected windows those that match > the Term (boolean OR) > Narrow Term Restrict the currently selected windows to > those that match the ConditionPhrase (boolean > AND) > Term may be one of the following: > WindowName="xxx" Wildcard match on window name > IconName="xxx" Wildcard match on icon name > Resource="xxx" Wildcard match on resource name > Class="xxx" Wildcard match on window class > Match="xxx" Wildcard match on title, icon, resource, or > class > CirculateHit Override CirculateSkip Style attribute > CirculateHitIcon Override CirculateSkipIcon Style attribute > CirculateHitShaded Override CirculateSkipshaded Style attribute > CurrentDesk All windows on current desktop > CurrentPage All windows on current page and desktop > CurrentPageAnyDesk All windows on current page on any desktop > Iconic All windows that are iconified > Layer[=n] All windows on layer "n" (defaults to layer of > currently focused window) > Maximized All maximized windows > PlacedByButton3 True if last interative move ended with button 3 > Raised All windows that are raised > Shaded All shaded windows > Sticky All sticky windows > Transient All transient windows > Visible All windows that are visible > Any Term can be negated by prefixing with "!": > + Narrow !WindowName="*Netscape*" > This would narrow the selection to windows that do NOT have "Netscape" > within their window names. > The Syntax to use these conditions could be something like: > DestroyCondition "Terminal" > AddToCondition "Terminal" > + Widen Resource="XTerm" # xterm > + Widen Resource="Powershell" # powershell > + Widen Resource="Konsole" # konsole > + Widen Resource="Terminal" # gnome-terminal > DestroyFunc "CycleTerminals" > AddToFunc "CycleTerminals" \ > "I" Next (Condition=Terminal) Focus > + "I" None (Condition=Terminal) Exec powershell > This example would cycle through all my terminal windows or, if no > terminal window was found, would spawn a new powershell. > DestroyFunc "IconifyTerminals" > AddToFunc "IconifyTerminals" \ > "I" All (Condition=Terminal) Iconify 1 > This example also seems to be able to produce the If/Then/Else logic > that has been discussed on this list (although there may be hidden > caveats here!). > Not only is this useful for cycling through windows, but it can be > used to group Style attributes to a common set of windows: > Style Condition=Terminal some-special-styles-for-term-windows > I've been sitting on this idea for a while (ever since 2.3 was > originally announced to be in "feature freeze" quite a while ago), and > figured that this might be a good time to make this suggestion. -- Larry Gensch [EMAIL PROTECTED] Working for COMPAQ for over a twentieth of a century -- 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]