Hi Reza, thanks for the patch. I think that it is the right way for now. But GIO_LAUNCH_DESKTOP is not interpreted as a list by glib. It would be better to communicate intent by constructing GIO_LAUNCH_DESKTOP as (wrap-program (string-append out "/bin/pcmanfm-qt") `("GIO_LAUNCH_DESKTOP" = (,(string-append glib "/bin/gio-launch-desktop")))) . Otherwise, with ":" and "prefix" it very much sounded like a list. Also, could you make it check whether /bin/gio-launch-desktop exists and error out otherwise? That is in order for us to notice the workaround later when we move the gio-launch-desktop executable. (if (file-exists? ".........../bin/gio-launch-desktop") (wrap-program ........) (error "Could not find gio-launch-desktop"))