diff options
author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | 2021-06-16 18:04:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-16 18:04:45 +0000 |
commit | 2d104c99a7d99ead0a9eeb74f1f523aa77aae743 (patch) | |
tree | b2f54bf05c3927f0426ede6367b7f094e3dc10c3 /doc | |
parent | b08ae54dd9daf4cceb03d49d681bfbd7ad013bb8 (diff) | |
parent | d86f21194aed2b84256509d05f0a527a8c063229 (diff) | |
download | nixpkgs-2d104c99a7d99ead0a9eeb74f1f523aa77aae743.tar nixpkgs-2d104c99a7d99ead0a9eeb74f1f523aa77aae743.tar.gz nixpkgs-2d104c99a7d99ead0a9eeb74f1f523aa77aae743.tar.bz2 nixpkgs-2d104c99a7d99ead0a9eeb74f1f523aa77aae743.tar.lz nixpkgs-2d104c99a7d99ead0a9eeb74f1f523aa77aae743.tar.xz nixpkgs-2d104c99a7d99ead0a9eeb74f1f523aa77aae743.tar.zst nixpkgs-2d104c99a7d99ead0a9eeb74f1f523aa77aae743.zip |
Merge master into staging-next
Diffstat (limited to 'doc')
-rw-r--r-- | doc/languages-frameworks/gnome.section.md | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/doc/languages-frameworks/gnome.section.md b/doc/languages-frameworks/gnome.section.md index a1121efe3f0..11b49f4f235 100644 --- a/doc/languages-frameworks/gnome.section.md +++ b/doc/languages-frameworks/gnome.section.md @@ -8,12 +8,30 @@ Programs in the GNOME universe are written in various languages but they all use [GSettings](https://developer.gnome.org/gio/stable/GSettings.html) API is often used for storing settings. GSettings schemas are required, to know the type and other metadata of the stored values. GLib looks for `glib-2.0/schemas/gschemas.compiled` files inside the directories of `XDG_DATA_DIRS`. -On Linux, GSettings API is implemented using [dconf](https://wiki.gnome.org/Projects/dconf) backend. You will need to add `dconf` GIO module to `GIO_EXTRA_MODULES` variable, otherwise the `memory` backend will be used and the saved settings will not be persistent. +On Linux, GSettings API is implemented using [dconf](https://wiki.gnome.org/Projects/dconf) backend. You will need to add `dconf` [GIO module](#ssec-gnome-gio-modules) to `GIO_EXTRA_MODULES` variable, otherwise the `memory` backend will be used and the saved settings will not be persistent. Last you will need the dconf database D-Bus service itself. You can enable it using `programs.dconf.enable`. Some applications will also require `gsettings-desktop-schemas` for things like reading proxy configuration or user interface customization. This dependency is often not mentioned by upstream, you should grep for `org.gnome.desktop` and `org.gnome.system` to see if the schemas are needed. +### GIO modules {#ssec-gnome-gio-modules} + +GLib’s [GIO](https://developer.gnome.org/gio/stable/ch01.html) library supports several [extension points](https://developer.gnome.org/gio/stable/extending-gio.html). Notably, they allow: + +* implementing settings backends (already [mentioned](#ssec-gnome-settings)) +* adding TLS support +* proxy settings +* virtual file systems + +The modules are typically installed to `lib/gio/modules/` directory of a package and you need to add them to `GIO_EXTRA_MODULES` if you need any of those features. + +In particular, we recommend: + +* adding `dconf.lib` for any software on Linux that reads [GSettings](#ssec-gnome-settings) (even transitivily through e.g. GTK’s file manager) +* adding `glib-networking` for any software that accesses network using GIO or libsoup – glib-networking contains a module that implements TLS support and loads system-wide proxy settings + +To allow software to use various virtual file systems, `gvfs` package can be also added. But that is usually an optional feature so we typically use `gvfs` from the system (e.g. installed globally using NixOS module). + ### GdkPixbuf loaders {#ssec-gnome-gdk-pixbuf-loaders} GTK applications typically use [GdkPixbuf](https://developer.gnome.org/gdk-pixbuf/stable/) to load images. But `gdk-pixbuf` package only supports basic bitmap formats like JPEG, PNG or TIFF, requiring to use third-party loader modules for other formats. This is especially painful since GTK itself includes SVG icons, which cannot be rendered without a loader provided by `librsvg`. |