Fiz mais progressos, mas a solução ainda não é a ideal:
Eu estou usando Lubuntu 16.04 com PCManFM 1.24. Para pen drives USB eu recebo "Eject Removable Media", mas para unidades de disco USB, eu não recebo "Safely Remove Drive" como você faz no Nautilus (eu só recebo Unmount).
A primeira questão é obter o contexto do botão direito do mouse em dispositivos onde, infelizmente, parece que não há suporte para ações no painel esquerdo do PCManFM (ou Nautilus, mas as ações funcionam no painel esquerdo do Nemo, mas as ações são implementadas de maneira diferente no Nemo ).
Eu tenho um work-a-round para isso, mostrando o ícone "Dispositivos" no painel esquerdo, marcando "Dispositivos" em "Mostrar nos lugares" em Editar Preferências-Layout, onde você pode, em seguida, clique direito no dispositivo no painel direito conforme mostrado no link em anexo:
dispositivos pcmanfm clique com o botão direito na imagem
A segunda questão é o script para remover a unidade com segurança:
O argumento passado para o script de ação no exemplo acima é:
computador: ///ST1000LM010-9YH146.drive (ou apenas ST1000LM010-9YH146 com% w)
o que não é ideal - não acredito que identifique de forma única a unidade, pois ela não inclui o número de série. Abaixo está a saída de "udisksctl status":
$ udisksctl status
MODEL REVISION SERIAL DEVICE
--------------------------------------------------------------------------
WDC WD5000BEVT-22ZAT0 01.01A01 WD-WX70A9903180 sda
Kingston DataTraveler G3 1.00 001CC0EC31D0F081F6071284 sdb
ST1000LM010-9YH146 CC9F W2M076TD sdc
Portanto, meu script corresponde ao modelo, portanto, você não tem dois dispositivos idênticos conectados para pegar o dispositivo.
Para implementar o script, crie o arquivo ~ / .local / share / filemanager / actions / eject.desktop
contendo:
[Desktop Entry]
Type=Action
Name=Safely Remove Drive
Icon=drive-harddisk-usb
Profiles=profile-zero;
[X-Action-Profile profile-zero]
MimeTypes=inode/mount-point
Exec=/home/mike/.local/share/file-manager/actions/eject.sh %w
Name=Default profile
Eu coloquei o script, eject.sh, especificado por "Exec" em ~ / .local / share / filemanager / actions, mas note que você não pode usar "~" ou "$ HOME" em um arquivo de desktop para que você tenha para especificar o caminho completo como eu fiz acima
O script eject.sh deve conter:
device='udisksctl status | awk -v d=$1 '
BEGIN {
gsub("%20"," ",d)
sub("$"," ",d) # Add a space on the end to give a more exact match
sub("^","^",d) # Add ^ to start to give a more exact match
}
$0 ~ d {
print "/dev/"$NF
}' '
if [ "$device" == "/dev" ]
then
echo "Removable device not found"
else
for dev in 'df | awk -v device=$device '$1 ~ device {print $1}' '
do
echo "Unmounting "$dev
udisksctl unmount -b $dev
done
echo "Powering off: "$device
udisksctl power-off -b $device
fi