I just upgraded from an early 17.03 beta to 17.03 and the $mod+d key
combination for invoking dmenu no longer works in i3.

The problem is that the paths to dmenu in the ${i3}/etc/config* files are
hard coded when the config files are created and propagated to the user's
.config/i3/config file by i3-config-wizard upon first logging in. At some
point in the future, an upgrade causes the config file to point outside the
current-system closure. This is certainly an error but won't be obvious
until the path to the obsolete dmenu is garbage collected.

In my case, I upgraded from 16.09 to 17.03 beta and then 17.03. Things
seemed to be working so I garbage collected my original 16.09 installation
which broke $mod+d as the path to the original 16.09 dmenu was now dangling.

Instead of:

    bindsym $mod+d exec
/nix/store/04sx6lx7hssid7a6iwdbdvxbkp25xsx1-dmenu-4.6/bin/dmenu_run

I think it should be to be:

    bindsym $mod+d exec /run/current-system/sw/bin/dmenu_run

That way, the path is still within the current-system closure and is
guaranteed to exist if dmenu is installed. I believe the place to make the
change is in the post fixup (lines 33-38
in nixpkgs/pkgs/applications/window-managers/i3/default.nix). I would be
glad to issue a PR but I don't know how the substitution should change to
result in /run/current-system/sw instead.

Note: the path for i3status is also hard-coded and shouldn't be. Since
there wasn't an update to i3status, it continues to work but is still wrong
because it points outside of the current-system closure.

Mark
-- 
Mark Gardner
--
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to