On 2015-12-12, Dan Espen wrote:

> Oleksandr Gavenko <gaven...@gmail.com> writes:
>>   ImagePath +:/usr/share/icons/gnome/16x16/places
>>   ImagePath +:/usr/share/icons/gnome/32x32/apps
>>   ImagePath +:/usr/share/icons/gnome-colors-common/32x32/apps
>>   ImagePath +:/usr/share/icons/locolor/32x32/apps
>>   # ImagePath +:/usr/share/icons/hicolor/16x16/apps
>>   ImagePath +:/usr/share/icons/hicolor/22x22/apps
>>   ImagePath +:/usr/share/icons/hicolor/24x24/apps
>>   ImagePath +:/usr/share/icons/hicolor/32x32/apps
>>   ImagePath +:/usr/share/icons/hicolor/48x48/apps
>>   # ImagePath +:/usr/share/icons/hicolor/64x64/apps
>>   # This paths contain large icons for some apps, they make menus look 
>> ugly...
>>   # ImagePath +:/usr/share/app-install/icons/
>>   # ImagePath +:/usr/share/pixmaps
>
> I don't see the logic of adding all the different icon sizes to your
> image path.  They all have the same names, so only the first size you
> mention is going to be found.
>
In ideal world each icon have flavor in 16x16, 22x22, 24x24, etc. But some
miss:

  #!/bin/bash

  list=(22x22 24x24 32x32 48x48)

  for ((i=0; i<${#list[*]}; i++)) do
      for ((j=$((i+1)); j<${#list[*]}; j++)) do
          printf "%s %s  " ${list[$i]} ${list[j]};
          for f in /usr/share/icons/hicolor/${list[i]}/apps/*; do
            f=${f##*/}; f=${f%.*}
            if [ ! -f /usr/share/icons/hicolor/${list[j]}/apps/${f##*/}.* ]; 
then
                echo fail
            fi
          done | wc -l
      done
  done

Result on my host:

  Prese Absent Num

  22x22 24x24  4
  22x22 32x32  3
  22x22 48x48  3
  24x24 32x32  8
  24x24 48x48  4
  32x32 48x48  13

>> Some paths commented because they provide too big images. Fvwm uses exact
>> size of image when it displays icon. Some of them occupy half of screen!
>>
>> Are there any syntax:
>>
>>  (1) to set maximum allowed icon size for displaying (and ignore large 
>> image)?
>>  (2) to specify how resize image (scale down any that bigger then ...)?
>
> No.  You wouldn't want your icon resized each time it's displayed.

That is not true in my environment (Debian with stock Fvwm v2.6.5).

I issue:

  $ inotifywait -m -r /usr/share/icons/ /usr/share/app-install/icons/ 
/usr/share/pixmaps

and during walking across menu entries there are no access to above
directories.

Also my ~/.xsession-errors full of:

  [fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from lmms.xpm
  [fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from muse_icon.xpm
  [fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from mscore.xpm

during `xinit' evaluation.

So Fvwm hold menu icons in memory!

> Better to pick the size you want at startup time like
> fvwm-menu-desktop does.
>
I read about this script on this list but fail use it.

After debugging I found why, this:

  sub get_root_menu
  {
      my $xdg_config_dirs = $ENV{XDG_CONFIG_DIRS} || '';
      my $xdg_menu_prefix = $ENV{XDG_MENU_PREFIX} || '';

      foreach my $dir (split(/:/, $xdg_config_dirs), "/etc/xdg")
      {
          my $menu_file="$dir/menus/${xdg_menu_prefix}applications.menu"; # 
      warn "looking for root menu $menu_file\n" if $verbose;
          return "$menu_file" if -f "$menu_file";
      }
      return "";
  }

uses $XDG_MENU_PREFIX. After reading man page I assume that I should pass
desktop name:

  $ ls /etc/xdg/menus/*.menu
  /etc/xdg/menus/debian-menu.menu
  /etc/xdg/menus/gnome-applications.menu
  /etc/xdg/menus/lxde-applications.menu
  /etc/xdg/menus/xfce-applications.menu

as --desktop option. But actually it work only with calling like:

  $ XDG_MENU_PREFIX=debian- fvwm-menu-desktop
  $ XDG_MENU_PREFIX=gnome- fvwm-menu-desktop
  $ XDG_MENU_PREFIX=xfce- fvwm-menu-desktop

It look strange and XDG_MENU_PREFIX isn't mentioned in man page ((

Man page doesn't point to https://developer.gnome.org/menu-spec/ either.

Does mainstream supply man page or that do Debian?

>> I can't control which icon is supplied by package in Debian repository. That
>> is true for:
>>
>>   /usr/share/app-install/icons/
>>   /usr/share/pixmaps/
>>
>> Most package doesn't respect /usr/share/icons/hicolor/24x24/apps like
>> directories and place icons in above paths.
>>
>> Auto-generated /etc/X11/fvwm/menudefs.hook uses full path to icon so I can't
>> select desired size by ImagePath.
>>
>> Some 3rd-party packages I install in /opt hierarchy and usually they also 
>> have
>> single BIG icon.
>>
>> I like to see (2) option e.g. something like:
>>
>>   + &Firefox%iceweasel.png%32% Exec exec firefox -no-remote -P devel
>>
>> but (1) option also take a lot of images from /usr/share/pixmaps like
>> directories.
>>
>> Another option is to preprocess /etc/X11/fvwm/menudefs.hook and place resized
>> images into predefined path.
>>
>> Or carefully craft processing of /etc/xdg/menus/*.menu. I use xdg.Menu and
>> xdg.DesktopEntry Python classes to build menus myself.
>>
>> If Fvwm hold menu images into memory (without loading on demand) - present of
>> (2) option looks natural for me.
>
> You've lost me.
> menudefs.hook looks to me like some kind of menu generator.

Debian have "Debian menu policy":

  https://www.debian.org/doc/packaging-manuals/menu.html/

This is ancient format (dated 1997) to unify menu format for Debian packages. I
filed several bugs to include menu entry for some packages.

Today nobody care about about that menu system. And about 32x32 icons - just
put `.svg' file with `.desktop' file.

Only bizarre WM adapted to use Debian menu system:

  $ apt-file search /etc/menu-methods

  aewm: /etc/menu-methods/aewm
  awesome: /etc/menu-methods/awesome
  blackbox: /etc/menu-methods/blackbox
  choosewm: /etc/menu-methods/choosewm
  ctwm: /etc/menu-methods/ctwm
  deskmenu: /etc/menu-methods/deskmenu
  fluxbox: /etc/menu-methods/fluxbox
  flwm: /etc/menu-methods/flwm
  fvwm: /etc/menu-methods/fvwm
  fvwm-crystal: /etc/menu-methods/fvwm-crystal
  fvwm1: /etc/menu-methods/fvwm1
  icewm-common: /etc/menu-methods/icewm-common
  jwm: /etc/menu-methods/jwm
  mwm: /etc/menu-methods/mwm
  notion: /etc/menu-methods/notion
  notion: /etc/menu-methods/notion-i18n
  olvwm: /etc/menu-methods/olvwm
  olwm: /etc/menu-methods/olwm
  openbox: /etc/menu-methods/openbox
  pekwm: /etc/menu-methods/pekwm
  ratmenu: /etc/menu-methods/ratmenu
  ratpoison: /etc/menu-methods/ratpoison
  rxvt: /etc/menu-methods/rxvt
  sapphire: /etc/menu-methods/sapphire
  sawfish: /etc/menu-methods/sawfish
  tritium: /etc/menu-methods/tritium
  twm: /etc/menu-methods/twm
  vtwm: /etc/menu-methods/vtwm
  windowlab: /etc/menu-methods/windowlab
  wm-icons: /etc/menu-methods/wm-icons
  wmaker: /etc/menu-methods/wmaker
  wmaker-common: /etc/menu-methods/wmappearance
  wmanager: /etc/menu-methods/wmanager

`/etc/X11/fvwm/menudefs.hook' is actually result of `/etc/menu-methods/fvwm'
and I source that by:

  Read /etc/X11/fvwm/menudefs.hook quiet

> You should try fvwm-menu-desktop if you haven't done so already.
> Use the size= parameter to control the icon sizes.

  $ fvwm-menu-desktop | grep size || echo fail
  fail

  $ fvwm-menu-desktop --version
  2.6.5

Too old or Debian maintainer broke script?

How is script supposed to manage icon size? It resize them and store under
~/.cache/fvwm dir?

================================================================

I install my:

  http://hg.defun.work/skel/file/tip/.fvwm/config

by:

  http://hg.defun.work/skel/file/tip/Makefile

and uses little:

  http://hg.defun.work/skel/file/tip/.fvwm/xdg2fvwm.py

to generate menu from /etc/xdg/menus/*.menu entries.

-- 
Best regards!


Reply via email to