Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-27 Thread Thomas Funk

Hi Dan,

attached is a small improvement patch for fvwm-menu-desktop.in. It
changing the top menu entries to better looking titles.
Before:

DestroyMenu FvwmMenu
AddToMenu FvwmMenu FvwmMenu Title
+ Kde4-applications Popup FvwmKde4-applications
+ Preferences Popup FvwmPreferences
+ Settings Popup FvwmSettings
+ Start-here Popup FvwmStart-here
+ System-settings Popup FvwmSystem-settings

after:
DestroyMenu FvwmMenu
AddToMenu FvwmMenu FvwmMenu Title
+ Kde4 Applications Popup FvwmKde4 Applications
+ Preferences Popup FvwmPreferences
+ Settings Popup FvwmSettings
+ Start Here Popup FvwmStart Here
+ System Settings Popup FvwmSystem Settings


Thomas

--- /media/daten/shared/sourcen/cvs/fvwm/bin/fvwm-menu-desktop.in	2012-07-23 18:32:18.108252482 +0200
+++ fvwm-menu-desktop.in.py	2012-07-27 11:10:16.720543498 +0200
@@ -415,8 +415,10 @@
 # create a top title list
 top_titles = []
 for file in menulist:
-name = file.replace('.menu', '').split('/')
-top_titles.append(name[-1][0].upper()+name[-1][1:])
+# extract and split the filename and set first char of each word to capital
+name_parts = file.replace('.menu', '').split('/')[-1].split('-')
+name_parts = [name[0].replace(name[0], name[0].upper())+name[1:] for name in name_parts]
+top_titles.append(' '.join(name_parts))
 
 # create the submenus
 new_toptitles = []


Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-25 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 I am willing to do the job of rewriting it but I need help. If you could
 take some of your spare time to give me hints and answer questions fairly
 would be fine.

 What I want to say is, that i want an open, honest and constructive
 discussion about the programming and functionality of the module and not
 RTFM - I do this every time before I asking.

 So if you're willing to be a mentor in a sense I am ready to
 programming it.

