im trying to install i3 on qubesr4 using the steps from qubes user documentation
sudo qubes-dom0-update --clean i3 --allowerasing
but i get this message
Error: nothing provides dmenu needed by i3-1000:4.16-9.fc25.x86_64
im trying to install i3 on qubesr4 using the steps from qubes user documentation
sudo qubes-dom0-update --clean i3 --allowerasing
but i get this message
Error: nothing provides dmenu needed by i3-1000:4.16-9.fc25.x86_64
Hey @smlt!
Are you still having this issue? I’m working on getting i3 up and running myself on R4.1.
I followed the documentation and have i3 working— I just ran $ sudo qubes-dom0-update i3 i3-settings-qubes
like the docs noted. Are you using a different install process that involves --clean i3 --allowerasing
?
On a related note, I also got a dmenu
error when first installing i3.
TL;DR
Qubes’ modified i3 contains scripts, like /usr/bin/i3-dmenu-desktop
for which dmenu
is a dependency.
But when I ran sudo qubes-dom0-update i3 i3-settings-qubes
it did not install dmenu
alongside, i.e. as a dependency.
To get i3-dmenu-desktop
to work— and presumably to fix your dmenu
error— I would suggest installing dmenu
.
Beware (any) software in dom0:
Warning: Installing software in dom0 is for advanced users only. Doing so has the potential to compromise your entire Qubes OS installation. Exercise extreme caution.
If you feel that you need dmenu
(which I think is a must for using i3 with Qubes OS), then run sudo qubes-dom0-update dmenu
to install dmenu
.
To any mods or Qubes Team members @unman @adw — is the fact that dmenu
is not recognized as a dependency for i3-settings-qubes
a bug? If the unrecognized dependency is intentional, perhaps there should be a clear message in the i3 documentation about needing to separately install dmenu
?
I saw at the bottom of that documentation (the “Installing” section under “Compilation and Installation from Source”) that several dependencies perl-AnyEvent-I3 xorg-x11-apps rxvt-unicode xcb-util-wm perl-JSON-XS xcb-util-cursor dzen2 **dmenu** xorg-x11-fonts-misc libev
(**emphasis** mine) were required, dmenu
among them, but another user might not see that.
Additionally, since I figured I might need some of those other dependencies, I installed them (with sudo qubes-dom0-update <dependency list>
). All of them were already installed (except dmenu), but Dom0 was actually unable to find a match for dzen2
. I don’t know if I need dzen2
, and if I can’t find a match for it because I’m using R4.1, or maybe it’s not in my Dom0 update repos (I’m using Stable updates
according to the Global Settings GUI).
If you want to see what led me to the “Compilation and Installation from Source” documentation, I actually received my own dmenu
error from i3-dmenu-desktop
and decided to trace it back; I came to the (false) conclusion that dmenu
wasn’t available as a Dom0 package, so I looked at the “Compilation and Installation from Source” i3 docs section, where I saw that I’d been trying to install dmenu
with sudo dnf install
in Dom0 instead of sudo qubes-dom0-update
:).
Anyway here’s where the first error led:
My i3 config file (autogenerated after i3 install with the preset Qubes modifications at ~/.config/i3/config
) contains a line:
# start dmenu (a program launcher)
bindsym $mod+d exec --no-startup-id i3-dmenu-desktop --dmenu="dmenu -nb #d2d2d2 -nf #333333 -sb #63a0ff -sf #f5f5f5"
However, pressing $mod+d
does not launch dmenu
. Indeed, when I check if dmenu
is installed by running dmenu
, I get nothing.
Luckily, i3 was giving me some error logs in /run/user/1000/i3/
which said something about a dmenu
conflict in the function open2
on line 345
in the file /usr/bin/i3-dmenu-desktop
— this seemed relevant.
I don’t know what language the file is written in but these are lines 338-353:
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
#┃ Run dmenu to ask the user for their choice ┃
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# open2 will just make dmenu’s STDERR go to our own STDERR.
my ($dmenu_out, $dmenu_in);
my $pid = eval {
open2($dmenu_out, $dmenu_in, $dmenu_cmd);
} or do {
print STDERR "$@";
say STDERR "Running dmenu failed. Is dmenu installed at all? Try running dmenu -v" ;
exit 1;
};
binmode $dmenu_in, ':utf8';
binmode $dmenu_out, ':utf8';
Interestingly, the variables $dmenu_out
, $dmenu_in
, and $dmenu_cmd
are defined earlier in the file— but never called until this point. The variable $dmenu_cmd
is defined in line 47:
my $dmenu_cmd = 'dmenu -i';
Clearly Qubes’ i3-dmenu-desktop
makes use of dmenu
. But dmenu
is not installed in dom0.
Here I tried using dnf
, which led me to the docs, and then to qubes-dom0-update
.
Hope this helps!
I have no idea, sorry.
No - the dependency is on i3. If dmenu were a dependency of i3, then it
would get pulled in.
In Debian, it’s not a dependency of i3 - it’s recommended.
In Fedora, it’s a weak dependency.
Plenty of other launchers to use in i3.
It makes sense that dmenu isn’t required for i3, but I guess I was wondering if dmenu
should be a dependency of i3-settings-qubes
, since dmenu
is used by i3-dmenu-desktop
which is part of i3-settings-qubes
, which to quote from the docs is
The Qubes-specific configuration… package
I know that tiling window managers are advanced and that anybody installing them would figure out to look in the the Qubes specific i3 conf to find out why dmenu wasn’t running, but it would be nice to have dmenu
install alongside i3-settings-qubes
. I’d be happy to figure out how to contribute to the docs and make a note that dmenu is not installed by default, but that i3-dmenu-desktop
obviously needs it.
I came back to this post also because my volume keyboard controls (Fn+F3
,+F5
,+F6
) were not working after I followed the i3 install process listed in the docs. I checked the Qubes i3 config file and noticed that the pactl
command was used to control volume. I did not have pactl
installed in dom0, however, and the internet said that pulseaudio-utils
is necessary to get pactl
.
I know i3 is pretty specific but I’d be happy to write a guide on the forum or add to the docs in some way about packages that are— or might— be missing in dom0 upon an install of i3
and i3-settings-qubes
.
I think that tiling window managers work very well with the Qubes mindset, because tiling window managers are built to keep windows separate, which is a visual representation of the virtualization that Qubes does.
In my experience I’m always moving around my windows and not having to rely on my small, mediocre touchpad (the case for many laptops) to click and hold the small window borders is a plus. Also, because you almost never grab the title bar of a window when using tiling window managers, you can make the Qubes Unforgeable Borders™ as small as you like— while still being able to quickly discern the color— which saves lots of screen real estate, especially on a laptop.
I don’t have a strong opinion.
I think I come back to my original point - since i3 doesn’t require
dmenu, why should Qubes enforce its use?
Surely the first step in finding out why dmenu wasn’t running would be to
make sure that it was installed? Not dig in to config files?
Perhaps a note in the docs to say that no launcher is installed by
default would be useful? (Although this depends on how you have chosen to
configure your package manager.)
Bundling Qubes support allows users to install dmenu and have it running
without installing any other packages - presumably, (I haven’t checked)
that package also supports other launchers. If so, perhaps it should bear
a more generic name.