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

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

我在使用 12.04 LTS 时遇到了一个奇怪的问题。

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

如果我登录并执行 a,xdg-user-dirs-update --force则文件内容正常。注销后,文件仍然正常。当我使用 lightdm 再次登录时,出现问题。

这很烦人。

答案1

存在自动启动脚本

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

它调用该程序xdg-user-dirs-gtk-update,似乎没有man页面或--help解释,但我猜测可能是原因。

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

答案2

通过谷歌搜索您的问题,我发现xdg-user-dirs它可能是从Ubuntu 软件中心. 其声称具有以下特点:

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

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

答案3

我建议检查以下几点:

  • 尝试检查是否XDG_CONFIG_HOME设置为与“~/.config”不同的位置。
    • 在 shell 级别
    • 通过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

答案4

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

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

这将产生用户目录会议这应该可以防止任何进一步的重置。

相关内容