Re: Tracking flag changes from modules

2006-08-23 Thread Jacob Bachmeyer

Dominik Vogt wrote:

On Tue, Aug 08, 2006 at 04:31:00PM +0100, Thomas Adam wrote:
  

On Tue, 8 Aug 2006 16:18:41 +0100
seventh guardian [EMAIL PROTECTED] wrote:

On 8/8/06, Dominik Vogt [EMAIL PROTECTED] wrote:
  

As a way to provide backward compatibility and minimizing the
effects of the above VISIBLE changes there could be provided a
command that the modules could use to request an alias. This way
the module would parse the command line alias options and request
the attribution of an alias. So old configs would still work
properly!! :)
  

Strange thing now looking through module_interface.c: there is already
a string array called pipeAlias!! Is it possible that the
infrastructure is already there??


YES! Strangely enough, the infrastructure is there!! You can actually
send commands to specific aliased modules! Just use the module alias
instead of the name, and voila!

Except pipeAlias is never properly written. It seems that someone
started the job but didn't get to finish it.
  

The code is as good as it could be at the time Mikhael wrote it.
It's not much more than a hack that tries to guess whether the
first argument of a module was intended to be an alias (i.e. not an
option etc.).  It fails in a number of cases, but we can not do much
better without rewriting the interface of some modules.


So what could be the solution to the initial problem without any kind
of rewrite?
  

There isn't, I'm afraid.  I can perfectly understand and see the logic behind
why the flags should be sent in the packet information -- however in order
for there to be a solution to what you're proposing, it is going to mean a
rewrite most likely.  This was discussed here on this list a few months ago.
If you like I will dig through the on-line archives for you.



But there is a soulution.  Extend the config win packet with a
flag that indicated whether a window can be moved by the user,
i.e. the return code of the function that determines whether the
window can be moved or not.
  
As a possibility for 3.0, could the module interface be reworked perhaps 
more extensively?
I had an idea for an ICE-based module interface that would, if well 
done, be more flexible and extensible than the current system.
(It's biggest change would be that modules would no longer need to be 
children of the fvwm process.)
It could solve this problem by defining a query-flag operation, with 
an upward-compatible way of specifying flags.
FVWM already links libICE (session management uses it), so this wouldn't 
add much to the size of the running process.


Is the time right to start discussing major changes for 3.0, or should I 
hold this a while longer?




Re: Tracking flag changes from modules

2006-08-23 Thread Jacob Bachmeyer

seventh guardian wrote:

On 8/23/06, Jacob Bachmeyer [EMAIL PROTECTED] wrote:

As a possibility for 3.0, could the module interface be reworked perhaps
more extensively?
I had an idea for an ICE-based module interface that would, if well
done, be more flexible and extensible than the current system.
(It's biggest change would be that modules would no longer need to be
children of the fvwm process.)
It could solve this problem by defining a query-flag operation, with
an upward-compatible way of specifying flags.
FVWM already links libICE (session management uses it), so this wouldn't
add much to the size of the running process.

Is the time right to start discussing major changes for 3.0, or should I
hold this a while longer?


This may not be the right time to start the final discussion, but I
guess no one will complain about us spaming the fvwm mailing list :P

As for this discussion, IMHO the best thing to do first is to abstract
ourselves from the actual communication method. We first define an
interface over a generic bidirectional stream, then we can implement
it over any kind of mechanisms. Being it pipes, ICE, DBUS, dynamic
loaded libraries, TCP/IP.

If we manage to work out a good abstract interface, it wouldn't be
hard to implement it using ICE.. 
I was thinking of using the ICE opcodes in a meaningful manner.  A 
packet-oriented interface, rather than a pure stream, in other words.
Since ICE should be available on any system where fvwm is in use, why 
worry about other mechanisms?  (Or am I wrong here?)


ICE can use TCP/IP as its transport, so using ICE would give us network 
transparency if we want it.
Dynamic linking into fvwm would mean that a poorly written module could 
crash fvwm, but it shouldn't be too hard to construct a dynamic shell 
module that loads an .so and then uses the ICE interface to communicate 
with fvwm.  (Why anyone would want this is another matter.)

A similar shell could provide backwards compatibility for older modules.
A DBUS interface could be implemented in a similar manner, if a 
reasonable way to represent fvwm's state to DBUS is devised.  This could 
actually be used in an even more general manner--interface modules could 
be written for KDE's DCOP and whatever GNOME uses as well.


Using ICE would allow us to have one interface in fvwm proper and then 
have other interfaces atop that one in modules that can be started by 
the programs that need them.


Also, ICE is intended for use underneath an app-layer library.  This 
could help with maintaining the module interface code if we put it in 
such a library.


ICE's protocol is similar to X's, which might also help maintainability.

To sum up, ICE presents a (almost) ready-made command-response 
interface--all we do is define the opcodes and implement the ends.  And, 
if session-management is compiled in, libICE is already in use for that, 
so we can remove the module interface's transport from fvwm's code and 
use libICE.


Is there something so wrong with ICE that working from scratch rather 
than using it to abstract the transport is a good idea?




Re: Man page changes - negation method

2006-07-23 Thread Jacob Bachmeyer

seventh guardian wrote:

On 7/23/06, Jacob Bachmeyer [EMAIL PROTECTED] wrote:

seventh guardian wrote:
 Ok, what about this:

 Some options are now deactivated by prefixing ! to the option. This
 will eventually be the default, and the old negative options are
 now deprecated.
 This is a list of MenuStyle deprecated negative options:
 AutomaticHotkeysOff, HilightBackOff, TitleWarpOff


 It's a bit more conservative, yet should still be useful :)

 Cheers
  Renato

the default in that could be confusing to new users, how about the
preferred form?

(default could be taken as all options will be default off.)


You're right. But it will not be the preferred method, it will be the
only method (hence the other methods being deprecated). Can you find
me a word for the only method that fits here? :)

Cheers
 Renato


This would be:

Some options are now deactivated by prefixing ! to the option.  This
will eventually be the preferred form, and the old negative forms are
now deprecated.



Ok, how about:

Some options are now deactivated by prefixing ! to the option.  This 
will soon be the preferred form for all such options.  Any negatable 
option for which ! does not work should be reported as a bug.  The other 
negative forms are now deprecated and will be removed in FVWM X.Y.




Re: Man page changes - negation method

2006-07-22 Thread Jacob Bachmeyer

seventh guardian wrote:

Ok, what about this:

Some options are now deactivated by prefixing ! to the option. This
will eventually be the default, and the old negative options are
now deprecated.
This is a list of MenuStyle deprecated negative options:
AutomaticHotkeysOff, HilightBackOff, TitleWarpOff


It's a bit more conservative, yet should still be useful :)

Cheers
 Renato


the default in that could be confusing to new users, how about the 
preferred form?


(default could be taken as all options will be default off.)

This would be:

Some options are now deactivated by prefixing ! to the option.  This 
will eventually be the preferred form, and the old negative forms are 
now deprecated.




Re: FVWM: How to use StippledTitleOff

2006-07-20 Thread Jacob Bachmeyer

seventh guardian wrote:
Lol.. Yes, but how do you specify if its an and or an or?  
What about the words and and or? The symbols '' and '|' could be 
supported as well.




Re: CVS griph: fix tempfile vulnerabilities in FvwmCommand (bug

2006-07-12 Thread Jacob Bachmeyer

Dominik Vogt wrote:

On Wed, Jul 12, 2006 at 01:28:45AM +0200, Viktor Griph wrote:
  
but if one are really paranoid one could 
add checks of the opened files in FvwmCommand.c to verify that they are 
fifos with correect permissions.



Ah, but it's too late if the file is open already.
  
Is there some reason that fstat({2,P}) isn't usable? It takes an open 
file descriptor.




Re: ModuleListenOnly command

2006-06-25 Thread Jacob Bachmeyer

Dominik Vogt wrote:

On Sun, Jun 25, 2006 at 07:18:30PM +1000, Scott Smedley wrote:
  

Having just looked into how Schedule  execute_complex_function() work,
I'm not prepared to blame Schedule just yet.

In my opinion, I don't think FVWM should grab the X server everytime it
executes a complex function. I realise it's necessary when the function
references the Motion/Click/Hold/Double modifiers but in the majority
of cases, most user functions will just use Immediate. [3]

Why must the entire server be grabbed to track mouse movement?  Why not 
grab only the mouse?
Also, I use modifiers to have mouse clicks and mouse drags on window 
frames do different things.  (Drag to resize/move, click to raise/lower)


Is this why other windows freeze when resizing a window?

This makes me think it would have been nice to separate AddToFunc
into 2 separate commands - AddToMouseFunc  AddToFunc. Where
AddToMouseFunc would permit modifiers,  AddToFunc would _always_
assume an Immediate modifier.

As a hack/compromise, maybe we could modify AddToFunc to keep track
of whether or not it uses a mouse modifier  only then grab the
X server, in execute_complex_function().



We discussed this a couple of years ago, and Olivier(?) suggested
to allow functions without grabbing.  The problem is that it is
generally unpredictable which functions need to grab and which do
not, and you can't do it on the fly because its too late then.
  
Is it not possible to determine whether a function must grab as it is 
defined?
Couldn't adding a line with a modifier that needs a grab set a this 
function might need a grab flag?