skip to navigation
skip to content

udiskie 1.5.1

Removable disk automounter for udisks

udiskie is a UDisks front-end that allows to manage removeable media such as CDs or flash drives from userspace. Its features include:

  • automount removable media when inserted
  • notifications (on insertion, mount, unmount, …)
  • GTK tray icon to manage all available devices
  • command line tools for manual un-/mounting
  • support for LUKS encrypted devices
  • support for loop devices (mounting iso archives, requires UDisks2)
  • password caching
  • works with either udisks1 or udisks2
  • an extensible code base (python)
  • a maintainer who is open for suggestions;)

All features can be indidually enabled or disabled (yes, you can submit unmaintainable code and make me salty!)

Project pages


  • Wiki contains installation instructions and additional information.
  • Man page describes the command line options
  • Source Code is hosted on github.
  • Latest Release is available for download on PyPI.
  • Issue Tracker is the right place to report any issues you encounter, ask general questions or suggest new features. There is also a public Mailing List if you prefer email.


For the next udiskie versions, I am mainly concerned with quality assurance and stability. For one this means reducing the number of supported runtime configurations and make the remaining easier to test, i.e.:

  • drop support for python2 to avoid unicode issues and make use of the new asyncio module which provides better error handling (stack traces!) than the current solution.
  • drop support for udisks1. The udisks1 API is rather unfit for the asynchronous nature of the problem which has led to numerous bugs and problems (plenty more probably waiting to be discovered as we speak)
  • add automated tests. needed desperately…



Date: 03.06.2016

  • fix unicode issue that occurs on python2 when stdout is redirected (in particular for zsh autocompletion)


