6

I have written a tool which automatically formats and copies files to USB flash drives when they are inserted. It needs the drive to be unmounted to format it.

Normally Nautilus will automatically mount the drive when inserted, so I have to wait for this to happen and then unmount the drive before formatting it. The only problem is that if the user has disabled automounting then my program will wait forever.

I could change the dconf auto-mount setting when my program starts, and then change it back when it exits, but this is not a good solution because the setting wil not be restored if my program crashes.

How can I temporarily prevent Nautilus from automounting USB drives only during the time when my program is running?

  • 1
    This might be a duplicate question of (http://askubuntu.com/questions/191527/disable-auto-opening-nautilus-window-after-auto-mount) – thom Jul 24 '13 at 16:11

2 Answers2

1

You may use PROGRAM to check if your program is running to activate that UDEV rule, otherwise it is disabled because pgrep returns unsuccessfully.

PROGRAM

Execute a program to determine whether there is a match; the key is true if the program returns successfully. The device properties are made available to the executed program in the environment. The program's standard output is available in the RESULT key.

This can only be used for very short-running foreground tasks. For details, see RUN.

source: man udev

  1. Add new rules file

    /etc/udev/rules.d/90-prevent-auto-mount.rules

    ACTION=="add", KERNEL="sd[a-z][0-9]*", DRIVERS=="usb-storage", PROGRAM="/usr/bin/pgrep yourprogramname", ENV{UDISKS_IGNORE}="1"
    
  2. Reload rules

    sudo control --reload-rules
    

BTW, udisk2 is the one responsible for auto-mounting

user.dz
  • 48,105
0

UPDATE: I have ignored the most important specification: "without making permanent changes to the system". Still solvable I'd say, but not without some deep research work into desktop session life cycle or desktop event handling. That ain't my expertise. ;)

Obviously you know already how to switch off the feature in question. If you're concerned that it is not switched back if your program crashes then there are only two possibilities: Take care that your program does not crash or program a program that watches your program and switches the feature back when your program is not running.

But maybe there is a different solution. You could append a line like this to /etc/fstab:

LABEL=somemagic /path ntfs noauto,user 0 0

Then if the filesystem on the drive carries that label it remains untouched by the automount feature and you can (u)mount it without disturbance. See man mount and man fstab for details. You could also use UUID instead of LABEL, but that depends on your use case and filesystem.

Johannes Kohnen
  • 623
  • 3
  • 12