Я использую Udisks через dbus в python для размонтирования USB-устройства (в данном случае Kindle), но я хотел бы отправить на него сигнал извлечения, так как это возвращает Kindle из режима USB в его обычный интерфейс.
Udisks не позволит мне использовать DriveEject, так как это не настоящий диск, и я понимаю, что это функция. Указана ошибка:
dbus.exceptions.DBusException: org.freedesktop.UDisks.Error.Failed: Device is not a drive
В документации Udisks упоминается свойство извлечения:
ID_DRIVE_EJECTABLE
Является ли носитель в дисководе физически извлекаемым. Установите это значение на 1 (или 0), только если диск действительно использует (или не использует) извлекаемый носитель. В частности, нет необходимости устанавливать это, например, для Устройства iPod или Kindle, где необходимо отправить команду через eject(1), так как сеанс пользователя рабочего стола предложит эту опцию для съемных устройств независимо от того, являются ли они извлекаемыми. Если это свойство не установлено, будет использоваться эвристика для определения возможности извлечения носителя (диски, использующие оптические носители, Zip или Jaz, считаются извлекаемыми).
но не объясняет, как это сделать из пользовательского сеанса рабочего стола.
(Nautilus позволяет мне нормально извлекаться из оболочки рабочего стола. Команда оболочки «eject» отключится, но не отправит сигнал извлечения на устройство без sudo)
Есть ли законный способ сделать это с Udisks, и если нет, то как это делает nautlius?