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!