奇怪的XDG用户目录重置错误


10

我对12.04 LTS有一个奇怪的问题。

无论我对~/.config/user-dirs.dirs文件做什么,无论何时我下次再次登录时,该文件都只会设置为$ HOME。使用lightdm登录时会发生某些事情,该事件会覆盖该文件的内容。

如果我登录并执行操作,xdg-user-dirs-update --force那么文件的内容就可以了。注销后,文件仍然可以。当我再次使用lightdm登录时,出现了问题。

真烦人。


您正在使用哪个桌面环境?最近有一个错误在这里填充:bugs.launchpad.net/pcmanfm/+bug/1031463

我正在使用默认的Unity2D
sybreon,2012年

Answers:


2

存在一个自动启动脚本

/etc/xdg/autostart/user-dirs-update-gtk.desktop

哪个调用了该程序xdg-user-dirs-gtk-update,该程序似乎没有任何man页面或--help说明,但是我想可能是原因所在。

您可以删除此脚本(该脚本似乎属于该软件包xdg-user-dirs-gtk,并且可能在更新后会重新创建),或者Hidden=true在自动启动文件中添加一行,这会阻止其运行(并且会询问您是否要保留该脚本)您在以后的任何更新中修改的副本)。


我做了类似的事情,但是在/etc/X11/Xsession.d/中创建了一个脚本来覆盖XDG重置。
sybreon 2012年

Comment.desktop文件中的字段显示更新公用文件夹名称以匹配当前语言环境。但这没有意义,为什么我要根据语言环境切换实际路径;我可以看到切换了这些文件夹的显示字符串,但没有切换文件系统路径本身。
palswim

0

搜寻您的问题导致了我xdg-user-dirs,这可能是从Ubuntu软件中心安装的。它具有以下功能:

该程序读取配置文件和一组默认目录。然后,它在用户主目录中创建这些目录的本地化版本,并在$(XDG_CONFIG_HOME)/user-dirs.dirs(XDG_CONFIG_HOME默认为〜/ .config)中设置一个配置文件,应用程序可以读取这些文件来找到这些目录。

完整的文档可以在这里找到。


这不是解决方案,因为问题在于这些文件在每次登录后都会以某种方式“重置”。
sybreon 2012年

0

我建议检查以下几点:

  • 尝试检查是否XDG_CONFIG_HOME将“〜/ .config”设置为其他位置。
    • 在壳层
    • 通过 grep XDG_CONFIG_HOME /etc/*profile /etc/*rc ~/.*rc ~/.*profile /etc/X11/Xsession /etc/X11/Xsession.d/*

作为解决方法,请在标准目录和自定义目录名称之间使用符号链接。

例如

 cd ${HOME}
 function link() {
 local dir=$1
 shift 1
 [ -e ${dir} ] || mkdir -p ${dir}
 for name in $*
 do
 if [ -L ${name} ]
 then
 if [ "$(readlink ${name})" = "${dir}" ]
 then
 [ -e  "${dir}" ] || mkdir -p "${dir}"
 echo "${name} allready converted to ${dir}"
 else
 echo "${name} (link) converted to ${dir}"
 [ -e  "${dir}" ] || mkdir -p "${dir}"
 mv -av ${name}/* ${dir}/ 2>/dev/null    || true # can be emtpy
 mv -av ${name}/.??* ${dir}/ 2>/dev/null || true # can be emtpy
 rm -f ${name}
 ln -svf ${dir} ${name}
 fi
 else
 if [ -d ${name} ]
 then
 mv -av ${name}/* ${dir}/ 2>/dev/null    || true # can be emtpy
 mv -av ${name}/.??* ${dir}/ 2>/dev/null || true # can be emtpy
 rmdir ${name}
 ln -sv ${dir} ${name};
 echo "${name} (dir) converted to ${dir}"
 else
 ln -sv ${dir} ${name};
 echo "${name} linked to ${dir}"
 fi
 fi
 done

 }


 #     real                DE          EN
 link  ~/data/templates    Vorlagen    Templates
 link  ~/data/public       Öffentlich  Public
 link  ~/data/documents    Dokumente   Documents
 link  ~/data/music        Musik       Music
 link  ~/data/photo        Bilder      Pictures
 link  ~/data/video        Videos
 link  ~/data/privat       Privat

目前,我有一种解决方法,可以使用/etc/X11/Xsession.d/脚本来强制目录。
sybreon,2012年

0

如果更新运行时自定义目录不存在,则条目将被重置。您的主目录是否有可能直到登录过程的后期才挂载?也许您可以设置默认值,/etc/xdg/user-dirs.defaults以便无论如何将其重写为相同的路径?


用户主目录是glusterfs启动安装过程中安装..所以,它可以当用户登录。
sybreon

0

进行更改并保存文件后,但重新登录之前,请执行

echo "enabled=false" > ~/.config/user-dirs.conf

这将创建user-dirsconf,应防止任何进一步的重置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.