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