Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ibus: fix dconf dependency #11108

Merged
merged 1 commit into from Nov 24, 2015
Merged

ibus: fix dconf dependency #11108

merged 1 commit into from Nov 24, 2015

Conversation

ericsagnes
Copy link
Contributor

Fixes problem of ibus settings that are not saved on an environment where dconf is not installed, by automatically installing gnome3.dconf if programs.ibus.enable is set to true.

Details:

Running ibus-setup on an environment where gnome3.dconf is not explicitly installed (like xmonad) give the following error and settings are not saved:

dconf-WARNING **: failed to commit changes to dconf: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name ca.desrt.dconf was not provided by any .service files

cc ibus maintainer @gebner

@gebner
Copy link
Member

gebner commented Nov 18, 2015

Looks good to me as ibus is otherwise not functional.

@ghost
Copy link

ghost commented Nov 24, 2015

This is an common problem for most GNOME (gsettings) apps,
when the dconf GIO module is missing (eg: gedit), we get:

GLib-GIO-Message: Using the 'memory' GSettings backend.
Your settings will not be saved or shared with other applications.

Since there is no other gsettings backend, I think we should wrap all with dconf.

And, when the dconf service is not known by the user's dbus-daemon
(aka: dbus and dconf not installed in profile),
we'll get the ServiceUnkown error like this issue.

I think for non-GNOME (or non-NixOS), we have to propagated
(propagatedUserEnvPkgs?) dconf (or even dbus) to make those apps work.

@lethalman , what do you think?

@lucabrunox
Copy link
Contributor

@iyzsong dconf is the defacto backend for gsettings. If you don't have dconf, it's because you don't want dconf. And if you don't want dconf, you probably have some env variable that specify the backend with GSETTINGS_BACKEND in your system.

Propagating dconf in non-nixos is useless because dbus won't search in ~/.nix-profile. So no I'd prefer not propagating this stuff.

Also putting the propagation in ibus has the same effect of this nixos module, except it doesn't clutter the environment.

What I mean is: dconf is not necessary, hence must not be propagated by packages. Yet it's very simple for the user to just add it to the system that it's not worth cluttering the profiles further.

Probably you will never see dconf as a dependency of packages on any other distro.

@lucabrunox
Copy link
Contributor

@gebner "not functional" is hard to say. It should work, that's only a warning about settings not being saved.

I'm accepting this PR only because I hope to add a services.dconf.enable, so that all such services can add a services.dconf.enable = mkDefault true; which is overridable by the user, and it will also add the gio module in the user env instead of putting it in the packages.

lucabrunox pushed a commit that referenced this pull request Nov 24, 2015
@lucabrunox lucabrunox merged commit 8099d81 into NixOS:master Nov 24, 2015
@ericsagnes
Copy link
Contributor Author

Thanks for merging!

As a side note, my first comment was not very clear but without dconf, ibus is not functional.

The reason being that there is no default input engine set in ibus.
To set one and to make the setting persistent, dconf is required.

Short version, without dconf ibus is useless as input engines cannot be set.

@ghost
Copy link

ghost commented Nov 24, 2015

@lethalman
I now see that propagating dconf for the dbus service is useless. thanks the explanation.

but in the case of gedit, as it dosen't wrapped with dconf in GIO_EXTRA_MODULES,
and only gnome3 module set it globally. so, for wm and non-NixOS users,
just install dconf into profile is not enough, this variable have to be set manually.
(and I guess this gio module may having ABI issue with different version of glib)

How about split dconf into multiple outputs like debian does, eg: out (dconf-service), giomodules (libdconfsettings.so), then wrap all gsettings using apps with dconf:giomodules?
Also, in debian, gedit does depend on dconf-gsettings-backend through gsettings-desktop-schemas.

@lucabrunox
Copy link
Contributor

@iyzsong please see #11239

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants