I cannot change the default browser by using $ xdg-settings set default-web-browser iceweasel.desktop Before and after this I get the following result: $ xdg-settings get default-web-browser kfmclient_html.desktop Regards, Ansgar
Hi! I just stumbled across the same problem using 1.1.0~rc1+git20111210-7. I'm not sure if that is the cause, but kfmclient is the "KDE File Manager client", as far as I know, so it seems that xdg-utils actually depend on KDE. Could that be the reason? Uli
Hi Ansgar, Sorry I haven't replied for 5 years :-( Are you still having this problem? If yes, which desktop environment (if any) are you using? And, could you please in that case run sh -x /usr/bin/xdg-settings set default-web-browser iceweasel.desktop and send me the output.
Hi Ansgar, Sorry I haven't replied for 5 years :-( Are you still having this problem? If yes, which desktop environment (if any) are you using? And, could you please in that case run sh -x /usr/bin/xdg-settings set default-web-browser iceweasel.desktop and send me the output.
Hi Uli, Sorry for not replying for two years :-( xdg-utils does not depend on KDE, actually. It is supposed to work with any desktop environment. Which desktop environment (if any) are you using?
Per Olofsson <pelle@dsv.su.se> wrote: Hmmm, question is rather which DE I was using (on my old computer at that time ...), but I think I used plain fluxbox at that time, which is also what I'm running now, although on a different machine which was setup from zero. I do have kde-runtime installed though (I don't know why), which provides kreadconfig. At the moment, I can't reproduce the issue in the original bug report any more, although there still seems to be some kind of dependency on KDE: uli@zox ~> xdg-settings get default-web-browser /usr/bin/xdg-settings: 1: /usr/bin/xdg-settings: kde-config: not found chrome.desktop The first line of output was actually to stderr, the second, expected line was to stdout. However, after that, I tried what the bug reporter initially complained about, and lo and behold, the error went away! By pure luck, I happened to run the suggested "sh -x /usr/bin/xdg-settings get default-web-browser" before that though: uli@zox ~> sh -x /usr/bin/xdg-settings get default-web-browser + check_common_commands get default-web-browser + [ 2 -gt 0 ] + parm=get + shift + [ 1 -gt 0 ] + parm=default-web-browser + shift + [ 0 -gt 0 ] + [ -z ] + unset XDG_UTILS_DEBUG_LEVEL + [ 0 -lt 1 ] + xdg_redirect_output= > /dev/null 2> /dev/null + [ xget = x--list ] + [ xget != x ] + [ xdefault-web-browser != x ] + [ xget = xget -o x != x ] + op=get + parm=default-web-browser + shift 2 + [ xget != xget -a xget != xcheck -a xget != xset ] + detectDE + unset GREP_OPTIONS + [ -n ] + [ x = x ] + [ xtrue = xtrue ] + DE=kde + [ xkde = x ] + [ xkde = x ] + [ xkde = xgnome ] + dispatch_specific + [ xget = xget ] + get_browser_kde + read_kde_browser + read_kde_config kdeglobals General BrowserApplication + configfile=kdeglobals + configsection=General + configkey=BrowserApplication + kreadconfig --file kdeglobals --group General --key BrowserApplication + application= + [ x != x ] + kde-config --path config + cut/usr/bin/xdg-settings: 1: /usr/bin/xdg-settings: kde-config: not found -d : -f 1 + configfile_dir= + configfile_path=/kdeglobals + [ ! -f /kdeglobals ] + return + browser= + [ x = x ] + get_browser_mime + test -z + MIME=text/html + xdg_mime_fixup + [ kde = kde -a -z ] + ktradertest text/html Application + XDG_MIME_FIXED=yes + xdg-mime query default text/html chrome.desktop + [ 0 -eq 0 ] + exit_success + [ 0 -gt 0 ] + exit 0 I then changed the default-web-browser to test the original bug report, but couldn't reproduce the issue. However, after that, even the error message from xdg-settings is gone, I haven't rebooted or restarted the session though! Anyhow, here's how the trace looks afterwards: uli@zox ~> sh -x /usr/bin/xdg-settings get default-web-browser + check_common_commands get default-web-browser + [ 2 -gt 0 ] + parm=get + shift + [ 1 -gt 0 ] + parm=default-web-browser + shift + [ 0 -gt 0 ] + [ -z ] + unset XDG_UTILS_DEBUG_LEVEL + [ 0 -lt 1 ] + xdg_redirect_output= > /dev/null 2> /dev/null + [ xget = x--list ] + [ xget != x ] + [ xdefault-web-browser != x ] + [ xget = xget -o x != x ] + op=get + parm=default-web-browser + shift 2 + [ xget != xget -a xget != xcheck -a xget != xset ] + detectDE + unset GREP_OPTIONS + [ -n ] + [ x = x ] + [ xtrue = xtrue ] + DE=kde + [ xkde = x ] + [ xkde = x ] + [ xkde = xgnome ] + dispatch_specific + [ xget = xget ] + get_browser_kde + read_kde_browser + read_kde_config kdeglobals General BrowserApplication + configfile=kdeglobals + configsection=General + configkey=BrowserApplication + kreadconfig --file kdeglobals --group General --key BrowserApplication + application=chrome.desktop + [ xchrome.desktop != x ] + echo chrome.desktop + browser=chrome.desktop + [ xchrome.desktop = x ] + resolve_kde_browser_desktop + [ -z chrome.desktop ] + echo chrome.desktop chrome.desktop + [ 0 -eq 0 ] + exit_success + [ 0 -gt 0 ] + exit 0 The difference starts after the call to kreadconfig, which seems to yield the selected browser after setting it once. In both cases, there is a line "DE=kde", which is bogus. Looking at "xprop -root", I see KDE_FULL_SESSION is set. This comes from my fluxbox startup script where it was used to work around some bug in kded (used to be part of KDE3, I used to run some KDE applications back then). I just deactivated the workaround in fluxbox startup, and now at least the DE is detected correctly: uli@zox ~> sh -x /usr/bin/xdg-settings get default-web-browser + check_common_commands get default-web-browser + [ 2 -gt 0 ] + parm=get + shift + [ 1 -gt 0 ] + parm=default-web-browser + shift + [ 0 -gt 0 ] + [ -z ] + unset XDG_UTILS_DEBUG_LEVEL + [ 0 -lt 1 ] + xdg_redirect_output= > /dev/null 2> /dev/null + [ xget = x--list ] + [ xget != x ] + [ xdefault-web-browser != x ] + [ xget = xget -o x != x ] + op=get + parm=default-web-browser + shift 2 + [ xget != xget -a xget != xcheck -a xget != xset ] + detectDE + unset GREP_OPTIONS + [ -n ] + [ x = x ] + [ x = xtrue ] + [ x != x ] + [ x != x ] + dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager + + grep = \"xfce4\"$ + xprop -root _DT_SAVE_MODE + xprop -root + grep -i ^xfce_desktop_window + [ x = x ] + [ x = x ] + uname + [ x = xgnome ] + exit_failure_operation_impossible unknown desktop environment + [ 1 -gt 0 ] + echo xdg-settings: unknown desktop environment xdg-settings: unknown desktop environment + exit 3 Any further suggestions what to try? Uli
Den 2015-09-23 kl. 20:47, skrev Ulrich Eckhardt: OK. [...] Ah, OK. That explains why it selected KDE. I was confused about that. I guess I could remove the check "xprop -root" checks, these are not needed anymore with current desktop environments in Debian (I think!) so they serve no purpose other than to confuse. It depends. Which version of xdg-utils are you running? Are you running Debian unstable, testing, or stable?
I am running debian unstable with i3 as a window manager and have this bug.
I have attached sh-x for set and then get.
xdg-settings set default-web-browser firefox.desktop
xdg-settings get default-web-browser
xdg-mime query default x-scheme-handler/http
xdg-mime default firefox.desktop x-scheme-handler/http
firefox's desktop file is /usr/share/applications/firefox.desktop
It is odd that xdgsettings set uses:
xdg-mime default firefox.desktop text/html
But xdg-settings get uses:
xdg-mime query default x-scheme-handler/http
$ sh -x /usr/bin/xdg-settings set default-web-browser firefox.desktop
+ check_common_commands set default-web-browser firefox.desktop
+ '[' 3 -gt 0 ']'
+ parm=set
+ shift
+ case "$parm" in
+ '[' 2 -gt 0 ']'
+ parm=default-web-browser
+ shift
+ case "$parm" in
+ '[' 1 -gt 0 ']'
+ parm=firefox.desktop
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' xset = x--list ']'
+ '[' xset '!=' x ']'
+ '[' xdefault-web-browser '!=' x ']'
+ '[' xset = xget -o xfirefox.desktop '!=' x ']'
+ op=set
+ parm=default-web-browser
+ shift 2
+ '[' xset '!=' xget -a xset '!=' xcheck -a xset '!=' xset ']'
+ detectDE
+ unset GREP_OPTIONS
+ '[' -n i3 ']'
+ case "${XDG_CURRENT_DESKTOP}" in
+ '[' x = x ']'
+ '[' x '!=' x ']'
+ '[' x '!=' x ']'
+ '[' x '!=' x ']'
++ dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager
+ xprop -root _DT_SAVE_MODE
+ grep ' = \"xfce4\"$'
+ xprop -root
+ grep -i '^xfce_desktop_window'
+ echo
+ grep -q '^Enlightenment'
+ '[' x = x ']'
+ case "$DESKTOP_SESSION" in
+ '[' x = x ']'
+ case "$(uname 2>/dev/null)" in
++ uname
+ '[' x = xgnome ']'
+ '[' -z '' ']'
+ DE=generic
+ case "$DE" in
+ dispatch_specific generic firefox.desktop
+ local handler=generic
+ shift
+ '[' xset = xget ']'
+ '[' xset = xcheck ']'
+ case "$parm" in
+ '[' 1 -eq 1 ']'
+ check_desktop_filename firefox.desktop
+ case "$1" in
+ return
+ set_browser_generic firefox.desktop
+ '[' -n '' ']'
++ desktop_file_to_binary firefox.desktop
++ search=/home/dfc/.local/share:/usr/local/share:/usr/share
+++ basename firefox.desktop
++ desktop=firefox.desktop
++ IFS=:
++ for dir in '$search'
++ unset IFS
++ '[' /home/dfc/.local/share ']'
++ '[' -d /home/dfc/.local/share/applications ']'
++ file=/home/dfc/.local/share/applications/firefox.desktop
++ '[' -r /home/dfc/.local/share/applications/firefox.desktop ']'
++ continue
++ for dir in '$search'
++ unset IFS
++ '[' /usr/local/share ']'
++ '[' -d /usr/local/share/applications ']'
++ continue
++ for dir in '$search'
++ unset IFS
++ '[' /usr/share ']'
++ '[' -d /usr/share/applications ']'
++ file=/usr/share/applications/firefox.desktop
++ '[' -r /usr/share/applications/firefox.desktop ']'
+++ cut -d= -f 2-
+++ grep -E '^Exec(\[[^]=]*])?=' /usr/share/applications/firefox.desktop
+++ first_word
+++ read first rest
+++ echo firefox
++ command=firefox
+++ which firefox
++ command=/usr/bin/firefox
++ readlink -f /usr/bin/firefox
++ return
+ binary=/usr/lib/firefox/firefox
+ '[' -n /usr/lib/firefox/firefox ']'
+ set_browser_mime firefox.desktop text/html
+ xdg_mime_fixup
+ '[' generic = kde -a -z '' ']'
+ test -z text/html
+ MIME=text/html
++ get_browser_mime text/html
++ test -z text/html
++ MIME=text/html
++ xdg_mime_fixup
++ '[' generic = kde -a -z '' ']'
++ xdg-mime query default text/html
+ orig=userapp-Iceweasel-3YIBCY.desktop
+ fix_local_desktop_file firefox.desktop text/html
+ test -z text/html
+ MIME=text/html
+ apps=/home/dfc/.local/share/applications
+ '[' '!' -f /home/dfc/.local/share/applications/firefox.desktop ']'
+ return
+ mkdir -p /home/dfc/.local/share/applications
+ xdg-mime default firefox.desktop text/html
++ get_browser_mime
++ test -z ''
++ MIME=text/html
++ xdg_mime_fixup
++ '[' generic = kde -a -z '' ']'
++ xdg-mime query default text/html
+ '[' xuserapp-Iceweasel-3YIBCY.desktop '!=' xfirefox.desktop ']'
+ xdg-mime default userapp-Iceweasel-3YIBCY.desktop text/html
+ exit_failure_operation_failed
+ '[' 0 -gt 0 ']'
+ exit 4
$ sh -x /usr/bin/xdg-settings get default-web-browser
+ check_common_commands get default-web-browser
+ '[' 2 -gt 0 ']'
+ parm=get
+ shift
+ case "$parm" in
+ '[' 1 -gt 0 ']'
+ parm=default-web-browser
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' xget = x--list ']'
+ '[' xget '!=' x ']'
+ '[' xdefault-web-browser '!=' x ']'
+ '[' xget = xget -o x '!=' x ']'
+ op=get
+ parm=default-web-browser
+ shift 2
+ '[' xget '!=' xget -a xget '!=' xcheck -a xget '!=' xset ']'
+ detectDE
+ unset GREP_OPTIONS
+ '[' -n i3 ']'
+ case "${XDG_CURRENT_DESKTOP}" in
+ '[' x = x ']'
+ '[' x '!=' x ']'
+ '[' x '!=' x ']'
+ '[' x '!=' x ']'
++ dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager
+ xprop -root _DT_SAVE_MODE
+ grep ' = \"xfce4\"$'
+ xprop -root
+ grep -i '^xfce_desktop_window'
+ echo
+ grep -q '^Enlightenment'
+ '[' x = x ']'
+ case "$DESKTOP_SESSION" in
+ '[' x = x ']'
+ case "$(uname 2>/dev/null)" in
++ uname
+ '[' x = xgnome ']'
+ '[' -z '' ']'
+ DE=generic
+ case "$DE" in
+ dispatch_specific generic
+ local handler=generic
+ shift
+ '[' xget = xget ']'
+ case "$parm" in
+ get_browser_generic
+ '[' -n '' ']'
+ get_browser_mime x-scheme-handler/http
+ test -z x-scheme-handler/http
+ MIME=x-scheme-handler/http
+ xdg_mime_fixup
+ '[' generic = kde -a -z '' ']'
+ xdg-mime query default x-scheme-handler/http
userapp-Iceweasel-3YIBCY.desktop
+ return 0
+ '[' 0 -eq 0 ']'
+ exit_success
+ '[' 0 -gt 0 ']'
+ exit 0
$ sh -x /usr/bin/xdg-mime query default x-scheme-handler/http
+ check_common_commands query default x-scheme-handler/http
+ '[' 3 -gt 0 ']'
+ parm=query
+ shift
+ case "$parm" in
+ '[' 2 -gt 0 ']'
+ parm=default
+ shift
+ case "$parm" in
+ '[' 1 -gt 0 ']'
+ parm=x-scheme-handler/http
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' xquery '!=' x ']'
+ mode=
+ action=
+ filename=
+ mimetype=
+ case $1 in
+ shift
+ '[' -z default ']'
+ case $1 in
+ action=defapp
+ mimetype=x-scheme-handler/http
+ '[' -z x-scheme-handler/http ']'
+ case $mimetype in
+ shift
+ '[' defapp = makedefault ']'
+ '[' defapp = info ']'
+ '[' defapp = defapp ']'
+ detectDE
+ unset GREP_OPTIONS
+ '[' -n i3 ']'
+ case "${XDG_CURRENT_DESKTOP}" in
+ '[' x = x ']'
+ '[' x '!=' x ']'
+ '[' x '!=' x ']'
+ '[' x '!=' x ']'
++ dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager
+ xprop -root _DT_SAVE_MODE
+ grep ' = \"xfce4\"$'
+ xprop -root
+ grep -i '^xfce_desktop_window'
+ echo
+ grep -q '^Enlightenment'
+ '[' x = x ']'
+ case "$DESKTOP_SESSION" in
+ '[' x = x ']'
+ case "$(uname 2>/dev/null)" in
++ uname
+ '[' x = xgnome ']'
+ case "$DE" in
+ defapp_generic x-scheme-handler/http
+ MIME=x-scheme-handler/http
+ xdg_config_home=
+ '[' -n '' ']'
+ xdg_config_home=/home/dfc/.config
+ xdg_config_dirs=
+ '[' -n '' ']'
+ xdg_config_dirs=/etc/xdg
+ xdg_user_dir=
+ '[' -n '' ']'
+ xdg_user_dir=/home/dfc/.local/share
+ xdg_system_dirs=
+ '[' -n '' ']'
+ xdg_system_dirs=/usr/local/share/:/usr/share/
+ local 'oldifs=
' dir
+ IFS=:
+ for dir in '$xdg_config_home' '$xdg_config_dirs'
+ IFS='
'
+ check_mimeapps_list x-scheme-handler/http /home/dfc/.config
+ local mimetype=x-scheme-handler/http dir=/home/dfc/.config
+ local desktop 'oldifs=
'
+ IFS=:
+ for desktop in '$XDG_CURRENT_DESKTOP' ''\'''\'''
+ IFS='
'
+ '[' -n i3 ']'
++ echo i3-
++ tr '[:upper:]' '[:lower:]'
+ local prefix=i3-
+ local mimeapps_list=/home/dfc/.config/i3-mimeapps.list
+ '[' -f /home/dfc/.config/i3-mimeapps.list ']'
+ for desktop in '$XDG_CURRENT_DESKTOP' ''\'''\'''
+ IFS='
'
+ '[' -n '' ']'
+ local prefix=
+ local mimeapps_list=/home/dfc/.config/mimeapps.list
+ '[' -f /home/dfc/.config/mimeapps.list ']'
+ DEBUG 2 'Checking /home/dfc/.config/mimeapps.list'
+ '[' -z '' ']'
+ return 0
++ awk -v mimetype=x-scheme-handler/http '
BEGIN {
prefix=mimetype "="
indefault=0
found=0
}
{
if (index($0, "[Default Applications]") == 1) {
indefault=1
} else if (index($0, "[") == 1) {
indefault=0
} else if (!found && indefault && index($0, prefix) == 1) {
print substr($0, length(prefix) +1, length)
found=1
}
}
' /home/dfc/.config/mimeapps.list
+ local result=userapp-Iceweasel-3YIBCY.desktop
+ '[' -n userapp-Iceweasel-3YIBCY.desktop ']'
+ echo userapp-Iceweasel-3YIBCY.desktop
userapp-Iceweasel-3YIBCY.desktop
+ exit_success
+ '[' 0 -gt 0 ']'
+ exit 0
$ sh -x /usr/bin/xdg-mime default firefox.desktop x-scheme-handler/http
+ check_common_commands default firefox.desktop x-scheme-handler/http
+ '[' 3 -gt 0 ']'
+ parm=default
+ shift
+ case "$parm" in
+ '[' 2 -gt 0 ']'
+ parm=firefox.desktop
+ shift
+ case "$parm" in
+ '[' 1 -gt 0 ']'
+ parm=x-scheme-handler/http
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' xdefault '!=' x ']'
+ mode=
+ action=
+ filename=
+ mimetype=
+ case $1 in
+ action=makedefault
+ shift
+ '[' -z firefox.desktop ']'
+ case $1 in
+ filename=firefox.desktop
+ shift
+ '[' makedefault = makedefault ']'
+ '[' -z x-scheme-handler/http ']'
+ '[' 1 -gt 0 ']'
+ case $1 in
+ mimetype=x-scheme-handler/http
+ shift
+ make_default_kde firefox.desktop x-scheme-handler/http
+ vendor=firefox.desktop
+ mimetype=x-scheme-handler/http
+ '[' x = x4 ']'
++ kde-config --path config
++ cut -d : -f 1
+ default_dir=
+ default_file=/profilerc
+ '[' -z '' ']'
+ DEBUG 2 'make_default_kde: No kde runtime detected'
+ '[' -z '' ']'
+ return 0
+ return
+ make_default_generic firefox.desktop x-scheme-handler/http
+ xdg_user_dir=
+ '[' -n '' ']'
+ xdg_user_dir=/home/dfc/.local/share
+ default_file=/home/dfc/.local/share/applications/mimeapps.list
+ DEBUG 2 'make_default_generic firefox.desktop x-scheme-handler/http'
+ '[' -z '' ']'
+ return 0
+ DEBUG 1 'Updating /home/dfc/.local/share/applications/mimeapps.list'
+ '[' -z '' ']'
+ return 0
+ '[' -f /home/dfc/.local/share/applications/mimeapps.list ']'
+ awk -v mimetype=x-scheme-handler/http -v application=firefox.desktop '
BEGIN {
prefix=mimetype "="
indefault=0
added=0
blanks=0
found=0
}
{
suppress=0
if (index($0, "[Default Applications]") == 1) {
indefault=1
found=1
} else if (index($0, "[") == 1) {
if (!added && indefault) {
print prefix application
added=1
}
indefault=0
} else if ($0 == "") {
suppress=1
blanks++
} else if (indefault && !added && index($0, prefix) == 1) {
$0=prefix application
added=1
}
if (!suppress) {
while (blanks > 0) {
print ""
blanks--
}
print $0
}
}
END {
if (!added) {
if (!found) {
print ""
print "[Default Applications]"
}
print prefix application
}
while (blanks > 0) {
print ""
blanks--
}
}
' /home/dfc/.local/share/applications/mimeapps.list
+ mv /home/dfc/.local/share/applications/mimeapps.list.new /home/dfc/.local/share/applications/mimeapps.list
+ '[' 0 -gt 0 ']'
+ exit_success
+ '[' 0 -gt 0 ']'
+ exit 0
Hello, this is probably upstream bug report for this issue: https://bugs.freedesktop.org/show_bug.cgi?id=98562
FYI. Works for me: user@debian:/tmp$ xdg-settings get default-web-browser firefox-esr.desktop user@debian:/tmp$ xdg-settings set default-web-browser chromium.desktop user@debian:/tmp$ xdg-settings get default-web-browser chromium.desktop user@debian:/tmp$
Hi Annette m nunez