diff -Nur Thunar-0.5.0rc2.orig/docs/README.volumes Thunar-0.5.0rc2/docs/README.volumes --- Thunar-0.5.0rc2.orig/docs/README.volumes 2006-11-04 15:52:01.000000000 +0100 +++ Thunar-0.5.0rc2/docs/README.volumes 2006-11-09 22:52:38.000000000 +0100 @@ -49,8 +49,8 @@ On Linux platforms, Thunar requires HAL 0.5 or better to provide information about volumes. - To be able to mount and unmount volumes, you will also need either the pmount - utility or HAL with fstab-sync. Thunar may also support gnome-mount in the - future. + To be able to mount and unmount volumes, you will also need either the pmount, + the gnome-mount or the halmount (from ivman package) utility or HAL with + fstab-sync. To be able to eject dics, you will need the eject utility program. diff -Nur Thunar-0.5.0rc2.orig/thunar-vfs/thunar-vfs-volume-hal.c Thunar-0.5.0rc2/thunar-vfs/thunar-vfs-volume-hal.c --- Thunar-0.5.0rc2.orig/thunar-vfs/thunar-vfs-volume-hal.c 2006-11-04 15:52:14.000000000 +0100 +++ Thunar-0.5.0rc2/thunar-vfs/thunar-vfs-volume-hal.c 2006-11-09 22:24:07.000000000 +0100 @@ -307,12 +307,25 @@ } else { - /* fallback to plain mount */ - mount_point = thunar_vfs_path_dup_string (volume_hal->mount_point); - quoted = g_shell_quote (mount_point); - result = thunar_vfs_exec_sync ("mount %s", error, quoted); - g_free (mount_point); - g_free (quoted); + /* check if hal-mount (from ivman) is present */ + program = g_find_program_in_path ("halmount"); + if (G_LIKELY (program != NULL)) + { + /* try to use halmount then */ + quoted = g_shell_quote (volume_hal->device_file); + result = thunar_vfs_exec_sync ("%s %s", error, program, quoted); + g_free (program); + g_free (quoted); + } + else + { + /* fallback to plain mount */ + mount_point = thunar_vfs_path_dup_string (volume_hal->mount_point); + quoted = g_shell_quote (mount_point); + result = thunar_vfs_exec_sync ("mount %s", error, quoted); + g_free (mount_point); + g_free (quoted); + } } } @@ -383,12 +396,25 @@ } else { - /* fallback to plain umount */ - mount_point = thunar_vfs_path_dup_string (volume_hal->mount_point); - quoted = g_shell_quote (mount_point); - result = thunar_vfs_exec_sync ("umount %s", error, quoted); - g_free (mount_point); - g_free (quoted); + /* check if halmount is present */ + program = g_find_program_in_path ("halmount"); + if (G_LIKELY (program != NULL)) + { + /* try to use halmount then */ + quoted = g_shell_quote (volume_hal->device_file); + result = thunar_vfs_exec_sync ("%s -u %s", error, program, quoted); + g_free (program); + g_free (quoted); + } + else + { + /* fallback to plain umount */ + mount_point = thunar_vfs_path_dup_string (volume_hal->mount_point); + quoted = g_shell_quote (mount_point); + result = thunar_vfs_exec_sync ("umount %s", error, quoted); + g_free (mount_point); + g_free (quoted); + } } }