Dunst: failed with old xorg

Created on 15 Oct 2017  路  16Comments  路  Source: dunst-project/dunst

I am using an old version of Xorg (due to a deprecated driver), and the new version of dunst fails to start:

$ dunst
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  149 (RANDR)
  Minor opcode of failed request:  42 ()
  Serial number of failed request:  28
  Current serial number in output stream:  28

Xorg 1.12.4, dunst 1.2.0

All 16 comments

Looks like this is because you're missing the xrandr extension, or its an outdated version. What does xrandr --version say?

$ xrandr --version
xrandr program version       1.5.0
Server reports RandR version 1.3

See #364

Dunst requires xrandr of 1.5 and above to work. It was supposed to automatically detect the outdated version and use Xinerama by default but there's a bug in the detection logic (fixed by #364) that prevents it.

As a workaround you can enable force_xinerama in the config but keep in mind that by doing that dunst won't be notified of monitor layout updates and it can cause some very weird glitches if you change it without restarting dunst.

Thanx! force_xinerama fixed this issue.
(this is an old laptop, i never change any layout)

I'll keep this issue open until #364 is merged since it's directly related.

@zaza42 I'm curious. Which distro and distroversion are you using?

@bebehei Debian Buster with Xorg 1.12.4

@zaza42 and how do you manage to get such an old X11 version?

@zaza42 I'm wondering, because repology lists only Ubuntu 14.04 and ROSA Linux 14.1 as the only two distros left using xrandr < 1.5. (While for both ship xrandr 1.5 in their updates and trusty is outdated in 6 months anyway.).

<Edit>And on the debian packages site lists xorg 1.12.4 only for oldoldstable(wheezy).</Edit>

Honestly, on that databasis, I don't see any reason checking for xrandr < 1.5 anymore.

@bebehei: I've followed these instructions: SiS 771/671 VGA driver in Debian Jessie [hacky solution]
Yes, this package is from wheezy. I personally own 3 laptops with this crappy sis671 vga chip, which driver became deprecated after 1.12.4 (because of abi changes). My 4 friends also have a laptop like this. This vga chipset was a very famous years ago, because it was shipped with cheap laptops. A lot of users still use these machines. My other friend has Fujitsu Stylistic LT C-500 handheld, and he is also forced to use old xorg because of deprecated touchscreen driver.

I thought one of goals of dunst is being lightweight (on old hardware). I've tried a bunch of notification daemons, and arrived to dunst, which is as lightweight as it can. I suggest to support these old hardware, because the more heavier notification daemons still support it. I have no idea why can't fit some lines of codes to support old xorg on old hardwares.

At least please put in documentation this "force_xinerama" workaround, or please, please keep supporting old hardwares which never get newer drivers in newer xorgs!

(Or what other lightweight notification daemon do you suggest for these machines?)

@zaza42 I see your point. I started caring about this issue, when I realized #364's author is unresponsive and it's on our roadmap for 1.3. I wanted to give it a try and setup a VM for reproducibility. I searched for distros, which match xrandr < 1.4, but there were only these two pretty old distros left. I got sceptical and it also smelled fishy when you stated your xorg and distroversions.

But your explanation makes absolutely sense.

I have no idea why can't fit some lines of codes to support old xorg on old hardwares.

You're right. Based on your thorough explanation, I had enough reasons to put some effort into this. I configured today different VMs and Ubuntu installs. But I hadn't been able to install a VM with xorg supporting xrandr protocol up to 1.4 and libxrandr == 1.5. I'm not able to do anything here. I can't deliver a fix in code. Maybe someone else has got more luck.

You can easily reproduce the problem. Install Debian Buster i386 in VM, and add my repository to sources.list: deb http://flerp.hu/debian/aptly/public stretch main contrib
And create /etc/apt/preferences.d/flerp with:

Package: *
Pin: origin flerp.hu
Pin-Priority: 1079

...aand apt-get dist-upgrade, then you will got my "frankendebian" system with old xserver-xorg-core (and some new packages).

@zaza42 The path was much harder. I had to find your GPG key and for some reasons, your repo does not provide libudev0 (but requires it). And then dist-upgrade doesn't work although you pin it.

Also I had to find the old packages for my mouse driver.

I had been to tweak my VM very hard, until xrandr --version reported the right tuple and the bug was reproducible.

Fixed on master via #364

@bebehei : Sorry, I forgot to mention to use the original wheezy repo as well, which contains libudev0 and all xorg drivers for that old version.

Thanx for the fix, anyway!

Was this page helpful?
0 / 5 - 0 ratings