Weird XDG User Dir ошибка сброса


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в файл автозапуска, что должно препятствовать его запуску (и вас спросят, хотите ли вы сохранить Ваша измененная копия во время любых будущих обновлений).


Я сделал нечто подобное, но создал скрипт в /etc/X11/Xsession.d/, чтобы перезаписать сброс XDG.
Sybreon

CommentПоле в моем .desktopфайле говорит имена общих папок Update , чтобы соответствовать текущей локали . Но это не имеет смысла, почему я хотел бы изменить свой фактический путь в зависимости от локали; Я мог видеть переключение строки отображения для этих папок, но не сам путь файловой системы.
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чтобы они переписывались по тем же путям?


user home dir - это монтирование glusterfs, которое монтируется во время загрузки ... поэтому оно доступно, когда пользователь входит в систему.
sybreon

0

После внесения изменений и сохранения файла, но перед повторным входом выполните

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

Это создает пользовательские каталоги . Conf, который должен предотвратить дальнейший сброс.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.