[Bug 1511154] [NEW] xdg-settings set <anything> fails with status 2 because of a small glitch

Launchpad Bug Tracker 1511154 at bugs.launchpad.net
Fri Nov 13 11:03:12 UTC 2015


You have been subscribed to a public bug by Sebastien Bacher (seb128):

The first user-facing symptom: Google Chrome stable is correctly set as
the default browser in System Settings / Details / Default Applications
as well as in

update-alternatives --display x-www-browser

yet it keeps complaining about not being a default browser. Clicking
"Make Google Chrome the default browser." on Chrome's settings page has
no response.

The problem is reported here http://askubuntu.com/questions/688779
/google-chrome-stable-keeps-asking-if-it-should-be-set-to-default but
the answer is somewhat wrong.

I have successfully reproduced and debugged the problem. I managed to
establish that it is connected to xdg-utils, namely to /usr/bin/xdg-
settings script.

michal at furia:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 15.10
Release:	15.10
Codename:	wily
michal at furia:~$ xdg-settings get default-web-browser
firefox.desktop
michal at furia:~$ xdg-settings set default-web-browser google-chrome.desktop
michal at furia:~$ echo $?
2
michal at furia:~$ xdg-settings get default-web-browser
firefox.desktop

There is a function in /usr/bin/xdg-settings called
desktop_file_to_binary() and it has a bug. It is slightly different than
the one in the vanilla xdg-utils 1.1.0 rc3. It is implemented in scripts
/xdg-utils-common.in.

See line 65 in xdg-utils-1.1.0~rc3+git20150907/scripts/xdg-utils-
common.in :

command="`grep -E "^Exec(\[[^]=]*])?=" "$file" | cut -d= -f 2- | sed -e
's/ .*$//'`"

When executed against google-chrome.desktop or firefox.desktop it
results with:

google-chrome-stable
google-chrome-stable
google-chrome-stable

or

firefox
firefox
firefox

respectively.

When passed to `which` and then to `readlink -f` it results with no path
to the actual binary. In the vanilla xdg-utils package (version 1.1.0
rc3) the `sed` part is replaced with `first_word`. An alternative would
be adding `| head -n 1`.

Then we would have only one `google-chrome-stable` or `firefox` which in
turn would result with the actual path to binary resolved correctly and
that would make xdg-settings work fine.

Also, it is possible to set Google Chrome as the default browser via its
preferences and the aforementioned first user-facing symptom is gone.

** Affects: xdg-utils (Ubuntu)
     Importance: Undecided
         Status: Confirmed


** Tags: patch
-- 
xdg-settings set <anything> fails with status 2 because of a small glitch
https://bugs.launchpad.net/bugs/1511154
You received this bug notification because you are a member of Ubuntu Sponsors Team, which is subscribed to the bug report.



More information about the Ubuntu-sponsors mailing list