gi-gio-2.0.35: Gio bindings

Copyright | Will Thompson and Iñaki García Etxebarria
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | Safe-Inferred
Language | Haskell2010

GI.Gio.Objects.AppInfoMonitor

Contents

- Exported types
- Methods
  - get
- Signals
  - changed

Description

`GAppInfoMonitor` monitors application information for changes.

`GAppInfoMonitor` is a very simple object used for monitoring the app info database for changes (newly installed or removed applications).

Call [func`gio`.AppInfoMonitor.get] to get a `GAppInfoMonitor` and connect to the AppInfoMonitor::changed signal. The signal will be emitted once when the app info database changes, and will not be emitted again until after the next call to [func`gio`.AppInfo.get_all] or another `g_app_info_*()` function. This is because monitoring the app info database for changes is expensive.

The following functions will re-arm the AppInfoMonitor::changed signal so it can be emitted again:

- [func`gio`.AppInfo.get_all]
- [func`gio`.AppInfo.get_all_for_type]
- [func`gio`.AppInfo.get_default_for_type]
- [func`gio`.AppInfo.get_fallback_for_type]
- [func`gio`.AppInfo.get_recommended_for_type]
- `g_desktop_app_info_get_implementations()`
- `g_desktop_app_info_new()`
- `g_desktop_app_info_new_from_filename()`
- `g_desktop_app_info_new_from_keyfile()`
- `g_desktop_app_info_search()`

The latter functions are available if using `GDesktopAppInfo` from `gio-unix-2.0.pc` (GIR namespace `GioUnix-2.0`).

In the usual case, applications should try to make note of the change (doing things like invalidating caches) but not act on it. In particular, applications should avoid making calls to `GAppInfo` APIs in response to the change signal, deferring these until the time that the updated data is actually required. The exception to this case is when application information is actually being displayed on the screen (for example, during a search or when the list of all applications is shown). The reason for this is that changes to the list of installed applications often come in groups (like during system updates) and rescanning the list on every change is pointless and expensive.

Since: 2.40

Synopsis

- newtype AppInfoMonitor = AppInfoMonitor (ManagedPtr AppInfoMonitor)
- class (GObject o, IsDescendantOf AppInfoMonitor o) => IsAppInfoMonitor o
- toAppInfoMonitor :: (MonadIO m, IsAppInfoMonitor o) => o -> m AppInfoMonitor
- appInfoMonitorGet :: (HasCallStack, MonadIO m) => m AppInfoMonitor
- type AppInfoMonitorChangedCallback = IO ()
- afterAppInfoMonitorChanged :: (IsAppInfoMonitor a, MonadIO m) => a -> ((?self :: a) => AppInfoMonitorChangedCallback) -> m SignalHandlerId
- onAppInfoMonitorChanged :: (IsAppInfoMonitor a, MonadIO m) => a -> ((?self :: a) => AppInfoMonitorChangedCallback) -> m SignalHandlerId

# Exported types

newtype AppInfoMonitor Source #

Memory-managed wrapper type.

Constructors

AppInfoMonitor (ManagedPtr AppInfoMonitor) |

#### Instances

Instances details

Eq AppInfoMonitor Source # |
Instance details Defined in GI.Gio.Objects.AppInfoMonitor Methods (==) :: AppInfoMonitor -> AppInfoMonitor -> Bool Source # (/=) :: AppInfoMonitor -> AppInfoMonitor -> Bool Source #
GObject AppInfoMonitor Source # |
Instance details Defined in GI.Gio.Objects.AppInfoMonitor
ManagedPtrNewtype AppInfoMonitor Source # |
Instance details Defined in GI.Gio.Objects.AppInfoMonitor Methods toManagedPtr :: AppInfoMonitor -> ManagedPtr AppInfoMonitor Source #
TypedObject AppInfoMonitor Source # |
Instance details Defined in GI.Gio.Objects.AppInfoMonitor Methods glibType :: IO GType Source #
HasParentTypes AppInfoMonitor Source # |
Instance details Defined in GI.Gio.Objects.AppInfoMonitor
IsGValue (Maybe AppInfoMonitor) Source # | Convert `AppInfoMonitor` to and from `GValue`. See `toGValue` and `fromGValue`.
Instance details Defined in GI.Gio.Objects.AppInfoMonitor Methods gvalueGType_ :: IO GType Source # gvalueSet_ :: Ptr GValue -> Maybe AppInfoMonitor -> IO () Source # gvalueGet_ :: Ptr GValue -> IO (Maybe AppInfoMonitor) Source #
type ParentTypes AppInfoMonitor Source # |
Instance details Defined in GI.Gio.Objects.AppInfoMonitor type ParentTypes AppInfoMonitor = '[Object]

class (GObject o, IsDescendantOf AppInfoMonitor o) => IsAppInfoMonitor o Source #

Type class for types which can be safely cast to `AppInfoMonitor`, for instance with `toAppInfoMonitor`.

#### Instances

Instances details

(GObject o, IsDescendantOf AppInfoMonitor o) => IsAppInfoMonitor o Source # |
Instance details Defined in GI.Gio.Objects.AppInfoMonitor

toAppInfoMonitor :: (MonadIO m, IsAppInfoMonitor o) => o -> m AppInfoMonitor Source #

Cast to `AppInfoMonitor`, for types for which this is known to be safe. For general casts, use `castTo`.

# Methods

### Click to display all available methods, including inherited ones

Expand

#### Methods

bindProperty, bindPropertyFull, forceFloating, freezeNotify, getv, isFloating, notify, notifyByPspec, ref, refSink, runDispose, stealData, stealQdata, thawNotify, unref, watchClosure.

#### Getters

getData, getProperty, getQdata.

#### Setters

setData, setDataFull, setProperty.

## get

appInfoMonitorGet Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> m AppInfoMonitor | Returns: a reference to a `AppInfoMonitor`

Gets the `AppInfoMonitor` for the current thread-default main context.

The `AppInfoMonitor` will emit a “changed” signal in the thread-default main context whenever the list of installed applications (as reported by `appInfoGetAll`) may have changed.

The AppInfoMonitor::changed signal will only be emitted once until `appInfoGetAll` (or another `g_app_info_*()` function) is called. Doing so will re-arm the signal ready to notify about the next change.

You must only call `objectUnref` on the return value from under the same main context as you created it.

Since: 2.40

# Signals

## changed

type AppInfoMonitorChangedCallback = IO () Source #

Signal emitted when the app info database changes, when applications are installed or removed.

Since: 2.40

afterAppInfoMonitorChanged :: (IsAppInfoMonitor a, MonadIO m) => a -> ((?self :: a) => AppInfoMonitorChangedCallback) -> 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 appInfoMonitor #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.

onAppInfoMonitorChanged :: (IsAppInfoMonitor a, MonadIO m) => a -> ((?self :: a) => AppInfoMonitorChangedCallback) -> 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 appInfoMonitor #changed callback