[Ação] Montar e desmontar imagem ISO no Dolphin pelo UDISK (KDE) -Atualizado e consertado - 6/2/20

Monte um arquivo desktop em : ~/.local/share/kservices5/ServiceMenus/

exemplo: montarISO.desktop

E adicione

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,application/x-cd-image
Actions=mountISO;umountISO;

[Desktop Action mountISO]
Name=Montar imagem iso9660
Icon=utilities-terminal
Exec=udisksctl loop-setup -r -f "%f"

[Desktop Action umountISO]
Name=Desmontar imagem iso9660
Icon=utilities-terminal
Exec=udisksctl loop-delete -b /dev/loop0

Pronto agora clique com botão direito do mouse na imagem e vai em Ações - Montar imagem iso9660
Para desmontar, clique com botão direito do mouse na imagem e vai em Ações - Desmontar imagem iso9660

Obs: Substitua /dev/loop0 com o nome do dispositivo loop.
Com o script normalmente não precisa fazer está modificação
pode colocar o asterisco

Exec=udisksctl loop-delete -b /dev/loop*

Assim ele finalizara todos loop
Caso não queira ser perguntado sobre a senha na hora de montar a imagem

crie um arquivo em /etc/polkit-1/rules.d/
chamado de udisk.rules

e adicione o conteúdo

//Permitir acesso sem autenticação em partições externas
polkit.addRule(function(action, subject) {
    if (action.id.indexOf("org.freedesktop.udisks2.") == 0 && subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

No ubuntu e derivados

subject.isInGroup("wheel")

Mude wheel para o nome do usuário…não sei se ubuntu trabalha com grupo wheel

5 Curtidas

para mais informação

https://wiki.archlinux.org/index.php/Udisks

Usage

To manually mount a removable drive, for example /dev/sdc :

$ udisksctl mount -b /dev/sdc1

To unmount:

$ udisksctl unmount -b /dev/sdc1

See udisksctl --help for more.

Mount loop devices

To easily mount ISO images, use the following command:

$ udisksctl loop-setup -r -f image.iso

This will create a loop device and show the ISO image ready to mount. Once unmounted, the loop device will be terminated by udev.

Note: This mounts a read only image. To mount raw disk images, such as for QEMU, remove the -r flag, and release the image after use with udisksctl loop-delete -b /dev/loop0 . Substitute /dev/loop0 with the name of the loop device.

Hide selected partitions

If you wish to prevent certain partitions or drives appearing on the desktop, you can create a udev rule, for example /etc/udev/rules.d/10-local.rules :

KERNEL==“sda1”, ENV{UDISKS_PRESENTATION_HIDE}=“1” KERNEL==“sda2”, ENV{UDISKS_PRESENTATION_HIDE}=“1”

shows all partitions with the exception of sda1 and sda2 on your desktop. Note that if you are using udisks2, the above will not work as UDISKS_PRESENTATION_HIDE is no longer supported. Instead, use UDISKS_IGNORE as follows:

KERNEL==“sda1”, ENV{UDISKS_IGNORE}=“1” KERNEL==“sda2”, ENV{UDISKS_IGNORE}=“1”

Because block device names can change between reboots, it is also possible to use UUIDs (as gathered from executing the blkid /dev/sdX command) to hide partitions or whole devices:

Example

blkid /dev/sdX

/dev/sdX: LABEL=“Filesystem Label” UUID=“XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX” UUID_SUB=“YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY” TYPE=“btrfs”

Then the following line can be used:

SUBSYSTEM==“block”, ENV{ID_FS_UUID}==“XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX”, ENV{UDISKS_IGNORE}=“1”

The above line is also useful to hide multi device btrfs filesystems, as all the devices from a single btrtfs filesystem will share the same UUID across the devices but will have different SUB_UUID for each individual device.

Consertado um bug que fazia aparecer a ação no menu em todos os arquivos

ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/octet-stream;

Modificado para

ServiceTypes=KonqPopupMenu/Plugin,application/x-cd-image

Venho propor uma melhoria ao script:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,application/x-cd-image
Actions=mountISO;umountISO;

[Desktop Action mountISO]
Name=Montar imagem ISO9660
Icon=media-cdrom
Exec=udisksctl loop-setup -r -f "%f"

[Desktop Action umountISO]
Name=Desmontar imagem ISO9660
Icon=media-cdr
Exec=udisksctl loop-delete -b `losetup -O name -j "%f" | sed -ne '2p'`
  • Na versão original do script, o programa era capaz de gerenciar apenas uma imagem de cada vez. Assim que o usuário tentasse montar mais de uma imagem sem desmontar a primeira, a segunda, terceira, quarta etc. ficariam “presas” e exigiriam intervenção manual para ser desmontadas: Correção: trocar o segundo Exec (o com udisksctl loop delete) para chamar o shell e achar o dispositivo de fato associado à ISO em questão.
  • Os dois comandos tinham o mesmo ícones. Para torná-los mais distintos, botei dois Icon=XXX diferentes em cada ação.
3 Curtidas

Aproveitando que ele foi mencionado em outro tópico, uma pequena atualização à minha atualização que tinha feito em abril do ano passado e esqueci de compartilhar:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/x-cd-image
Actions=mountISO;umountISO;umountAll;

[Desktop Action mountISO]
Name=Montar imagem ISO9660
Icon=media-cdrom
Exec=udisksctl loop-setup -r -f "%f"

[Desktop Action umountISO]
Name=Desmontar imagem ISO9660
Icon=media-cdr
Exec=udisksctl loop-delete -b `losetup -O name -j "%f" | sed -ne '2p'`

[Desktop Action umountAll]
Name=Desmontar todas as imagens ISO9660
Icon=media-cdr
Exec=sh -c 'for img in `losetup -O name | tail +2`; do udisksctl loop-delete -b "$img"; done'

Isso cria uma terceira ação, “Desmontar todas as imagens ISO9660”.

Usar

não funcionou aqui.

1 Curtida