Weird XDG User Dir reset bug


10

J'ai un problème bizarre avec 12.04 LTS.

Indépendamment de ce que je fais au ~/.config/user-dirs.dirsfichier, chaque fois que je me reconnecte la prochaine fois, ce fichier est défini sur $ HOME uniquement. Quelque chose se passe lors de la connexion à l'aide de lightdm qui remplace le contenu de ce fichier.

Si je me connecte et que je fais un, xdg-user-dirs-update --forcele contenu du fichier est OK. Après ma déconnexion, le fichier est toujours OK. C'est lorsque je me reconnecte à l'aide de lightdm que quelque chose se passe mal.

C'est assez ennuyeux.


Quel environnement de bureau utilisez-vous? Il y a eu un bug récemment rempli: bugs.launchpad.net/pcmanfm/+bug/1031463

j'utilise le Unity2D par défaut
sybreon

Réponses:


2

Il existe un script de démarrage automatique

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

Qui appelle le programme xdg-user-dirs-gtk-update, qui semble n'avoir ni manpage ni --helpexplication, mais je suppose que cela pourrait être la cause.

Vous pouvez soit supprimer ce script (qui semble appartenir au package xdg-user-dirs-gtket peut être recréé s'il est mis à jour), soit ajouter une ligne Hidden=trueau fichier de démarrage automatique, ce qui devrait l'empêcher de s'exécuter (et il vous sera demandé si vous souhaitez conserver votre copie modifiée lors de futures mises à jour).


J'ai fait quelque chose de similaire, mais j'ai créé un script dans /etc/X11/Xsession.d/ pour écraser les réinitialisations XDG.
sybreon

Le Commentchamp dans mon .desktopfichier indique Mettre à jour les noms des dossiers communs pour correspondre aux paramètres régionaux actuels . Mais cela n'a aucun sens pourquoi je voudrais changer mon chemin réel en fonction des paramètres régionaux; Je pouvais voir changer la chaîne d'affichage de ces dossiers, mais pas le chemin du système de fichiers lui-même.
palswim

0

J'ai recherché votre problème sur Google xdg-user-dirs, qui peut être installé à partir du Centre logiciel Ubuntu . Il revendique la fonctionnalité suivante:

Ce programme lit un fichier de configuration et un ensemble de répertoires par défaut. Il crée ensuite des versions localisées de ces répertoires dans le répertoire de base des utilisateurs et configure un fichier de configuration dans $ (XDG_CONFIG_HOME) /user-dirs.dirs (XDG_CONFIG_HOME par défaut ~ / .config) que les applications peuvent lire pour trouver ces répertoires.

La documentation complète peut être trouvée ici .


ce n'est pas la solution car le problème est que ces fichiers sont en quelque sorte «réinitialisés» après chaque connexion.
sybreon

0

Je suggère de vérifier les points suivants:

  • Essayez de vérifier si XDG_CONFIG_HOMEest défini sur un emplacement différent comme «~ / .config».
    • au niveau de la coque
    • via grep XDG_CONFIG_HOME /etc/*profile /etc/*rc ~/.*rc ~/.*profile /etc/X11/Xsession /etc/X11/Xsession.d/*

Comme solution de contournement, utilisez des liens symboliques entre le standard et vos noms de répertoires personnalisés .

par exemple

 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

pour le moment, j'ai une solution pour forcer les répertoires en utilisant un script /etc/X11/Xsession.d/.
sybreon

0

Les entrées seraient réinitialisées si les répertoires personnalisés n'existent pas lors de l'exécution de la mise à jour. Est-il possible que votre répertoire personnel ne soit monté que tard dans le processus de connexion? Peut-être que vous pouvez définir les valeurs par défaut /etc/xdg/user-dirs.defaultsafin qu'il soit réécrit sur les mêmes chemins de toute façon?


le répertoire home de l'utilisateur est un montage glusterfs qui est monté lors du démarrage .. il est donc disponible lorsque l'utilisateur se connecte.
sybreon

0

Après avoir apporté les modifications et enregistré le fichier mais avant de vous reconnecter, exécutez

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

Cela crée des répertoires utilisateur . conf qui devrait empêcher toute réinitialisation supplémentaire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.