Looks like I should educate myself too.
Back when I'm a bit smarter.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-24 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 2012/7/18 Dan Espen des...@verizon.net:
 I'm guessing dbus or some other abomination does the job
 for the desktops...

 I've checked the internet for finding infos how the Distributions/
 Desktops do the automatic menu update process. Here're my results:

 Debian:
 When a package that wants to add/remove something to/from the menu tree
 gets installed/removed, it will run update-menus in its postinst/postrm
 script.
 http://www.debian.org/doc/packaging-manuals/menu.html/ch2.html
 - see chapter 2.1
 http://www.debian.org/doc/packaging-manuals/menu.html/ch4.html
 - See chapter 4.2

 KDE:
 Use kbuildsycoca4 to update the configuration cache in KDE
 https://bbs.archlinux.org/viewtopic.php?id=64514

 Gnome:
 found nothing about how they do it. I send an email to the LinuxMint
 developers because they made their own menu (mintmenu) but got no response
 back yet.

 Xfce:
 Before 4.8 they use libxfce4menu. In the sources there're comments that they
 use filesystem monitoring - down line 171
 http://bazaar.launchpad.net/~vcs-imports/libxfce4menu/trunk/view/head:/STATUS
 Since 4.8 garcon is used. Also with filesystem monitoring
 - http://wiki.xfce.org/dev/garcon

 In the Xfce wiki page (http://wiki.xfce.org/howto/customize-menu) they said
 also that xfdesktop session starts, changes to the menu file are
 implemented
 immediately. (for Xfdesktop 4.5 or higher) Or reload xfdesktop

 Fluxbox and other WMs:
 Per default no automatic update. User have to do this manually.

 The thoughts doing this over dbus or other stuff:
 found nothing about specific messages used by package systems to
 inform tools
 to start menu updating.

 Summary:
 - Debian do updating Debian specific - not usable - depends on package mgmt.
 - Some DEs do updating specific too via daemons - too much dependencies
 - Xfce do filesystem monitoring/scanning
 - Other WMs don't update automatically
 - No event messages available to initialize menu updating

 Looks deflating.

 2012/7/23 Dan Espen des...@verizon.net:
 Over here:

 
 http://crunchbanglinux.org/forums/topic/5370/how-to-set-up-a-dynamic-xdg-menu-for-openbox/
 http://tinyurl.com/84jdvcy

 I see they are talking about using inotify to know when menus have been
 updated.  Not something I'd recommend.  Manual update still seems
 preferable (to me).

 inotify sounds interesting but another dependency again. I still prefer
 the filesystem scan by ourself if at all. I found the idea in the sources
 of Marchfluxmenu:
 They do this with 'ls /usr/share/applications/*.desktop | wc -l'. They
 remember the count and if it changed a menu update starts. One directory
 is enough for them because they use the applications menu only. But I
 am not sure if this is enough for our menus. Must check this first. But
 if so a scan tooks milliseconds and the load is insignificant. We could
 do a scan perhaps every minute. This could be enough to rebuild the menus
 without recognition by the user. Another advantage is no dependency with
 dbus and other 'abomination' as you said. We need no entries for daemons
 to register us, no restarts of them and so forth ...

 Personally I haven't either a problem with manual nor with automatic
 updating. Both have their own charm ...

 But for a automatic menus update we need another solution - a module
 as Thomas suggested.

Excellent work.

Lots of people expect their system to be able to go to sleep,
hence my dislike for polling.

Sounds to me like Debian has it right.
(Specifically invoking a process after menus change.)
I wouldn't be surprised to see a solution being implemented in other
distros in due time.  In the mean time, I think we're fine as is.

Again, personal issues piling up.
Forgive me for dragging my feet on patch application.
I'll try to get to it ASAP.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-24 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Dan Espen des...@verizon.net wrote:
 Thomas Funk t.funk...@googlemail.com writes:

 Dan Espen des...@verizon.net wrote
 Also a fixed fvwm-menu-desktop-config.fpl because there were some
 missing double quotes (I don't know why they were absent ... shit happens)

I think it's time for me to commit this fpl file.

It comes without Makefile.am consideration or even a place to put it.
Which directory do you see it being in?  Doesn't it need a man page?
Thomas Adam made some comments about using FvwmPerl.  Is that resolved?
I'm not all that familiar with FvwmPerl myself.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-23 Thread Thomas Funk
2012/7/23 Dan Espen des...@verizon.net:
 I don't understand.
 If you do this:

  + I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
  + I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot \\
 $[FVWM_USERDIR]/.menu \\
 +   echo Read $[FVWM_USERDIR]/.menu'

 Then the menu only gets regenerated when the file
 $[FVWM_USERDIR]/.menu goes away.

 I don't see how that helps at all.
This is not the important part. With

AddToMenu MenuRoot Root Menu Title
+ FuncXdgMenusInRoot

you must restart because the root menu and the entry + FuncXdgMenusInRoot
generates a static menu. But if you use a dynamic root menu like this:
AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot

DestroyFunc FuncMenuRoot
AddToFunc FuncMenuRoot
+ I DestroyMenu MenuRoot
+ I AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot
+ I AddToMenu MenuRoot Root Menu Title
+ I Popup XdgMenus

and also a dynamic XdgMenus menu:

AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot

DestroyFunc FuncXdgMenusInRoot
AddToFunc FuncXdgMenusInRoot
+ I DestroyMenu XdgMenus
+ I AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot

then you can execute Regenerate menus without a restart. The trick is,
that Regenerate menus does a Read after execution of fvwm-menu-desktop.
so the new generated menu is instantly available if the user pops up the
root menu.

The two Test lines are only to guarantee that a .menu is red and if not
exist generated and red while poping up the root menu.

I gave a thought at night to the patch and discovered that the example with
+ FuncXdgMenusInRoot should be deleted because it shows a way the
user doesn't use anymore if he read the example below. Or should we let
it for the sake of completness?

Thomas



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-23 Thread Thomas Adam
On Mon, Jul 23, 2012 at 10:08:05AM +0200, Thomas Funk wrote:
 2012/7/23 Dan Espen des...@verizon.net:
  I don't understand.
  If you do this:
 
   + I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
   + I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot 
  \\
  $[FVWM_USERDIR]/.menu \\
  +   echo Read $[FVWM_USERDIR]/.menu'
 
  Then the menu only gets regenerated when the file
  $[FVWM_USERDIR]/.menu goes away.
 
  I don't see how that helps at all.
 This is not the important part. With
 
 AddToMenu MenuRoot Root Menu Title
 + FuncXdgMenusInRoot
 
 you must restart because the root menu and the entry + FuncXdgMenusInRoot
 generates a static menu. But if you use a dynamic root menu like this:
 AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot

Don't destroy the same menu you're about to (re)create.

-- Thomas Adam



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-23 Thread Dan Espen
Thomas Funk t.funk...@googlemail.com writes:

 2012/7/23 Dan Espen des...@verizon.net:
 I don't understand.
 If you do this:

  + I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
  + I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot 
 \\
 $[FVWM_USERDIR]/.menu \\
 +   echo Read $[FVWM_USERDIR]/.menu'

 Then the menu only gets regenerated when the file
 $[FVWM_USERDIR]/.menu goes away.

 I don't see how that helps at all.
 This is not the important part. With

 AddToMenu MenuRoot Root Menu Title
 + FuncXdgMenusInRoot

 you must restart because the root menu and the entry + FuncXdgMenusInRoot
 generates a static menu. But if you use a dynamic root menu like this:
 AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot

 DestroyFunc FuncMenuRoot
 AddToFunc FuncMenuRoot
 + I DestroyMenu MenuRoot
 + I AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot
 + I AddToMenu MenuRoot Root Menu Title
 + I Popup XdgMenus

 and also a dynamic XdgMenus menu:

 AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot

 DestroyFunc FuncXdgMenusInRoot
 AddToFunc FuncXdgMenusInRoot
 + I DestroyMenu XdgMenus
 + I AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot

 then you can execute Regenerate menus without a restart. The trick is,
 that Regenerate menus does a Read after execution of fvwm-menu-desktop.
 so the new generated menu is instantly available if the user pops up the
 root menu.

 The two Test lines are only to guarantee that a .menu is red and if not
 exist generated and red while poping up the root menu.

 I gave a thought at night to the patch and discovered that the example with
 + FuncXdgMenusInRoot should be deleted because it shows a way the
 user doesn't use anymore if he read the example below. Or should we let
 it for the sake of completness?

Using --insert-in-menu MyMenu, I get this:

AddToMenu MyMenu
+ Kde4-applications Popup FvwmKde4-applications
+ Preferences Popup FvwmPreferences
+ Settings Popup FvwmSettings
+ Start-here Popup FvwmStart-here
+ System-settings Popup FvwmSystem-settings
+  Nop
+ Regenerate XDG Menu(s) Module FvwmPerl -l fvwm-menu-desktop-config.fpl


If I run this twice, MyMenu will have all these entries appended to
MyMenu twice.  I'd have to destroy the menu and recreate it to get any
other outcome.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-23 Thread Thomas Funk
Dan Espen des...@verizon.net wrote
Using --insert-in-menu MyMenu, I get this:

AddToMenu MyMenu
+ Kde4-applications Popup FvwmKde4-applications
+ Preferences Popup FvwmPreferences
+ Settings Popup FvwmSettings
+ Start-here Popup FvwmStart-here
+ System-settings Popup FvwmSystem-settings
+  Nop
+ Regenerate XDG Menu(s) Module FvwmPerl -l fvwm-menu-desktop-config.fpl

If I run this twice, MyMenu will have all these entries appended to
MyMenu twice. I'd have to destroy the menu and recreate it to get any
other outcome.
Can you post how you've implemented it in the MyMenu? If you've deleted
+ I DestroyMenu XdgMenus
because of my last email to Thomas then do it back. I have problems on my
VM with creating menus and must check this first. On my Debian system at
home all works fine with the new snippet.

Thomas



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-23 Thread Dan Espen
Thomas Funk t.funk...@googlemail.com writes:

 Dan Espen des...@verizon.net wrote
Using --insert-in-menu MyMenu, I get this:

AddToMenu MyMenu
+ Kde4-applications Popup FvwmKde4-applications
+ Preferences Popup FvwmPreferences
+ Settings Popup FvwmSettings
+ Start-here Popup FvwmStart-here
+ System-settings Popup FvwmSystem-settings
+  Nop
+ Regenerate XDG Menu(s) Module FvwmPerl -l fvwm-menu-desktop-config.fpl

If I run this twice, MyMenu will have all these entries appended to
MyMenu twice. I'd have to destroy the menu and recreate it to get any
other outcome.
 Can you post how you've implemented it in the MyMenu? If you've deleted
 + I DestroyMenu XdgMenus
 because of my last email to Thomas then do it back. I have problems on my
 VM with creating menus and must check this first. On my Debian system at
 home all works fine with the new snippet.

I typed in the command:

python fvwm-menu-desktop.in --insert-in-menu MyMenu

I then searched the output for MyMenu.
The lines above are the only references to MyMenu.

If I paste the lines above into FvwmTalk twice
and then enter PopUp MyMenu
I see a menu with all it's entries duplicated.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-23 Thread Thomas Funk

Dan Espen des...@verizon.net wrote:
 Thomas Funk t.funk...@googlemail.com writes:

 Dan Espen des...@verizon.net wrote
 Using --insert-in-menu MyMenu, I get this:

 AddToMenu MyMenu
 + Kde4-applications Popup FvwmKde4-applications
 + Preferences Popup FvwmPreferences
 + Settings Popup FvwmSettings
 + Start-here Popup FvwmStart-here
 + System-settings Popup FvwmSystem-settings
 +  Nop
 + Regenerate XDG Menu(s) Module FvwmPerl -l 
fvwm-menu-desktop-config.fpl


 If I run this twice, MyMenu will have all these entries appended to
 MyMenu twice. I'd have to destroy the menu and recreate it to get any
 other outcome.
 Can you post how you've implemented it in the MyMenu? If you've deleted
 + I DestroyMenu XdgMenus
 because of my last email to Thomas then do it back. I have problems 
on my

 VM with creating menus and must check this first. On my Debian system at
 home all works fine with the new snippet.
 I typed in the command:

 python fvwm-menu-desktop.in --insert-in-menu MyMenu

 I then searched the output for MyMenu.
 The lines above are the only references to MyMenu.

 If I paste the lines above into FvwmTalk twice
 and then enter PopUp MyMenu
 I see a menu with all it's entries duplicated.

Yes, that's correct cause no DestroyMenu MyMenu exists in the generated
menu. But that has to be. If you have a static/normal menu called
MyMenu then you create it like this in .config:

DestroyMenu MyMenu
AddToMenu   MyMenu
+ A_Title Title
+ Entry1 FuncSomething
+ Entry2 Popup SomeMenu

If you want to add something to MyMenu you do it like
AddToMenu MyMenu
+ Another_Entry1 Popup SomeOtherMenu
+ Another_App Exec exec foo

If you add this part again like you do with FvwmTalk you've duplicated
entries.

But if you use the dynamic example all works fine. I've added the patch
again but without + I DestroyMenu XdgMenus in FuncXdgMenusInRoot as
Thomas pointed out. Thanks Thomas :-)

Also a fixed fvwm-menu-desktop-config.fpl because there were some
missing double quotes (I don't know why they were absent ... shit happens)

Thomas




--- /media/daten/shared/sourcen/cvs/fvwm/bin/fvwm-menu-desktop.1.in	2012-07-22 12:25:57.772773990 +0200
+++ fvwm-menu-desktop.1	2012-07-23 22:31:40.817613594 +0200
@@ -86,9 +86,10 @@
 .IP \fB\-\-insert\-in\-menu\fR \fINAME\fR
 Option to insert generated menu(s) \fBIN\fR a menu \fINAME\fR (its
 top title).  Note that this 0ption does not work correctly with the
-Regnerate Menus menu entry since items insserted into a menu cannot be
-removed (currently).  If you use this option and want to update your menus,
-restart fvwm.
+Regnerate Menus menu entry in a normal built menu since items insserted 
+into such a menu cannot be removed (currently). If you use this option
+there and want to update your menus, you have to restart fvwm. A better
+way is to use dynamic menus (see the example in the USAGE section).
 
 .IP \fB\-\-get\-menus\fR \fIall\fR|\fIdesktop\fR
 Prints a space separated list of full menu paths. \fIall\fR is all menus
@@ -213,7 +214,8 @@
 .EE
 .RE
 
-or if you want to show the menus directly in the Root menu use this:
+or if you want to show the menus directly in a normal Root menu use
+this:
 
 .RS
 .EX
@@ -226,6 +228,32 @@
 + I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
 + I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot \\
$[FVWM_USERDIR]/.menu \\
+   echo Read $[FVWM_USERDIR]/.menu'
+.EE
+.RE
+
+The problem here is, that you have to restart fvwm because items insserted 
+into such a menu cannot be removed. For that BOTH menus must be dynamically:
+
+.RS
+.EX
+AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot
+
+DestroyFunc FuncMenuRoot
+AddToFunc FuncMenuRoot
++ I DestroyMenu MenuRoot
++ I AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot
++ I AddToMenu MenuRoot Root Menu Title
++ I Popup XdgMenus
+
+AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot
+
+DestroyFunc FuncXdgMenusInRoot
+AddToFunc FuncXdgMenusInRoot
++ I AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot
++ I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
++ I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot \\
+   $[FVWM_USERDIR]/.menu \\
echo Read $[FVWM_USERDIR]/.menu'
 .EE
 .RE
# This script generates a FvwmForm similar to the FvwmForm-Desktop by
# Dan Espen but insert the found xdg menus dynamically into the Form
# before processed.
# Author: Thomas Funk t.f...@web.de
# Version: 1.2

package MenuConfig;
use File::Basename;
use strict;
use warnings;

#open(MSG ,[path]/log.txt) || die Error $!;

my $all = `fvwm-menu-desktop --get-menus all`;
my $selected = `fvwm-menu-desktop --get-menus desktop`;

my @all_filelist = split(/ /,$all);
my @selected_filelist = split(/ /,$selected);

my %all_menus = ();
my %selected__menus = ();
my $max_length = 0;
foreach my $path (@selected_filelist) {
my ($filename, 

Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-22 Thread Thomas Funk

Dan Espen des...@verizon.net wrote:
 Nice.  Regarding this section:

 \ .SH ERRORS AND WARNINGS
 \ \fBfvwm-menu-desktop\fR prints errors and warnings to STDERR. So these
 \ messages could be redirect to e.g. ~/.xsessions-errors:

 \ .RS
 \ .EX
 \ fvwm-menu-desktop  $FVWM_USERDIR/.menu 2 ~/.xsession-errors
 \ .EE
 \ .RE

 Everything I run under fvwm already redirects to ~/.xsession-errors.
 (I send it somewhere else, but same idea.)

 Point is, isn't all error output, from everything under Fvwm already
 going to an error file?
 I don't think we need that section.
No problem. As I see you've commented this part out already.

Btw. you've wrote in --insert-in-menu NAME:
... Note that this 0ption does not work correctly with the Regnerate
Menus menu entry since items insserted into a menu cannot be removed
(currently). If you use this option and want to update your menus,
restart fvwm.

This applies only for normal menus. If you use for both DynamicPopupAction
fvwm must not restarted. I've wrote the additions for the manpage in the
attached patch.

Thomas

--- /media/daten/shared/sourcen/cvs/fvwm/bin/fvwm-menu-desktop.1.in	2012-07-22 12:25:57.772773990 +0200
+++ fvwm-menu-desktop.1	2012-07-23 00:51:00.611988135 +0200
@@ -86,9 +86,10 @@
 .IP \fB\-\-insert\-in\-menu\fR \fINAME\fR
 Option to insert generated menu(s) \fBIN\fR a menu \fINAME\fR (its
 top title).  Note that this 0ption does not work correctly with the
-Regnerate Menus menu entry since items insserted into a menu cannot be
-removed (currently).  If you use this option and want to update your menus,
-restart fvwm.
+Regnerate Menus menu entry in a normal built menu since items insserted 
+into such a menu cannot be removed (currently). If you use this option
+there and want to update your menus, you have to restart fvwm. The only
+way is to use dynamic menus (see the example in the USAGE section).
 
 .IP \fB\-\-get\-menus\fR \fIall\fR|\fIdesktop\fR
 Prints a space separated list of full menu paths. \fIall\fR is all menus
@@ -213,7 +214,8 @@
 .EE
 .RE
 
-or if you want to show the menus directly in the Root menu use this:
+or if you want to show the menus directly in a normal Root menu use
+this:
 
 .RS
 .EX
@@ -226,6 +228,33 @@
 + I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
 + I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot \\
$[FVWM_USERDIR]/.menu \\
+   echo Read $[FVWM_USERDIR]/.menu'
+.EE
+.RE
+
+The problem here is, that you have to restart fvwm because items insserted 
+into such a menu cannot be removed. For that BOTH menus must be dynamically:
+
+.RS
+.EX
+AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot
+
+DestroyFunc FuncMenuRoot
+AddToFunc FuncMenuRoot
++ I DestroyMenu MenuRoot
++ I AddToMenu MenuRoot DynamicPopupAction FuncMenuRoot
++ I AddToMenu MenuRoot Root Menu Title
++ I Popup XdgMenus
+
+AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot
+
+DestroyFunc FuncXdgMenusInRoot
+AddToFunc FuncXdgMenusInRoot
++ I DestroyMenu XdgMenus
++ I AddToMenu XdgMenus DynamicPopupAction FuncXdgMenusInRoot
++ I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
++ I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot \\
+   $[FVWM_USERDIR]/.menu \\
echo Read $[FVWM_USERDIR]/.menu'
 .EE
 .RE


Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-22 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Dan Espen des...@verizon.net wrote:
 Btw. you've wrote in --insert-in-menu NAME:
 ... Note that this 0ption does not work correctly with the Regnerate
 Menus menu entry since items insserted into a menu cannot be removed
 (currently). If you use this option and want to update your menus,
 restart fvwm.

 This applies only for normal menus. If you use for both DynamicPopupAction
 fvwm must not restarted. I've wrote the additions for the manpage in the
 attached patch.

I don't understand.
If you do this:

  + I Test (f  $[FVWM_USERDIR]/.menu) Read $[FVWM_USERDIR]/.menu
  + I TestRC (!Match) PipeRead 'fvwm-menu-desktop --insert-in-menu MenuRoot \\
 $[FVWM_USERDIR]/.menu \\
 +   echo Read $[FVWM_USERDIR]/.menu'

Then the menu only gets regenerated when the file 
$[FVWM_USERDIR]/.menu goes away.

I don't see how that helps at all.

Over here:

http://crunchbanglinux.org/forums/topic/5370/how-to-set-up-a-dynamic-xdg-menu-for-openbox/
http://tinyurl.com/84jdvcy

I see they are talking about using inotify to know when menus have been
updated.  Not something I'd recommend.  Manual update still seems
preferable (to me).

I don't think insert-in-menu is a problem, in fact it's pretty nice.
I just wanted to point out it's limitation. 


-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-21 Thread Thomas Funk

Dan Espen des...@verizon.net wrote:
 Haven't you been doing CVS updates?
Sorry, used fvwm-menu-desktop.1 instead of fvwm-menu-desktop.1.in
Correct patch attached.

Thomas
--- /media/daten/shared/sourcen/cvs/fvwm/bin/fvwm-menu-desktop.1.in	2012-07-11 16:45:31.0 +0200
+++ fvwm-menu-desktop.1	2012-07-21 12:18:11.617683854 +0200
@@ -20,88 +20,86 @@
 fvwm-menu-desktop \- Reads XDG menu files and creates Fvwm menus
 
 .SH SYNOPSIS
-
 fvwm-menu-desktop
-[ \fB\-\-help\fR|\fB\-h\fR|\fB\-?\fR ]
-[ \fB\-\-verbose\fR|\fB\-v\fR ]
+[ \fB\-\-help\fR|\fB\-h\fR ]
+[ \fB\-\-version\fR|\fB\-v\fR ]
 [ \fB\-\-install\-prefix\fR \fIDIR\fR ]
 [ \fB\-\-desktop\fR \fINAME\fR ]
-[ \fB\-\-title\fR \fINAME\fR ]
+[ \fB\-\-menu\-type\fR \fINAME\fR ]
+[ \fB\-\-theme\fR \fINAME\fR ]
+[ \fB\-\-with\-titles\fR|\fB\-w\fR ]
 [ \fB\-\-enable\-mini\-icons\fR ]
+[ \fB\-\-size\fR|\fB\-s\fR \fINUM\fR ]
+[ \fB\-\-title\fR|\fB\-t\fR \fINAME\fR ]
+[ \fB\-\-insert\-in\-menu\fR \fINAME\fR ]
+[ \fB\-\-get\-menus\fR \fIall\fR|\fIdesktop\fR ]
+[ \fB\-\-set\-menus\fR \fImenu_paths\fR ]
+[ \fB\-\-verbose\fR ]
+
 
 .SH DESCRIPTION
-This is a python script which parses XDG menus definitions to build
+This is a python script which parses XDG menus definitions to build 
 corresponding fvwm menus.
 
-.SH USAGE
-To add the XDG application menu to the Utilities menu
-add the following to your fvwm config file (.fvwm/config):
-.EX
- ...
-AddToMenu Utilities Application Menu Popup FvwmMenu
-PipeRead 'fvwm-menu-desktop'
-.EE
-
-By default fvwm-menu-desktop
-builds the applications menu
-and the menu is named FvwmMenu.
-
-.EX
-AddToMenu Utilities KDE User Menu Popup kde\-user
-AddToMenu kde\-user
-+ DynamicPopupAction PipeRead 'fvwm-menu-desktop --desktop kde-user --enable-mini-icons [other options]'
-.EE
-
-If you think that fvwm-menu-desktop slows your startup too much do
-not use PipeRead.  Instead run  fvwm-menu-desktop
-and
-redirect the menu to a file and Read that file in
-your .fvwm2rc file.
-Another possibility is to use DynamicPopupAction
-(with fvwm menu), the menu will be built only if
-you pop up the menu. The
-following menu creates a kde\-all menu which contains the user menu
-which is built each time you pop up kde\-all and contains a pop up
-to the system menu which is built only the first time you pop it up.
-.EX
-AddToMenu kde\-all
-+ DynamicPopupAction FuncRecreateKdeAll
-
-AddToMenu kde\-sys
-+ DynamicPopupAction PipeRead 'fvwm-menu-desktop \\
-\-\-desktop kde\-sys [options, but \-\-destroy-type d* or n*]'
-
-AddToFunc FuncRecreateKdeAll \\
-I PipeRead 'fvwm-menu-desktop \\
-\-\-desktop kde\-user \-\-enable\-mini\-icons \-\-name kde\-all \\
-\-\-destroy-type dynamic [options you like]'
-+ I AddToMenu kde\-all  Nop
-+ I AddToMenu kde\-all Kde System%mini/mini\-k.xpm% Popup kde\-sys
-.EE
-
 .SH OPTIONS
 
 .IP Main Options
 
 .IP \fB\-\-help\fR
 Show the help and exit.
-.IP \fB\-\-verbose\fR
-Run verbosely.
+
+.IP \fB\-\-version\fR
+Show the version and exit.
+
 .IP \fB\-\-install-prefix\fR \fIDIR\fR
-Optional parameter to override the default location
-for XDG menu definitions.  The default location is /etc/xdg/menus.
+Optional parameter to override the default locations for XDG menu
+definitions. Related to the xdg specification the default location is
+/etc/xdg/menus and $HOME/.config/menus if exist.
+
 .IP \fB\-\-desktop\fR \fINAME\fR
-The name of the menus you want to generate.
-The default is application.
-.IP \fB\-\-title\fR \fINAME\fR
-Define the menu title of the top menu. Default
-is Gnome System Menu for gnome\-sys, Gnome User Menu for
-gnome\-user, Gnome Red Hat Menu for gnome\-redhat,
-Gnome Mandriva Menu for gnome\-mandriva. For KDE the
-default is given by KDE itself (or are similar to GNOME title).
-.IP \fB\-\-name\fR \fINAME\fR
-Define the menu name of the top menu. Default is the \-\-desktop
-name if you use one above.
+Optional parameter to override the \fINAME\fR of the main desktop
+environment installed on the system. If a system offers multiple
+desktop environments $XDG_MENU_PREFIX is typically set and is
+ignored if \-\-desktop is denoted. Possible names are: \fIgnome\fR,
+\fIkde\fR, \fIxfce\fR, \fIlxde\fR, \fIdebian\fR, etc.
+
+.IP \fB\-\-menu\-type\fR \fINAME\fR
+Defines which type of menus should be found. Possible \fINAME\fR types
+could be: \fIapplications\fR, \fIsettings\fR, \fIpreferences\fR, etc.
+
+Note that if the specified menu type doesn't exist the generated menu
+is empty!
+
+.IP \fB\-\-theme\fR \fINAME\fR
+Defines the used icon theme. Default is \fIgnome\fR but all others
+found in /usr/share/icons could be used except the \fIhicolor\fR theme
+because it's the default fallback theme if no icon is found.
+
+.IP \fB\-\-with\-titles\fR|\fB\-w\fR
+If this option is set menus are generated with titles. Default is no
+titles.
+
+.IP \fB\-\-title\fR|\fB\-t\fR \fINAME\fR 
+Option to define the menu title \fINAME\fR of the top menu used by Fvwms
+\fBPopup\fR command. Default is FvwmMenu.
+
+.IP 

Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-21 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Dan Espen des...@verizon.net wrote
 TF:

 All I really need is the words.
 I can add (t)groff/man markup as needed.
 Thanks for your accommodation but I've finished it already. Patch

Nice.  Regarding this section:

\ .SH ERRORS AND WARNINGS
\ \fBfvwm-menu-desktop\fR prints errors and warnings to STDERR. So these
\ messages could be redirect to e.g. ~/.xsessions-errors:

\ .RS
\ .EX
\ fvwm-menu-desktop  $FVWM_USERDIR/.menu 2 ~/.xsession-errors
\ .EE
\ .RE

Everything I run under fvwm already redirects to ~/.xsession-errors.
(I send it somewhere else, but same idea.)

Point is, isn't all error output, from everything under Fvwm already
going to an error file?
I don't think we need that section.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-20 Thread Thomas Funk

Dan Espen des...@verizon.net wrote
 TF:

 All I really need is the words.
 I can add (t)groff/man markup as needed.
Thanks for your accommodation but I've finished it already. Patch
is attached ^^ Please review it for grammar and phrase errors.

 I don't see get-menus in the man page.
added.

 I think you want the option to be:

 --get-menus all | desktop

 with an error for any other value.
Your fix is excellent! And 'desktop' is absolutely suitable :-)

 Rule of thumb, NEVER use the word will in documentation.
eliminated except two.

Thomas
--- /media/daten/shared/sourcen/cvs/fvwm/bin/fvwm-menu-desktop.1	2012-01-02 19:25:49.120033746 +0100
+++ fvwm-menu-desktop.1	2012-07-21 00:16:50.485774334 +0200
@@ -1,5 +1,5 @@
 .\ t
-.\ @(#)fvwm-2.6.4 (not released yet)
+.\ @(#)fvwm-2.6.6 (not released yet)
 .de EX		\Begin example
 .ne 5
 .if n .sp 1
@@ -14,461 +14,257 @@
 .if t .sp .5
 ..
 .ta .3i .6i .9i 1.2i 1.5i 1.8i
-.TH fvwm-menu-desktop 1 (not released yet) (2.6.4) Fvwm Fvwm Modules
+.TH fvwm-menu-desktop 1 (not released yet) (2.6.6) Fvwm Fvwm Modules
 .UC
 .SH NAME
-fvwm-menu-desktop \- builds GNOME and KDE menus and style commands for fvwm
+fvwm-menu-desktop \- Reads XDG menu files and creates Fvwm menus
 
-.SH SYNOPSIS
 
+.SH SYNOPSIS
 fvwm-menu-desktop
-[ \fB\-\-help\fR|\fB\-h\fR|\fB\-?\fR ]
-[ \fB\-\-version\fR|\fB\-v\fR|\fB\-V\fR ]
+[ \fB\-\-help\fR|\fB\-h\fR ]
+[ \fB\-\-version\fR|\fB\-v\fR ]
 [ \fB\-\-install\-prefix\fR \fIDIR\fR ]
 [ \fB\-\-desktop\fR \fINAME\fR ]
-[ \fB\-\-type\fR NAME\fR ]
-[ \fB\-\-fvwmgtk\-alias\fR \fINAME\fR ]
-[ \fB\-\-title\fR \fINAME\fR ]
-[ \fB\-\-name\fR \fINAME\fR ]
-[ \fB\-\-merge-user-menu\fR ]
+[ \fB\-\-menu\-type\fR \fINAME\fR ]
+[ \fB\-\-theme\fR \fINAME\fR ]
+[ \fB\-\-with\-titles\fR|\fB\-w\fR ]
 [ \fB\-\-enable\-mini\-icons\fR ]
-[ \fB\-\-enable\-tran\-mini\-icons\fR ]
-[ \fB\-\-mini\-icons\-path\fR \fIDIR\fR ]
-[ \fB\-\-png\-icons\-path\fR \fIDIR\fR ]
-[ \fB\-\-tran\-mini\-icons\-path\fR \fIDIR\fR ]
-[ \fB\-\-check-mini\-icons\fR \fIPATH\fR ]
-[ \fB\-\-icon\-toptitle\fR
-\fImicon\fR:\fIlaw\fR:\fIplace\fR:\fIside_pic\fR:\fIcolor\fR ]
-[ \fB\-\-icon\-title\fR
-\fImicon\fR:\fIlaw\fR:\fIplace\fR:\fIside_pic\fR:\fIcolor\fR ]
-[ \fB\-\-icon\-folder\fR  \fImicon\fR:\fIlaw\fR:\fIplace\fR ]
-[ \fB\-\-icon\-app\fR \fImicon\fR:\fIlaw\fR:\fIplace\fR ]
-[ \fB\-\-wm\-icons\fR ]
-[ \fB\-\-enable\-style\fR ]
-[ \fB\-\-enable\-tran\-style\fR ]
-[ \fB\-\-icon-style\fR \fImicon\fR:\fIicon\fR:\fIlaw\fR ]
-[ \fB\-\-icons\-path\fR \fIDIR\fR ]
-[ \fB\-\-tran\-icons\-path\fR \fIDIR\fR ]
-[ \fB\-\-check-icons\fR \fIPATH\fR ]
-[ \fB\-\-submenu\-name\-prefix\fR \fIname\fR ]
-[ \fB\-\-dir\fR \fIDIR\fR ]
-[ \fB\-\-destroy\-type\fR \fIFLAG\fR ]
-[ \fB\-\-xterm\fR \fICMD\fR ]
-[ \fB\-\-lang\fR \fINAME\fR ]
-[ \fB\-\-utf8\fR ]
-[ \fB\-\-uniconv\fR \fIcharset\fR ]
-[ \fB\-\-uniconv-exec\fR \fIexec\fR ]
-[ \fB\-\-menu-style\fR \fIname\fR ]
-[ \fB\-\-no\-check\-app\fR ]
-[ \fB\-\-time\-limit\fR \fINUM\fR ]
-[ \fB\-\-kde_config\fR \fIcommand\fR ]
+[ \fB\-\-size\fR|\fB\-s\fR \fINUM\fR ]
+[ \fB\-\-title\fR|\fB\-t\fR \fINAME\fR ]
+[ \fB\-\-insert\-in\-menu\fR \fINAME\fR ]
+[ \fB\-\-get\-menus\fR \fIall\fR|\fIdesktop\fR ]
+[ \fB\-\-set\-menus\fR \fImenu_paths\fR ]
+[ \fB\-\-verbose\fR ]
+
 
 .SH DESCRIPTION
-This is a perl script which parses XDG (GNOME or KDE) menus definitions to build
-corresponding fvwm menus. The script can also
-build icon and mini\-icon style commands for the applications.
+This is a python script which parses XDG menus definitions to build 
+corresponding fvwm menus.
+
+.SH OPTIONS
+
+.IP Main Options
+
+.IP \fB\-\-help\fR
+Show the help and exit.
+
+.IP \fB\-\-version\fR
+Show the version and exit.
+
+.IP \fB\-\-install-prefix\fR \fIDIR\fR
+Optional parameter to override the default locations for XDG menu
+definitions. Related to the xdg specification the default location is
+/etc/xdg/menus and $HOME/.config/menus if exist.
+
+.IP \fB\-\-desktop\fR \fINAME\fR
+Optional parameter to override the \fINAME\fR of the main desktop
+environment installed on the system. If a system offers multiple
+desktop environments $XDG_MENU_PREFIX is typically set and is
+ignored if \-\-desktop is denoted. Possible names are: \fIgnome\fR,
+\fIkde\fR, \fIxfce\fR, \fIlxde\fR, \fIdebian\fR, etc.
+
+.IP \fB\-\-menu\-type\fR \fINAME\fR
+Defines which type of menus should be found. Possible \fINAME\fR types
+could be: \fIapplications\fR, \fIsettings\fR, \fIpreferences\fR, etc.
+
+Note that if the specified menu type doesn't exist the generated menu
+is empty!
+
+.IP \fB\-\-theme\fR \fINAME\fR
+Defines the used icon theme. Default is \fIgnome\fR but all others
+found in /usr/share/icons could be used except the \fIhicolor\fR theme
+because it's the default fallback theme if no icon is found.
+
+.IP \fB\-\-with\-titles\fR|\fB\-w\fR
+If this option is set menus are generated with titles. Default is no
+titles.
+
+.IP \fB\-\-title\fR|\fB\-t\fR \fINAME\fR 
+Option to define the menu title \fINAME\fR of the 

Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-20 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Dan Espen des...@verizon.net wrote
 TF:

 All I really need is the words.
 I can add (t)groff/man markup as needed.
 Thanks for your accommodation but I've finished it already. Patch
 is attached ^^ Please review it for grammar and phrase errors.

That appears to be a patch against the old version of the man page.
Haven't you been doing CVS updates?

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Try the examples in the manpage you requested to get an overview about
 the look and feel of the different display possibilities. The page is
 created with asciidoc but in Groff format so you can look into it with
 man ^^

The man page is a LOT less readable than I expected it to be.
Does every period have to be escaped?

Not real happy with the result.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Hi Dan!

 I've attached the advised patch related to your last CVS version of
 fvwm-menu-desktop. It includes the needed functionality to response to
 the attached configuration tool for fvwm-menu-desktop. Two new options:
 - get-menus [selected, all] to send the found menus to the config gui
 - set-menus [filelist] to tell fvwm-menu-desktop which menus should be
   build

The usage prompt for get-menus says it prints a comma separated list,
but I get a space separated list.

The usage prompt says selected is an option but it looks like anything
other than all is what it looks for.  I'm not clear on what the
selected option is doing.

You're English it pretty good.  No such word as founded though.

Rule of thumb, NEVER use the word will in documentation.
Always describe features as already there.

Committing the menu-desktop changes for now.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Thomas Funk

Dan Espen des...@verizon.net wrote:
 Thomas Funk t.f...@web.de writes:

 Try the examples in the manpage you requested to get an overview about
 the look and feel of the different display possibilities. The page is
 created with asciidoc but in Groff format so you can look into it with
 man ^^

 The man page is a LOT less readable than I expected it to be.
 Does every period have to be escaped?

 Not real happy with the result.

What do you mean with Does every period have to be escaped ?
Do you mean the man page file itself or if you use
$./man fvwm-menu-desktop.1

I can send you the asciidoc file. It's plain text with some asciidoc
formatings.

I have no clue how to write groff. So I use the easier way via asciidoc.

Thomas



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Dan Espen des...@verizon.net wrote:
 Thomas Funk t.f...@web.de writes:

 Try the examples in the manpage you requested to get an overview about
 the look and feel of the different display possibilities. The page is
 created with asciidoc but in Groff format so you can look into it with
 man ^^

 The man page is a LOT less readable than I expected it to be.
 Does every period have to be escaped?

 Not real happy with the result.

 What do you mean with Does every period have to be escaped ?
 Do you mean the man page file itself or if you use
 $./man fvwm-menu-desktop.1

 I can send you the asciidoc file. It's plain text with some asciidoc
 formatings.

 I have no clue how to write groff. So I use the easier way via asciidoc.

I guess I mis-understood.

If you are writing the man page as asciidoc, that's what should get
checked in.

I'm guessing the other fvwm developers are okay with going to asciidoc?

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Thomas Adam
On 19 July 2012 22:11, Dan Espen des...@verizon.net wrote:
 I'm guessing the other fvwm developers are okay with going to asciidoc?

No.  I have an attempt at this, but it's not finished.  We either use
groff or nothing, and I don't mean groff backported from some
conversion tool.  If you don't know groff, start learning.

The alternative approach is to put the fvwm-menu-desktop under
docbook's control.

These are the only two options.

-- Thomas Adam



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Thomas Funk

Am 19.07.2012 22:38, schrieb Dan Espen:
 Thomas Funk t.f...@web.de writes:

 Hi Dan!

 I've attached the advised patch related to your last CVS version of
 fvwm-menu-desktop. It includes the needed functionality to response to
 the attached configuration tool for fvwm-menu-desktop. Two new options:
 - get-menus [selected, all] to send the found menus to the config gui
 - set-menus [filelist] to tell fvwm-menu-desktop which menus should be
   build
 The usage prompt for get-menus says it prints a comma separated list,
 but I get a space separated list.
Uups, forgot to change to 'space separated list'. Would you change it,
please?

 The usage prompt says selected is an option but it looks like anything
 other than all is what it looks for.  I'm not clear on what the
 selected option is doing.
Yes, right. You can use every word you want but it needs a word because
I sample in parsemenus() for not get_menus == '' (it's for both). As the
user doesn't know it I decided to use 'selected' for the other possibility.

 You're English it pretty good.  No such word as founded though.
Thanks for the compliment :-) I try to reduce the german part of my
english to a bearable level with talking and writing ^^

 Rule of thumb, NEVER use the word will in documentation.
 Always describe features as already there.
Ah, ok. Not known. Thanks for the tip.

Thomas




Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Dan Espen
Thomas Adam tho...@fvwm.org writes:

 On 19 July 2012 22:11, Dan Espen des...@verizon.net wrote:
 I'm guessing the other fvwm developers are okay with going to asciidoc?

 No.  I have an attempt at this, but it's not finished.  We either use
 groff or nothing, and I don't mean groff backported from some
 conversion tool.  If you don't know groff, start learning.

I thought since you were making the attempt, you thought asciidoc would
be a good direction to go in.

 The alternative approach is to put the fvwm-menu-desktop under
 docbook's control.

 These are the only two options.

Okay with me.

TF:

All I really need is the words.
I can add (t)groff/man markup as needed.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Thomas Adam
On Thu, Jul 19, 2012 at 05:48:25PM -0400, Dan Espen wrote:
 Thomas Adam tho...@fvwm.org writes:
 
  On 19 July 2012 22:11, Dan Espen des...@verizon.net wrote:
  I'm guessing the other fvwm developers are okay with going to asciidoc?
 
  No.  I have an attempt at this, but it's not finished.  We either use
  groff or nothing, and I don't mean groff backported from some
  conversion tool.  If you don't know groff, start learning.
 
 I thought since you were making the attempt, you thought asciidoc would
 be a good direction to go in.

Yes it will be when it's ready.  It's pretty much done, bar some plugging in
scripts so it builds.  But until I can finish that and then rip out the
other docs, having it in Asciidoc means we can't use it, and that's bad.

-- Thomas Adam

-- 
Deep in my heart I wish I was wrong.  But deep in my heart I know I am
not. -- Morrissey (Girl Least Likely To -- off of Viva Hate.)



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Am 19.07.2012 22:38, schrieb Dan Espen:
 Thomas Funk t.f...@web.de writes:

 Hi Dan!

 I've attached the advised patch related to your last CVS version of
 fvwm-menu-desktop. It includes the needed functionality to response to
 the attached configuration tool for fvwm-menu-desktop. Two new options:
 - get-menus [selected, all] to send the found menus to the config gui
 - set-menus [filelist] to tell fvwm-menu-desktop which menus should be
   build
 The usage prompt for get-menus says it prints a comma separated list,
 but I get a space separated list.
 Uups, forgot to change to 'space separated list'. Would you change it,
 please?

As you probably know by now, I did.

 The usage prompt says selected is an option but it looks like anything
 other than all is what it looks for.  I'm not clear on what the
 selected option is doing.
 Yes, right. You can use every word you want but it needs a word because
 I sample in parsemenus() for not get_menus == '' (it's for both). As the
 user doesn't know it I decided to use 'selected' for the other possibility.

I don't see get-menus in the man page.
I think you want the option to be:

--get-menus all | desktop

with an error for any other value.

 Rule of thumb, NEVER use the word will in documentation.
 Always describe features as already there.
 Ah, ok. Not known. Thanks for the tip.

Pet peeve.

We tend to write documentation describing new features as this
will do X, but when the reader sees it, it does do X.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-19 Thread Dan Espen
Thomas Adam tho...@fvwm.org writes:

 On Thu, Jul 19, 2012 at 05:48:25PM -0400, Dan Espen wrote:
 Thomas Adam tho...@fvwm.org writes:
 
  On 19 July 2012 22:11, Dan Espen des...@verizon.net wrote:
  I'm guessing the other fvwm developers are okay with going to asciidoc?
 
  No.  I have an attempt at this, but it's not finished.  We either use
  groff or nothing, and I don't mean groff backported from some
  conversion tool.  If you don't know groff, start learning.
 
 I thought since you were making the attempt, you thought asciidoc would
 be a good direction to go in.

 Yes it will be when it's ready.  It's pretty much done, bar some plugging in
 scripts so it builds.  But until I can finish that and then rip out the
 other docs, having it in Asciidoc means we can't use it, and that's bad.

If we add an asciidoc file, I'd expect the Makefile to be modified to
produce the man page or html as required.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-17 Thread Thomas Funk
2012/7/17 Dan Espen des...@verizon.net wrote:
 Thomas Adam tho...@fvwm.org writes:

 On Mon, Jul 16, 2012 at 06:23:17PM -0400, Dan Espen wrote:
 Thomas Adam tho...@fvwm.org writes:

  On Mon, Jul 16, 2012 at 11:35:20PM +0200, Thomas Funk wrote:
  Regenerate Menu(s)
 
  Why can this not be an on-disk cache or something instead of requiring the
  user to care to regenerate the menus?

 The purpose of Regenerate Menus is to get a new menu after you've
 installed a new package.   A cache would only make the problem worse.

 Actually, no.  Effectively this is what Debian does with its menuing system
 and it works just fine.  I see no reason why we need an explicit
 regeneration of these menus.

 I'm not following.

 If I install a new package, say Evolution, it won't be in the Fvwm
 menus.  Not until the menu is regenerated.

 How is a user supposed to get a new menu with Evolution in it?
I've looked a little around and the easiest way is to scan the
$XDG_DATA_HOME ($HOME/.local/share) and $XDG_DATA_DIRS (/usr/local/share/,
/usr/share/) periodically if .desktop files are added/removed there.

For that an own module for menu creation/changing/updating will be
beneficial ;-). Due to the fact that I am working on that stuff I would
start with such a module. But could take a little while ;-) ...

In the meantime it would be fine if anybody who's interested in helping
would test fvwm-menu-desktop and report bugs here on the list.

Dan, I will send you a small bugfix patch for the actual CVS version. The
fixes are in the last patch included but as this is a proof of concept
would be better to seperate them.

Thomas



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-17 Thread Dan Espen
Thomas Funk t.funk...@googlemail.com writes:

 2012/7/17 Dan Espen des...@verizon.net wrote:
 Thomas Adam tho...@fvwm.org writes:

 On Mon, Jul 16, 2012 at 06:23:17PM -0400, Dan Espen wrote:
 Thomas Adam tho...@fvwm.org writes:

  On Mon, Jul 16, 2012 at 11:35:20PM +0200, Thomas Funk wrote:
  Regenerate Menu(s)
 
  Why can this not be an on-disk cache or something instead of requiring 
  the
  user to care to regenerate the menus?

 The purpose of Regenerate Menus is to get a new menu after you've
 installed a new package.   A cache would only make the problem worse.

 Actually, no.  Effectively this is what Debian does with its menuing system
 and it works just fine.  I see no reason why we need an explicit
 regeneration of these menus.

 I'm not following.

 If I install a new package, say Evolution, it won't be in the Fvwm
 menus.  Not until the menu is regenerated.

 How is a user supposed to get a new menu with Evolution in it?
 I've looked a little around and the easiest way is to scan the
 $XDG_DATA_HOME ($HOME/.local/share) and $XDG_DATA_DIRS (/usr/local/share/,
 /usr/share/) periodically if .desktop files are added/removed there.

Polling for changes?
Nope, I'd rather require specific user action.

 For that an own module for menu creation/changing/updating will be
 beneficial ;-). Due to the fact that I am working on that stuff I would
 start with such a module. But could take a little while ;-) ...

 In the meantime it would be fine if anybody who's interested in helping
 would test fvwm-menu-desktop and report bugs here on the list.

 Dan, I will send you a small bugfix patch for the actual CVS version. The
 fixes are in the last patch included but as this is a proof of concept
 would be better to seperate them.

Okay.  As you've seen I'm a bit slow to look at these things.
I haven't looked at your latest work yet.
I will get to it though.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-17 Thread Thomas Funk

 Thomas Funk t.funk...@googlemail.com wrote:
 Dan, I will send you a small bugfix patch for the actual CVS 
version. The

 fixes are in the last patch included but as this is a proof of concept
 would be better to seperate them.
 Okay.  As you've seen I'm a bit slow to look at these things.
 I haven't looked at your latest work yet.
 I will get to it though.
Attached the patch for
- fixing bug, that empty menus were generated
- fix your fixme for Regenerate Applications Menu
- add forgotten --version
- add forgotten -t for title option
- update help

Thomas
--- /media/daten/shared/sourcen/cvs/fvwm/bin/fvwm-menu-desktop.in	2012-07-13 13:14:31.428392223 +0200
+++ fvwm-menu-desktop.in.p4.1.py	2012-07-18 00:20:03.011125095 +0200
@@ -97,7 +97,7 @@
 
 try:
 opts, args = getopt.getopt(sys.argv[1:], hs:t:vw,
-   [help, verbose, enable-mini-icons, with-titles, verbose,
+   [help, verbose, enable-mini-icons, with-titles, verbose, version,
 desktop=, size=, theme=, install-prefix=, menu-type=, title=]+obs_args+equaled_obs_parms)
 except getopt.GetoptError, err:
 # print help information and exit:
@@ -105,6 +105,7 @@
 print usage
 sys.exit(2)
 global verbose, force, size, theme, icon_dir, top, install_prefix, menu_type, with_titles, menu_entry_count
+version = 2.0
 verbose = False
 force = False
 desktop=''
@@ -123,11 +124,14 @@
 elif o in (-h, --help) :
 print usage
 sys.exit()
+elif o in (--version) :
+print fvwm-menu-desktop version  + version
+sys.exit()
 elif o in (--enable-mini-icons) :
 force=True
 elif o in (--desktop) :
 desktop=a
-elif o in (--title) :
+elif o in (-t, --title) :
 top=a
 elif o in (--install-prefix) :
 if a and not os.path.isabs(a):
@@ -364,6 +368,7 @@
 printtext('+ %s%s %s' % (name, iconfile, command))
 
 def parsemenus(menulist, desktop):
+global menu_entry_count
 if len(menulist) == 1:
 # user defines only one special menu
 parsemenu(xdg.Menu.parse(menulist[0]), top)
@@ -385,6 +390,7 @@
 if not menu_entry_count == 0:
 new_toptitles.append(title)
 new_menulist.append(menu)
+menu_entry_count = 0
 else:
 vprint( Menu is empty - won't be used!)
 
@@ -402,8 +408,10 @@
 def parsemenu(menu, name=, title=):
 global menu_entry_count
 m = re.compile('%[A-Z]?', re.I) # Pattern for %A-Z (meant for %U)
+gen_name = ''
 if not name :
 name = menu.getPath()
+gen_name = menu.getPath(True)
 if not title:
 title = name
 printtext('DestroyMenu %s' % name)
@@ -422,15 +430,16 @@
 menu_entry_count += 1
 	else:
 	printtext('# not supported: ' + str(entry))
+
+if gen_name == 'System':
+printmenu(Regenerate XDG Menu(s), system-software-update, FvwmForm FvwmForm-Desktop )
+
 printtext('')
 
 for entry in menu.getEntries():
 	if isinstance(entry, xdg.Menu.Menu):
 	parsemenu(entry)
 
-if (re.search('.*System Tools$',name)) : # fixme, find a better way to do this?
-printmenu(Regenerate Applications Menu, , FvwmForm  FvwmForm-Desktop )
-
 usage=
 A script which parses xdg menu definitions to build
 the corresponding fvwm menus.
@@ -443,13 +452,13 @@
   For the system wide menus use /etc/xdg/menus/
 --desktop NAMEdesktop name to build menus for:
   gnome, kde, xfce, lxde, debian, etc.
---menu-type NAME  applications (default), settings, preferences, etc.
+--menu-type NAME  applications, settings, preferences, etc.
 --theme NAME  gnome (default), oxygen, etc. Don't use hicolor. 
   It's the default fallback theme if no icon will be found.
 -w, --with-titles generate menus with titles.
 --enable-mini-icons   enable mini-icons in menu
--s, --sizeset size of mini-icons in menu. Default is 24.
---title NAME  menu title of the top menu used by Popup command.
+-s, --size NUMset size of mini-icons in menu. Default is 24.
+-t, --title NAME  menu title of the top menu used by Popup command.
   Default is FvwmMenu
 -v, --verbose run and display debug info on STDERR
 


Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-17 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Dan Espen des...@verizon.net wrote:
 Polling for changes?
 Nope, I'd rather require specific user action.
 Suggestion:
 First step
 We release fvwm-menu-desktop as is or with my last patch and the
 reworked FvwmPerl script - user must update manually the menu(s)

 Second step
 In the next or ensuing release with the FvwmMenu module which polls
 e.g. every 5 min /usr/share/applications, /usr/local/share/applications
 and $HOME/.local/share for changes. This poll takes not much cpu load
 and time. I've tested this with
 time find /usr/share/applications -name *.desktop |wc -l
 189

 real0m0.088s
 user0m0.000s
 sys 0m0.004s

 And if the count in/decrease it starts a silent regenerate. So, user
 doesn't need updating after installing/removing a new package. But can
 regenerate manually already.

 Okay.  As you've seen I'm a bit slow to look at these things.
 I haven't looked at your latest work yet.
 I will get to it though.
 And ... what do you think about this proof of concept apart from that
 it is a little bit slow (will test Thomas' suggestion with IPC::Run) and
 not FvwmPerl like?

I'm guessing dbus or some other abomination does the job
for the desktops...

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Thomas Funk
2012/7/16 Dan Espen des...@verizon.net wrote:
 The code to generate all menus looks like it needs work.
 I find the same menus repeated in multiple places.
Yes I saw that but the multiple appearances are a result of the xml menus by
themselve. Depending whether they are used for, the menus are generated as
the sources were.

One possibility could be to create the menus and then search for double
entries, eliminate them and if a menu is empty delete it. But the actual
menu built process took on my Dual core system 10-15 seconds (with icon
conversion). With this selection certainly 25-30. For me too long. And for
slower machines far too much.

 I realize the XDG spec isn't helping but would some trimming be in order?
Personally I thought that fvwm-menu-desktop shall provide a possibility
for the user to choose the menus she/he wants. And that's what the tool
does. But we shouldn't strip down the menus.

In the next days I will present a fvwm-menu-desktop config tool based on
FvwmPerl which shows all founded menus on the system and let the user
decide which menu/menus she/he wants to create and how.

Perhaps that would be sufficient enough ...

Thomas



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Thomas Adam
On 16 July 2012 15:37, Thomas Funk t.funk...@googlemail.com wrote:
 2012/7/16 Dan Espen des...@verizon.net wrote:
 The code to generate all menus looks like it needs work.
 I find the same menus repeated in multiple places.
 Yes I saw that but the multiple appearances are a result of the xml menus by
 themselve. Depending whether they are used for, the menus are generated as
 the sources were.

Isn't this in the XDG spec as to which menus appear where, in
categories?  I'm sure it is.

 One possibility could be to create the menus and then search for double
 entries, eliminate them and if a menu is empty delete it. But the actual

No.  That's just admitting to not wanting to fix the problem.  :)

 In the next days I will present a fvwm-menu-desktop config tool based on
 FvwmPerl which shows all founded menus on the system and let the user
 decide which menu/menus she/he wants to create and how.

That might be useful longer-term, but I think I'd rather see the
basics of this menu generation working first of all.

-- Thomas Adam



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Dan Espen
Thomas Adam tho...@fvwm.org writes:

 On 16 July 2012 15:37, Thomas Funk t.funk...@googlemail.com wrote:
 2012/7/16 Dan Espen des...@verizon.net wrote:
 The code to generate all menus looks like it needs work.
 I find the same menus repeated in multiple places.
 Yes I saw that but the multiple appearances are a result of the xml menus by
 themselve. Depending whether they are used for, the menus are generated as
 the sources were.

 Isn't this in the XDG spec as to which menus appear where, in
 categories?  I'm sure it is.

 One possibility could be to create the menus and then search for double
 entries, eliminate them and if a menu is empty delete it. But the actual

 No.  That's just admitting to not wanting to fix the problem.  :)
?
 In the next days I will present a fvwm-menu-desktop config tool based on
 FvwmPerl which shows all founded menus on the system and let the user
 decide which menu/menus she/he wants to create and how.

 That might be useful longer-term, but I think I'd rather see the
 basics of this menu generation working first of all.

The basics work pretty well.

I really think the XDG folks have paid little attention to the concept
of a main menu or any organization at that level.

On my Fedora system I have Preferences as a top level menu now.
I also have Settings at the same level.  Inside Settings are
Preferences and Administration.

Which Preferences should be removed?

Despite the duplication, the current default of generating everything
at least gets me at all the menus the other desktops support.
I hate hunting for the right GUI configuration tool when I can't figure
out the right command line tool.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Thomas Funk
Dan Espen des...@verizon.net wrote:
On my Fedora system I have Preferences as a top level menu now.
I also have Settings at the same level. Inside Settings are
Preferences and Administration.

Which Preferences should be removed?
What I could imagine is, to scan the xml menus and build our own Fvwm
xml menu and then generate this with the python process. But which menu
should the main one to extend?

How does the parsing of the files are running? and in which data structure
do we organize it?

No small undertaking ...

Thomas



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Thomas Funk

Hi Dan!

I've attached the advised patch related to your last CVS version of
fvwm-menu-desktop. It includes the needed functionality to response to
the attached configuration tool for fvwm-menu-desktop. Two new options:
- get-menus [selected, all] to send the found menus to the config gui
- set-menus [filelist] to tell fvwm-menu-desktop which menus should be
  build

Also another option --insert-in-menu NAME. This was formed while writing
the manpage you requested. Normally the menus are located in a menu as
sub menus. This is ok but it looks quiet better if they appear directly
in e.g. the root menu - less one level.

Normally:

Root Menu
-
XDG Menus  Gnome-applications 
Gnome-settings 
Gnomecc 
--
Regenerate Menu(s)

With this option:

Root Menu
-
Gnome-applications 
Gnome-settings 
Gnomecc 
--
Regenerate Menu(s)

This works also for single menus. With the applications menu for example
it moves all sub menus into the Root menu like in other DEs:

Root Menu
-
Office 
Debian 
System 
Multimedia 
   :

The only difference to multiple menus is, that the 'Regeneration Menu'
entry will be omitted because if you want a series of single menus it
would look strange if the regeneration menu appears each time after a
menu.

About your 'Regeneration Menu' - it has been moved from 'Systems' to the
bottom of the top menu because it's not easy to find it. In Fedora it's
really a problem you know ...

It's only a nomination by me. Thoughts about this thingi are welcome.

Try the examples in the manpage you requested to get an overview about
the look and feel of the different display possibilities. The page is
created with asciidoc but in Groff format so you can look into it with
man ^^

Also attached is the config tool. It's based on FvwmPerl and creates a
FvwmForm-Desktop related to the available menus on the system. I'm not
the Perl Monger so code could be optimized. If you or Thomas would have
a look into the Perl part it would be nice.

I've implemented in this patch the --version parameter too because it
was forgotten. About the numbering - I set it to 2.0. Or should we use
the old format: 2.6.6?

also a bug fix for empty menus. I forgot to reset the counter after a
menu build. Therfore empty menus appear anyway.

Thomas
--- fvwm-menu-desktop.in.orig	2012-07-14 02:26:57.332795696 +0200
+++ fvwm-menu-desktop.in.py	2012-07-16 22:17:49.459889445 +0200
@@ -43,6 +43,7 @@
 import os
 from xdg.DesktopEntry import *
 import fnmatch
+import time
 
 
 def main ():
@@ -97,14 +98,17 @@
 
 try:
 opts, args = getopt.getopt(sys.argv[1:], hs:t:vw,
-   [help, verbose, enable-mini-icons, with-titles, verbose,
-desktop=, size=, theme=, install-prefix=, menu-type=, title=]+obs_args+equaled_obs_parms)
+   [help, verbose, enable-mini-icons, with-titles, version,
+desktop=, size=, theme=, install-prefix=, menu-type=,
+title=, get-menus=, set-menus=, insert-in-menu=]+obs_args+equaled_obs_parms)
 except getopt.GetoptError, err:
 # print help information and exit:
 print str(err) # will print something like option -a not recognized
 print usage
 sys.exit(2)
-global verbose, force, size, theme, icon_dir, top, install_prefix, menu_type, with_titles, menu_entry_count
+global verbose, force, size, theme, icon_dir, top, install_prefix, menu_type, menu_list_length 
+global with_titles, menu_entry_count, get_menus, timestamp, set_menus, printmode, insert_in_menu
+version = 2.0
 verbose = False
 force = False
 desktop=''
@@ -112,10 +116,15 @@
 theme='gnome'
 icon_dir=~/.fvwm/icons
 top='FvwmMenu'
+insert_in_menu = False
 install_prefix = ''
 menu_type = ''
 with_titles = False
 menu_entry_count = 0
+menu_list_length = 0
+get_menus = ''
+printmode = True
+set_menus = []
 
 for o, a in opts:
 if o == -v:
@@ -123,12 +132,27 @@
 elif o in (-h, --help) :
 print usage
 sys.exit()
+elif o in (--version) :
+print fvwm-menu-desktop version  + version
+sys.exit()
 elif o in (--enable-mini-icons) :
 force=True
+elif o in (--insert-in-menu) :
+top=a
+insert_in_menu = True
 elif o in (--desktop) :
 desktop=a
-elif o in (--title) :
+elif o in (-t, --title) :
 top=a
+elif o in (--get-menus) :
+get_menus=a
+printmode = False
+elif o in (-s,--size) :
+size = int(a)
+elif o in (--set-menus) :
+if a[-1] == ' ':
+a = a[:-1]
+set_menus=a.split(' ')
 elif o in (--install-prefix) :
 if 

Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Thomas Adam
On Mon, Jul 16, 2012 at 11:57:43PM +0200, Thomas Funk wrote:
 How?
 No examples found ...

What is it you can't infer from the following?

man FvwmPerl

and:

http://fvwm.org/documentation/perllib/

I'm really really short on time at the moment, but you need to use either or
both of the above, because the perl script as-is isn't quite right yet.  I'm
sure it works, but we have frameworks for dealing with this without
reinventing the wheel, so let's use them.

-- Thomas Adam

-- 
Deep in my heart I wish I was wrong.  But deep in my heart I know I am
not. -- Morrissey (Girl Least Likely To -- off of Viva Hate.)



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Dan Espen
Thomas Adam tho...@fvwm.org writes:

 On Mon, Jul 16, 2012 at 11:35:20PM +0200, Thomas Funk wrote:
 Regenerate Menu(s)

 Why can this not be an on-disk cache or something instead of requiring the
 user to care to regenerate the menus?

The purpose of Regenerate Menus is to get a new menu after you've
installed a new package.   A cache would only make the problem worse.

I'm guessing that there is some way you can get auto-notification of a
menu update but I don't know what that is.

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-16 Thread Dan Espen
Thomas Adam tho...@fvwm.org writes:

 On Mon, Jul 16, 2012 at 06:23:17PM -0400, Dan Espen wrote:
 Thomas Adam tho...@fvwm.org writes:
 
  On Mon, Jul 16, 2012 at 11:35:20PM +0200, Thomas Funk wrote:
  Regenerate Menu(s)
 
  Why can this not be an on-disk cache or something instead of requiring the
  user to care to regenerate the menus?
 
 The purpose of Regenerate Menus is to get a new menu after you've
 installed a new package.   A cache would only make the problem worse.

 Actually, no.  Effectively this is what Debian does with its menuing system
 and it works just fine.  I see no reason why we need an explicit
 regeneration of these menus.

I'm not following.

If I install a new package, say Evolution, it won't be in the Fvwm
menus.  Not until the menu is regenerated.

How is a user supposed to get a new menu with Evolution in it?

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-15 Thread Dan Espen
Thomas Funk t.funk...@googlemail.com writes:

 2012/7/6 Dan Espen des...@verizon.net wrote:

The code to generate all menus looks like it needs work.
I find the same menus repeated in multiple places.

For example, with no arguments:

AddToMenu FvwmStart-here
+ Preferences Popup Preferences

AddToMenu FvwmSettings
+ Preferences Popup Preferences


I realize the XDG spec isn't helping but would some trimming be in order?

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-09 Thread Thomas Funk

Dan Espen des...@verizon.net wrote:
 So maybe you can clean up this version a bit more
 and submit as a patch?
Attached. It's diffed against the latest CVS version of fvwm-menu-desktop.in

This popped out:

This can't be right:

if len(menulist) == 0:

sys.stderr.write(install_prefix+/+desktop+-+menu_type+.menu not 
available on this system. Exiting...\n)


For example:

python fvwm-menu-desktop.in.py --menu-type notfound
/debian-notfound.menu not available on this system. Exiting...
Fixed.

Not sure what this is:

python fvwm-menu-desktop.in.py --menu-type system-settings
Traceback (most recent call last):
  File fvwm-menu-desktop.in.py, line 470, in module
main()
  File fvwm-menu-desktop.in.py, line 170, in main
menulist, desktop = getmenulist(desktop, menu_type)
  File fvwm-menu-desktop.in.py, line 285, in getmenulist
desktop_dict[de_highest].add(menu)
KeyError: 'debian'
This happens because the the 'others' and 'none' were ignored in the
weighting. I did that before I sorted the keys to prevent that in the
first loop 'none' or 'others' are the start menus. And so in your case
debian was the winner but hasn't any menu and therefore no dict entry
exists. Only 'others'. So no key 'debian' - KeyError: 'debian'
Fixed.

1. We have less chance of losing the #!@PYTHON@ line.
In the CVS version #!/usr/bin/python is set instead of #!@PYTHON@
Should changed back?

Meanwhile, the man page is about half done.
Updated the fvwm-menu-desktop help also.

If we go this route,
it would be nice if you included some of the comments
you made.   At least for me, not all of this was obvious.
Done.

Also I fixed some issues I found while testing:
- The not working regex with trailing slash in install-prefix
  interpretation.
- Eliminate '%' behind menu entries if no icon will be found.
- Wrong conditional expression which tests the availability of
  $XDG_MENU_PREFIX.

Thomas




--- fvwm-menu-desktop.orig.py	2012-07-03 22:56:01.316247721 +0200
+++ Old/fvwm-menu-desktop.in.p4.py	2012-07-09 23:55:48.005438739 +0200
@@ -42,6 +42,7 @@
 import os.path
 import os
 from xdg.DesktopEntry import *
+import fnmatch
 
 
 def main ():
@@ -81,7 +82,6 @@
'png-icons-path',
'submenu-name-prefix',
'time-limit',
-   'title',
'tran-icons-path',
'tran-mini-icons-path',
'type',
@@ -97,14 +97,14 @@
 
 try:
 opts, args = getopt.getopt(sys.argv[1:], hs:t:vw,
-   [help, verbose, enable-mini-icons, with-titles,
-desktop=, size=, theme=, install-prefix=, menu-type=]+obs_args+equaled_obs_parms)
+   [help, verbose, enable-mini-icons, with-titles, verbose,
+desktop=, size=, theme=, install-prefix=, menu-type=, title=]+obs_args+equaled_obs_parms)
 except getopt.GetoptError, err:
 # print help information and exit:
 print str(err) # will print something like option -a not recognized
 print usage
 sys.exit(2)
-global verbose, force, size, theme, icon_dir, top, install_prefix, menu_type, with_titles
+global verbose, force, size, theme, icon_dir, top, install_prefix, menu_type, with_titles, menu_entry_count
 verbose = False
 force = False
 desktop=''
@@ -112,9 +112,10 @@
 theme='gnome'
 icon_dir=~/.fvwm/icons
 top='FvwmMenu'
-install_prefix = '/etc/xdg/menus/'
-menu_type = 'applications'
+install_prefix = ''
+menu_type = ''
 with_titles = False
+menu_entry_count = 0
 
 for o, a in opts:
 if o == -v:
@@ -125,14 +126,15 @@
 elif o in (--enable-mini-icons) :
 force=True
 elif o in (--desktop) :
-#?desktop=a + '-'
 desktop=a
+elif o in (--title) :
+top=a
 elif o in (--install-prefix) :
 if a and not os.path.isabs(a):
 assert False, install-prefix must be an absolute path
 # add trailing slash if not there already
-if (not re.search('.*[.]/$',a)) : # no trailing slash
-a=a+'/'
+if not a[-1] == '/' : # trailing slash
+a=a + '/'
 install_prefix = a
 
 elif o in (-s,--size) :
@@ -143,33 +145,177 @@
 menu_type = a
 elif o in (-w,--with-titles) :
 with_titles = True
+elif o in (--verbose) :
+verbose = True
 elif o in (str(dashed_obs_args+dashed_obs_parms)) :
 # Ignore
 sys.stderr.write( Warning: Arg +o+ is obsolete and ignored\n )
 else:
 assert False, unhandled option
+
+xdg_menu_prefix = (os.environ['XDG_MENU_PREFIX'] if os.environ.has_key('XDG_MENU_PREFIX') else '')
 
-check=install_prefix+desktop+menu_type+'.menu'
-menu = checkmenu(check)
+# First check if no user 

Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-06 Thread Thomas Funk
2012/7/6 Dan Espen des...@verizon.net wrote:
 Your code is pretty ingenious, and it solves the single biggest
 issue I had with the xdg spec.  Ie. if finds all the menus a WM
 might want to make visible to the user.
I'm very pleased to hear that the implementation suits your needs :-)

 If we go this route,
 it would be nice if you included some of the comments
 you made.   At least for me, not all of this was obvious.
Will do that then.

 I was thinking of leaving the choice of menus to generate up to
 the user.  Of course the distros could do the logical thing
 and create a single menu hierarchy or at least set some rules.

Yes, I thought the same. Not known how to do it with FvwmForm or
FvwmScript but I could implement
an option in fvwm-menu-desktop to printout a string with menus found on
the system like
--show-menus=[all, de-selected] and then the user can select/deselect
via checkboxes which menus
she/he wants to display. For that I have to rewrite the --desktop and
--menu-type functionality to handle
lists then.

 You'd want something like fvwm-menu-directory front ending FvwmForm.
With fvwm-menu-desktop it's better because the menus can checked if they're
empty.

 I got a little feedback from the xdg folks:
 ...
 It doesn't sound to me like they are going to address the issue in the
 near term.
Yep, looks so.

 I'd like to implement what's best for Fvwm.
That's also my intend.
 If XDG gets it's act together later we can replace what we've done
 with something simpler.
I don't think they will change it in the future anymore.

 So maybe you can clean up this version a bit more
 and submit as a patch?
I've submitted the patch in another email - Second try ... but
afterwards it was silly to put it in another thread because it
belongs to this one. Sorry about that. Won't be happen anymore.
Would you answer that email in this thread then? Or is this yet
impossible now?

 Thanks for your efforts,
 and I'm getting a few python lessons along the way...
You're welcome ^^

Thomas



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-05 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Dan Espen des...@verizon.net writes:

 It' works over file weighting because it's too complicated to check
 distribution relevant paths for finding the default desktop.

 Can you explain the weighting in terms a user would understand.
 I read the code once and still didn't have a clue.

Your code is pretty ingenious, and it solves the single biggest
issue I had with the xdg spec.  Ie. if finds all the menus a WM
might want to make visible to the user.

If we go this route,
it would be nice if you included some of the comments
you made.   At least for me, not all of this was obvious.

 I was thinking of leaving the choice of menus to generate up to
 the user.  Of course the distros could do the logical thing
 and create a single menu hierarchy or at least set some rules.

Yes, I thought the same. Not known how to do it with FvwmForm or
FvwmScript but I could implement
an option in fvwm-menu-desktop to printout a string with menus found on
the system like
--show-menus=[all, de-selected] and then the user can select/deselect
via checkboxes which menus
she/he wants to display. For that I have to rewrite the --desktop and
--menu-type functionality to handle
lists then.

You'd want something like fvwm-menu-directory front ending FvwmForm.


I got a little feedback from the xdg folks:

  DE I just don't get the logic of having a standard for
  DE just the applications category.

  I believe the rationale is that only applications.menu is reserved by
  the spec, and XDG_MENU_PREFIX was a way to handle conflicts between
  different applications.menu shipped by different desktops.

  No other menu name is defined in the spec, and so we were instead
  relying on the fact that desktops would not create conflicts.

  That being said, I don't think I'd be opposed to using XDG_MENU_PREFIX
  for all .menu files. We should just make sure that it doesn't create any
  compatibility issue.

It doesn't sound to me like they are going to address the issue in the
near term.

I'd like to implement what's best for Fvwm.
If XDG gets it's act together later we can replace what we've done
with something simpler.

So maybe you can clean up this version a bit more
and submit as a patch?

Thanks for your efforts,
and I'm getting a few python lessons along the way...

-- 
Dan Espen



Re: First try of fvwm-menu-desktop which creates a full menu

2012-07-01 Thread Dan Espen
Thomas Funk t.f...@web.de writes:

 Hi,

 attached is my first try of a fvwm-menu-desktop which creates a menu
 with all desktop related menus (if they have entries).

Interesting.

 It' works over file weighting because it's too complicated to check
 distribution relevant paths for finding the default desktop.

Can you explain the weighting in terms a user would understand.
I read the code once and still didn't have a clue.

 It works under OpenSuse, Fedora, Mandriva and Debian fine and creates
 a menu with a structure like this:
 Fedora 14 example
 Root:
   Documentation 
   Gnome-applications 
   Gnome-screensavers 
   Gnomecc 
   Preferences 
   Server-settings 
   Settings 
   Start-here 
   System-settings 

I was thinking of leaving the choice of menus to generate up to
the user.  Of course the distros could do the logical thing
and create a single menu hierarchy or at least set some rules.

This popped out:

This can't be right:

if len(menulist) == 0:
sys.stderr.write(install_prefix+/+desktop+-+menu_type+.menu not 
available on this system. Exiting...\n)

For example:

python fvwm-menu-desktop.in.py --menu-type notfound
/debian-notfound.menu not available on this system. Exiting...
 ^^^

Not sure what this is:

python fvwm-menu-desktop.in.py --menu-type system-settings
Traceback (most recent call last):
  File fvwm-menu-desktop.in.py, line 470, in module
main()
  File fvwm-menu-desktop.in.py, line 170, in main
menulist, desktop = getmenulist(desktop, menu_type)
  File fvwm-menu-desktop.in.py, line 285, in getmenulist
desktop_dict[de_highest].add(menu)
KeyError: 'debian'


 I've attached the complete file and not a patch because too much changed
 and it's easier for testing ^^

Not good.  Doesn't contain the Usage fixes I recently committed.

I'm not sure how you're testing, but there's a hint at the bottom
of the file that Emacs reacts to.  If you test that way there are 2
benefits:

1. We have less chance of losing the #!@PYTHON@ line.
2. Diffs will work without me having to change the file names.

 The other functionality with --desktop=whatever_desktop_name,
 --menu-type=whatever_menu_name or/and --install-prefix=whatever_path
 should work also.

 Dan, I don't know if applications-gnome.menu would be created. In my
 simulation
 it is listed but there could be problems with the xdg-automatism. See here:
 http://lists.fedoraproject.org/pipermail/devel/2011-August/155342.html
 https://bugzilla.redhat.com/show_bug.cgi?id=754845

I see.  If it's been declared a bug, and it looks like it,
we can just ignore applications-gnome because it will probably go away.

 And I found a very interesting entry at the end here:
 http://people.gnome.org/~walters/0001-Ship-applications-gnome.menu.patch
 which could be explain the change from gnome-applications.menu to
 applications-gnome.menu:
 +* Mon Apr 11 2011 Colin Walters walt...@verbum.org - 3.0.0-2
 +- Ship applications-gnome.desktop; we don't want GNOME 3 to use
 redhat-menus.

I must be dull.  Can't see why they did that.

I've subscribed to the xdg mailing list, asked my question.
Still waiting for an answer.

Meanwhile, the man page is about half done.

-- 
Dan Espen