Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | None |
Language | Haskell2010 |
The GVolume
interface represents user-visible objects that can be
mounted. Note, when porting from GnomeVFS,
GVolume
is the moral equivalent of GnomeVFSDrive
.
Mounting a GVolume
instance is an asynchronous operation. For more
information about asynchronous operations, see AsyncResult
and
Task
. To mount a GVolume
, first call volumeMount
with (at least) the GVolume
instance, optionally a
MountOperation
object and a [typegio
.AsyncReadyCallback].
Typically, one will only want to pass NULL
for the
MountOperation
if automounting all volumes when a desktop session
starts since it’s not desirable to put up a lot of dialogs asking
for credentials.
The callback will be fired when the operation has resolved (either
with success or failure), and a AsyncResult
instance will be
passed to the callback. That callback should then call
volumeMountFinish
with the GVolume
instance and the
AsyncResult
data to see if the operation was completed
successfully. If a [typegLib
.Error] is present when
volumeMountFinish
is called, then it will be filled with any
error information.
Volume Identifiers
It is sometimes necessary to directly access the underlying
operating system object behind a volume (e.g. for passing a volume
to an application via the command line). For this purpose, GIO
allows to obtain an ‘identifier’ for the volume. There can be
different kinds of identifiers, such as Hal UDIs, filesystem labels,
traditional Unix devices (e.g. /dev/sda2
), UUIDs. GIO uses predefined
strings as names for the different kinds of identifiers:
G_VOLUME_IDENTIFIER_KIND_UUID
, G_VOLUME_IDENTIFIER_KIND_LABEL
, etc.
Use volumeGetIdentifier
to obtain an identifier for a volume.
Note that G_VOLUME_IDENTIFIER_KIND_HAL_UDI
will only be available
when the GVFS hal volume monitor is in use. Other volume monitors
will generally be able to provide the G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE
identifier, which can be used to obtain a hal device by means of
libhal_manager_find_device_string_match()
.
Synopsis
- newtype Volume = Volume (ManagedPtr Volume)
- class (GObject o, IsDescendantOf Volume o) => IsVolume o
- toVolume :: (MonadIO m, IsVolume o) => o -> m Volume
- volumeCanEject :: (HasCallStack, MonadIO m, IsVolume a) => a -> m Bool
- volumeCanMount :: (HasCallStack, MonadIO m, IsVolume a) => a -> m Bool
- volumeEject :: (HasCallStack, MonadIO m, IsVolume a, IsCancellable b) => a -> [MountUnmountFlags] -> Maybe b -> Maybe AsyncReadyCallback -> m ()
- volumeEjectFinish :: (HasCallStack, MonadIO m, IsVolume a, IsAsyncResult b) => a -> b -> m ()
- volumeEjectWithOperation :: (HasCallStack, MonadIO m, IsVolume a, IsMountOperation b, IsCancellable c) => a -> [MountUnmountFlags] -> Maybe b -> Maybe c -> Maybe AsyncReadyCallback -> m ()
- volumeEjectWithOperationFinish :: (HasCallStack, MonadIO m, IsVolume a, IsAsyncResult b) => a -> b -> m ()
- volumeEnumerateIdentifiers :: (HasCallStack, MonadIO m, IsVolume a) => a -> m [Text]
- volumeGetActivationRoot :: (HasCallStack, MonadIO m, IsVolume a) => a -> m (Maybe File)
- volumeGetDrive :: (HasCallStack, MonadIO m, IsVolume a) => a -> m (Maybe Drive)
- volumeGetIcon :: (HasCallStack, MonadIO m, IsVolume a) => a -> m Icon
- volumeGetIdentifier :: (HasCallStack, MonadIO m, IsVolume a) => a -> Text -> m (Maybe Text)
- volumeGetMount :: (HasCallStack, MonadIO m, IsVolume a) => a -> m (Maybe Mount)
- volumeGetName :: (HasCallStack, MonadIO m, IsVolume a) => a -> m Text
- volumeGetSortKey :: (HasCallStack, MonadIO m, IsVolume a) => a -> m (Maybe Text)
- volumeGetSymbolicIcon :: (HasCallStack, MonadIO m, IsVolume a) => a -> m Icon
- volumeGetUuid :: (HasCallStack, MonadIO m, IsVolume a) => a -> m (Maybe Text)
- volumeMount :: (HasCallStack, MonadIO m, IsVolume a, IsMountOperation b, IsCancellable c) => a -> [MountMountFlags] -> Maybe b -> Maybe c -> Maybe AsyncReadyCallback -> m ()
- volumeMountFinish :: (HasCallStack, MonadIO m, IsVolume a, IsAsyncResult b) => a -> b -> m ()
- volumeShouldAutomount :: (HasCallStack, MonadIO m, IsVolume a) => a -> m Bool
- type VolumeChangedCallback = IO ()
- afterVolumeChanged :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeChangedCallback) -> m SignalHandlerId
- onVolumeChanged :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeChangedCallback) -> m SignalHandlerId
- type VolumeRemovedCallback = IO ()
- afterVolumeRemoved :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeRemovedCallback) -> m SignalHandlerId
- onVolumeRemoved :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeRemovedCallback) -> m SignalHandlerId
Exported types
Memory-managed wrapper type.
Instances
Eq Volume Source # | |
GObject Volume Source # | |
Defined in GI.Gio.Interfaces.Volume | |
ManagedPtrNewtype Volume Source # | |
Defined in GI.Gio.Interfaces.Volume toManagedPtr :: Volume -> ManagedPtr Volume # | |
TypedObject Volume Source # | |
Defined in GI.Gio.Interfaces.Volume | |
HasParentTypes Volume Source # | |
Defined in GI.Gio.Interfaces.Volume | |
IsGValue (Maybe Volume) Source # | Convert |
Defined in GI.Gio.Interfaces.Volume | |
type ParentTypes Volume Source # | |
Defined in GI.Gio.Interfaces.Volume type ParentTypes Volume = '[Object] |
Methods
Click to display all available methods, including inherited ones
Methods
bindProperty, bindPropertyFull, canEject, canMount, eject, ejectFinish, ejectWithOperation, ejectWithOperationFinish, enumerateIdentifiers, forceFloating, freezeNotify, getv, isFloating, mount, mountFinish, notify, notifyByPspec, ref, refSink, runDispose, shouldAutomount, stealData, stealQdata, thawNotify, unref, watchClosure.
Getters
getActivationRoot, getData, getDrive, getIcon, getIdentifier, getMount, getName, getProperty, getQdata, getSortKey, getSymbolicIcon, getUuid.
Setters
canEject
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m Bool |
Checks if a volume can be ejected.
canMount
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m Bool |
Checks if a volume can be mounted.
eject
:: (HasCallStack, MonadIO m, IsVolume a, IsCancellable b) | |
=> a |
|
-> [MountUnmountFlags] |
|
-> Maybe b |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Deprecated: (Since version 2.22)Use volumeEjectWithOperation
instead.
Ejects a volume. This is an asynchronous operation, and is
finished by calling volumeEjectFinish
with the volume
and AsyncResult
returned in the callback
.
ejectFinish
:: (HasCallStack, MonadIO m, IsVolume a, IsAsyncResult b) | |
=> a |
|
-> b |
|
-> m () | (Can throw |
Deprecated: (Since version 2.22)Use volumeEjectWithOperationFinish
instead.
Finishes ejecting a volume. If any errors occurred during the operation,
error
will be set to contain the errors and False
will be returned.
ejectWithOperation
volumeEjectWithOperation Source #
:: (HasCallStack, MonadIO m, IsVolume a, IsMountOperation b, IsCancellable c) | |
=> a |
|
-> [MountUnmountFlags] |
|
-> Maybe b |
|
-> Maybe c |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Ejects a volume. This is an asynchronous operation, and is
finished by calling volumeEjectWithOperationFinish
with the volume
and AsyncResult
data returned in the callback
.
Since: 2.22
ejectWithOperationFinish
volumeEjectWithOperationFinish Source #
:: (HasCallStack, MonadIO m, IsVolume a, IsAsyncResult b) | |
=> a |
|
-> b |
|
-> m () | (Can throw |
Finishes ejecting a volume. If any errors occurred during the operation,
error
will be set to contain the errors and False
will be returned.
Since: 2.22
enumerateIdentifiers
volumeEnumerateIdentifiers Source #
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m [Text] | Returns: a |
Gets the kinds of identifiers that volume
has.
Use volumeGetIdentifier
to obtain the identifiers themselves.
getActivationRoot
volumeGetActivationRoot Source #
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m (Maybe File) | Returns: the activation root of |
Gets the activation root for a Volume
if it is known ahead of
mount time. Returns Nothing
otherwise. If not Nothing
and if volume
is mounted, then the result of mountGetRoot
on the
Mount
object obtained from volumeGetMount
will always
either be equal or a prefix of what this function returns. In
other words, in code
C code
GMount *mount; GFile *mount_root GFile *volume_activation_root; mount = g_volume_get_mount (volume); // mounted, so never NULL mount_root = g_mount_get_root (mount); volume_activation_root = g_volume_get_activation_root (volume); // assume not NULL
then the expression
C code
(g_file_has_prefix (volume_activation_root, mount_root) || g_file_equal (volume_activation_root, mount_root))
will always be True
.
Activation roots are typically used in VolumeMonitor
implementations to find the underlying mount to shadow, see
mountIsShadowed
for more details.
Since: 2.18
getDrive
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m (Maybe Drive) | Returns: a |
Gets the drive for the volume
.
getIcon
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m Icon | Returns: a |
Gets the icon for volume
.
getIdentifier
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> Text |
|
-> m (Maybe Text) | Returns: a newly allocated string containing the
requested identifier, or |
Gets the identifier of the given kind for volume
.
See the introduction for more
information about volume identifiers.
getMount
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m (Maybe Mount) | Returns: a |
Gets the mount for the volume
.
getName
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m Text | Returns: the name for the given |
Gets the name of volume
.
getSortKey
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m (Maybe Text) | Returns: Sorting key for |
Gets the sort key for volume
, if any.
Since: 2.32
getSymbolicIcon
volumeGetSymbolicIcon Source #
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m Icon | Returns: a |
Gets the symbolic icon for volume
.
Since: 2.34
getUuid
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m (Maybe Text) | Returns: the UUID for |
Gets the UUID for the volume
. The reference is typically based on
the file system UUID for the volume in question and should be
considered an opaque string. Returns Nothing
if there is no UUID
available.
mount
:: (HasCallStack, MonadIO m, IsVolume a, IsMountOperation b, IsCancellable c) | |
=> a |
|
-> [MountMountFlags] |
|
-> Maybe b |
|
-> Maybe c |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Mounts a volume. This is an asynchronous operation, and is
finished by calling volumeMountFinish
with the volume
and AsyncResult
returned in the callback
.
mountFinish
:: (HasCallStack, MonadIO m, IsVolume a, IsAsyncResult b) | |
=> a |
|
-> b |
|
-> m () | (Can throw |
Finishes mounting a volume. If any errors occurred during the operation,
error
will be set to contain the errors and False
will be returned.
If the mount operation succeeded, volumeGetMount
on volume
is guaranteed to return the mount right after calling this
function; there's no need to listen for the 'mount-added' signal on
VolumeMonitor
.
shouldAutomount
volumeShouldAutomount Source #
:: (HasCallStack, MonadIO m, IsVolume a) | |
=> a |
|
-> m Bool | Returns: |
Returns whether the volume should be automatically mounted.
Signals
changed
type VolumeChangedCallback = IO () Source #
Emitted when the volume has been changed.
afterVolumeChanged :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeChangedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the changed signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after
volume #changed callback
By default the object invoking the signal is not passed to the callback.
If you need to access it, you can use the implit ?self
parameter.
Note that this requires activating the ImplicitParams
GHC extension.
onVolumeChanged :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeChangedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the changed signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on
volume #changed callback
removed
type VolumeRemovedCallback = IO () Source #
This signal is emitted when the Volume
have been removed. If
the recipient is holding references to the object they should
release them so the object can be finalized.
afterVolumeRemoved :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeRemovedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the removed signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after
volume #removed callback
By default the object invoking the signal is not passed to the callback.
If you need to access it, you can use the implit ?self
parameter.
Note that this requires activating the ImplicitParams
GHC extension.
onVolumeRemoved :: (IsVolume a, MonadIO m) => a -> ((?self :: a) => VolumeRemovedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the removed signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on
volume #removed callback