I3-gaps installed but not working when login

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.

1 Like

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.

1 Like

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.

1 Like