Erro de redefinição de diretório de usuário XDG estranho


10

Eu tenho um problema estranho com o 12.04 LTS.

Independentemente do que eu faço com o ~/.config/user-dirs.dirsarquivo, sempre que eu efetuar o login novamente na próxima vez, esse arquivo será definido apenas para $ HOME. Algo está acontecendo durante o login usando o lightdm que substitui o conteúdo desse arquivo.

Se eu entrar e fizer um xdg-user-dirs-update --force, o conteúdo do arquivo está OK. Depois que eu sair, o arquivo ainda está OK. É quando eu logo novamente usando lightdm que algo sai errado.

É muito chato.


Qual ambiente de área de trabalho você está usando? Houve um erro cheio aqui recentemente: bugs.launchpad.net/pcmanfm/+bug/1031463

Estou usando o padrão Unity2D
sybreon 4/12/12

Respostas:


2

Existe um script de inicialização automática

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

Que chama o programa xdg-user-dirs-gtk-update, que parece não ter manpágina ou --helpexplicação, mas acho que pode ser a causa.

Você pode excluir esse script (que parece pertencer ao pacote xdg-user-dirs-gtke pode ser recriado se for atualizado) ou adicionar uma linha Hidden=trueao arquivo de inicialização automática, o que deve impedir sua execução (e você deve ser perguntado se deseja manter sua cópia modificada durante futuras atualizações).


Fiz algo semelhante, mas criei um script no /etc/X11/Xsession.d/ para substituir as redefinições do XDG.
sybreon

O Commentcampo no meu .desktoparquivo diz Atualizar nomes de pastas comuns para corresponder à localidade atual . Mas isso não faz sentido porque eu gostaria de mudar meu caminho real, dependendo da localidade; Pude ver alternando a seqüência de exibição dessas pastas, mas não o caminho do sistema de arquivos.
palswim 7/01/19

0

O seu problema no Google me levou ao Google xdg-user-dirs, que pode ser instalado a partir do Ubuntu Software Center . Ele afirma o seguinte recurso:

Este programa lê um arquivo de configuração e um conjunto de diretórios padrão. Em seguida, ele cria versões localizadas desses diretórios no diretório inicial do usuário e configura um arquivo de configuração em $ (XDG_CONFIG_HOME) /user-dirs.dirs (XDG_CONFIG_HOME assume como padrão ~ / .config) que os aplicativos podem ler para encontrar esses diretórios.

A documentação completa pode ser encontrada aqui .


essa não é a solução, pois o problema é que esses arquivos são de alguma forma 'redefinidos' após cada login.
sybreon

0

Sugiro verificar os seguintes pontos:

  • Tente verificar se XDG_CONFIG_HOMEestá definido para um local diferente como '~ / .config`.
    • no nível do shell
    • através da grep XDG_CONFIG_HOME /etc/*profile /etc/*rc ~/.*rc ~/.*profile /etc/X11/Xsession /etc/X11/Xsession.d/*

Como solução alternativa, use links simbólicos entre os nomes de diretório padrão e personalizado .

por exemplo

 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

No momento, eu tenho uma solução alternativa para forçar os diretórios usando um script /etc/X11/Xsession.d/.
sybreon

0

As entradas serão redefinidas se os diretórios personalizados não existirem quando a atualização for executada. É possível que seu diretório pessoal não seja montado até o final do processo de login? Talvez você possa definir os padrões /etc/xdg/user-dirs.defaultspara que sejam reescritos para os mesmos caminhos, afinal?


a dir usuário doméstico é um GlusterFS montagem que é montado durante a inicialização .. por isso, ele está disponível quando o usuário efetuar login.
sybreon

0

Depois de fazer as alterações e salvar o arquivo, mas antes de efetuar login novamente, execute

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

Isso cria diretórios do usuário . conf que deve impedir qualquer reinicialização adicional.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.