** Description changed: + (Existing description has been broken up into sections.) + + [Impact] + 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. + + [Test Case] 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@furia:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 15.10 Release: 15.10 Codename: wily michal@furia:~$ xdg-settings get default-web-browser firefox.desktop michal@furia:~$ xdg-settings set default-web-browser google-chrome.desktop michal@furia:~$ echo $? 2 michal@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. + + [Regression Potential] + + Limited. The commands after the modified lines assume that there is only + one line, so passing the output of the modified lines through `head -n1` + should ensure that. In the case of there being 0 or 1 lines before the + `head -n1` command, nothing will be changed. + + In the worst case, there may exist a .desktop file where the first Exec + line isn't the main program (mentioned in comment 2 below). In that + case, however, this change will result in the incorrect program being + chosen; this may or may not be better than the command not working at + all.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1511154 Title: xdg-settings set <anything> fails with status 2 because of a small glitch To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/xdg-utils/+bug/1511154/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs