奇妙な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

回答:


2

自動起動スクリプトが存在します

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

どれがプログラムを呼び出すか、ページや説明xdg-user-dirs-gtk-updateがないように見えmanます--helpが、私は原因かもしれないと思います。

このスクリプト(パッケージに属しているように見え、xdg-user-dirs-gtk更新された場合は再作成される可能性があります)を削除するかHidden=true、自動起動ファイルに行を追加して実行を阻止することができます(そして、続行するかどうか尋ねられます今後の更新時に変更されたコピー)。


私は同様のことをしましたが、XDGリセットを上書きするスクリプトを/etc/X11/Xsession.d/に作成しました。
sybreon

Comment私の.desktopファイルのフィールドには、「現在のロケールに一致するように共通フォルダー名を更新する」と表示されています。しかし、ロケールに応じて実際のパスを切り替えたいのはなぜでしょうか。これらのフォルダーの表示文字列を切り替えることはできましたが、ファイルシステムのパス自体はわかりません。
palswim

0

問題をグーグルで調べたxdg-user-dirsところ、Ubuntu Software Centerからインストールされる可能性があります。それは次の特徴を主張します:

このプログラムは、構成ファイルとデフォルトのディレクトリのセットを読み取ります。次に、これらのディレクトリのローカライズバージョンをユーザーのホームディレクトリに作成し、アプリケーションがこれらのディレクトリを見つけるために読み取ることができる$(XDG_CONFIG_HOME)/user-dirs.dirs(XDG_CONFIG_HOMEのデフォルトは〜/ .config)に構成ファイルを設定します。

完全なドキュメントはここにあります


問題は、これらのファイルがログインのたびにどういうわけか「リセット」されるため、解決策ではありません。
sybreon

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

0

更新の実行時にカスタムディレクトリが存在しない場合、エントリはリセットされます。ログインプロセスの後半までホームディレクトリがマウントされない可能性はありますか?多分あなたは/etc/xdg/user-dirs.defaultsとにかく同じパスに書き直されるようにデフォルトを設定できますか?


ユーザーのホームディレクトリはglusterfsは、ユーザーのログイン時にそう、それが利用可能です。..ブート時にマウントされたマウントである。
sybreon

0

変更してファイルを保存した後、再度ログインする前に、次を実行します。

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

これによりuser-dirsが作成されますconfの任意のさらなるリセットを防止しなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.