[Nix-dev] Need advice regarding an expression for a kded module (KScreen)
Kirill Elagin
kirelagin at gmail.com
Sun Mar 16 10:00:35 CET 2014
Hi,
I'd like to make an expression for
KScreen<http://www.afiestas.org/kscreen-1-0-released/>(screens
management done right).
Here is the issue: to enable it you have to do three steps:
1. Unload randrmonitor (that's the module we are going to replace).
2. Set randrmonitor not to autoload.
3. Load kscreen.
1 and 3 are dbus calls.
2 can be done with a dbus call, but this call will just write an option to
~/.kde/share/config/kdedrc.
A little bit on how kded module loading works.
Every kded module installs a .desktop file to /usr/share/kde4/services/kded
(/nix/store/$pkg/share/kde4/services/kded) saying basically “Hi, my name is
$name, autoload me”. Later you can overwrite those autoload directives in
your kdedrc.
As far as I can tell, those files will be merged (bottom-up):
~/.kde/share/config/kdedrc
~/.nix-profile/share/config/kdedrc
/nix/var/nix/profiles/default/share/config/kdedrc
/run/current-system/sw/share/config/kdedrc
/nix/store/$kdelibs/share/config/kdedrc
/nix/store/$kde-workspace/share/config/kdedrc
(please, correct me if I got something wrong, as I'm not a KDE expert, and
especially not a KDE-on-NixOS expert)
So, here is what we have. Just installing KScreen will result in both
randrmonitor and kscreen being autoloaded which is a bad thing. It seems
reasonable to me to create a kdedrc during installPhase that will disable
randrmonitor, this way the file will go either to
/run/current-system/sw/share/config/ or to
~/.nix-profile/share/config/kdedrc. Is that acceptable?
Bad things might happen if, for some reason, there is autoload=true for
randrmonitor in ~/.kde/share/config/kdedrc. I should note that on my Gentoo
box _indeed_ that was the case, but I have no idea how did this happen. On
my NixOS box this file is effectively empty, which is good news.
So far I was talking only about step number 2. Now back to 1 and 3.
In case of per-user install, is there a way to perform this kind of
“activation”—make a dbus call? Is that acceptable? The same question about
“deactivation” on removal (again, two calls: unload kscreen, load
randrmonitor back).
In case of system-wide install, is there a way to perform this kind of
activation? The issue is that it involves dbus calls on session bus
(ideally, for every logged on user).
--
Кирилл Елагин
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.science.uu.nl/pipermail/nix-dev/attachments/20140316/807eb798/attachment.html
More information about the nix-dev
mailing list