Date: 03.06.2016

  • make systray menu flat (use udiskie --tray --menu smart to request the old menu) [#119]
  • extend support for loop devices (requires UDisks2) [#101]
  • support ubuntu/unity AppIndicator backend for status icon [#59]
  • add basic utility to obtain info on block devices [#122]
  • add zsh completions [#26]
  • improve UI menu labels for devices
  • fix error when force-ejecting device [#121]
  • respect configured ignore-rules in udiskie-umount
  • fix error message for empty task lists [#123]


Date: 15.05.2016

  • log INFO events to STDOUT (#112)
  • fix exception in notifications when action is not available. This concerns the retry button in the job_failed notification, as well as the browse action in the device_mounted notification (#117)
  • don’t show ‘browse’ action in tray menu if unavailable


Date: 13.05.2016

  • protect password dialog against garbage collection (which makes the invoking coroutine hang up and not unlock the device)
  • fix add_all/remove_all operations: only consider leaf/root devices within the handleable devices hierarchy:
  • avoid considering the same device twice (#114)
  • makes sure every handleable device is considered at all in remove_all


Date: 11.05.2016

  • signal failing mount/unmount operations with non-zero exit codes (#110)
  • suppress notifications for unhandled devices
  • add rules for docker devices marking them unhandled to avoid excessive notifications (#113)
  • allow mounting/unmounting using UUID (#90)
  • prevent warning when starting without X session (#102)
  • can now match against wildcards in config rules (#49)


Date: 02.04.2016

  • add is_loop and loop_file properties for devices
  • fix recursive mounting of crypto devices (udiskie-mount)
  • prevent empty submenus from showing


Date: 09.02.2016

  • fix problem with setupscript if utf8 is not the default encoding
  • fix crash when starting without X
  • basic support for loop devices (must be enabled explicitly at this time)
  • fix handling of 2 more error cases


Date: 04.01.2016

  • fix typo that prevents the yaml config file from being used
  • fix problem with glib/gio gir API on slackware (olders versions?)
  • fix bug when changing device state (e.g. when formatting existing device or burning ISO file to device)
  • improve handling of race conditions with udisks1 backend
  • fix notifications for devices without labels


Date: 28.12.2015

  • cleanup recent bugfixes
  • close some gates for more py2/unicode related bugs


Date: 24.12.2015

  • fix another bug with unicode data on command line (py2)
  • slightly improve stack traces in async code
  • further decrease verbosity while removing devices


Date: 24.12.2015

  • fix too narrow dependency enforcement
  • make udiskie slightly less verbose in default mode


Date: 24.12.2015

  • fix bug with unicode data on python2
  • fix bug due to event ordering in udisks1
  • fix bug due to inavailability of device data at specific time


Date: 22.12.2015

  • fix regression in get_password_tty


Date: 19.12.2015

  • fix problem in SmartTray due to recent transition to async


Date: 19.12.2015

  • go async (with self-made async module for now, until gbulb becomes ready)
  • specify GTK/Notify versions to be imported (hence fix warnings and a problem for the tray icon resulting from accidentally importing GTK2)
  • add optional password caching


  • revert “respect the automount flag for devices”
  • make dependency on Gtk optional


  • use icon hints from udev settings in notifications
  • respect the automount flag for devices
  • don’t fail if libnotify is not available


  • add actions to “Device added” notification
  • allow to configure which actions should be added to notifications


  • fix unicode issue in setup script
  • update license/copyright notices


  • use UDisks2 by default
  • add –password-prompt command line argument and config file entry


  • fix password prompt for GTK2 (tray is still broken for GTK2)
  • fix minor documentation issues


  • add key device_id for matching devices rather than only file systems
  • improve documentation regarding dependencies


  • fix careless error in man page


  • implemented internationalization
  • added spanish translation
  • allow to choose icons from a configurable list


  • compatibility with older version of pygobject (e.g. in Slackware 14.1)


  • handle exception if no notification service is installed


  • fix crash when calling udiskie mount/unmount utilites without udisks1 installed


  • fix crash when calling udiskie without having udisks1 installed (regression)


  • port to PyGObject, removing dependencies on pygtk, zenity, dbus-python, python-notify
  • use a PyGObject based password dialog
  • remove –password-prompt parameter
  • rename command line parameters
  • add negations for all command line parameters


  • remove the ‘–filters’ parameter for good
  • change config format to YAML
  • change default config path to $XDG_CONFIG_HOME/udiskie/config.yml
  • separate ignore filters from mount option filters
  • allow to match multiple attributes against a device (AND-wise)
  • allow to overwrite udiskies default handleability settings
  • raise exception if –config file doesn’t exist
  • add –options parameter for udiskie-mount
  • simplify local installations


There are some backward incompatible changes, hence the version break:

  • command line parameter ‘-f’/’–filters’ renamed to ‘-C’/’–config’
  • add sections in config file to disable individual mount notifications and set defaults for some program options (udisks version, prompt, etc)
  • refactor udiskie.cli, udiskie.config and udiskie.tray
  • revert ‘make udiskie a namespace package’
  • add ‘Browse folder’ action to tray menu
  • add ‘Browse folder’ action button to mount notifications
  • add ‘–no-automounter’ command line option to disable automounting
  • add ‘–auto-tray’ command line option to use a tray icon that automatically disappears when no actions are available
  • show notifications when devices dis-/appear (can be disabled via config file)
  • show ‘id_label’ in tray menu, if available (instead of mount path or device path)
  • add ‘Job failed’ notifications
  • add ‘Retry’ button to failed notifications
  • remove automatic retries to unlock LUKS partitions
  • pass only device name to external password prompt
  • add ‘–quiet’ command line option
  • ignore devices ignored by udev rules


  • fix logging in
  • more verbose log messages (with time) when having -v on
  • fix mounting devices that are added as ‘external’ and later changed to ‘internal’ [udisks1] (applies to LUKS devices that are opened by an udev rule for example)

0.6.3 (bug fix)

  • fix exception in Mounter.detach_device if unable to detach
  • fix force-detach for UDisks2 backend
  • automatically use UDisks2 if UDisks1 is not available
  • mount unlocked devices only once, removes error message on UDisks2
  • mention __ignore__ in man page

0.6.2 (aesthetic)

  • add custom icons for the context menu of the system tray widget

0.6.1 (bug fix)

  • fix udisks2 external device detection bug: all devices were considered external when using Sniffer (as done in the udiskie-mount and udiskie-umount tools)

0.6.0 (udisks2 support, bug fix)

  • cache device states to avoid some race conditions
  • show filesystem label in mount/unmount notifications
  • retry to unlock LUKS devices when wrong password was entered twice
  • show ‘eject’ only if media is available (udisks1 ejects only in this case)
  • (un-) mount/lock notifications shown even when operations failed
  • refactor internal API
  • experimental support for udisks2

0.5.3 (feature, bug fix)

  • add ‘__ignore__’ config file option to prevent handling specific devices
  • delay notifications until termination of long operations

0.5.2 (tray icon)

  • add tray icon (pygtk based)
  • eject / detach drives from command line

0.5.1 (mainly internal changes)

  • use setuptools entry points to create the executables
  • make udiskie a namespace package

0.5.0 (LUKS support)

  • support for LUKS devices (using zenity for password prompt)
  • major refactoring
  • use setuptools as installer
File Type Py Version Uploaded on Size
udiskie-1.5.1.tar.gz (md5) Source 2016-07-03 81KB