Como obtenho o gvfs-info para enviar os metadados do arquivo quando chamado pelo cron?

1

Estou com um problema estranho e espero que talvez alguém possa me dar alguma ideia. Meio perdido.

No Linux Mint, usando o Nemo, que tem a tendência de travar de vez em quando com o irritante efeito colateral de mudar vários ícones da área de trabalho. Eu pensei em apenas escrever um script rápido que despejaria os locais de todos os meus ícones em um arquivo de texto uma vez por dia, e depois outro para reposicioná-los onde deveriam estar.

Funciona perfeitamente quando eu o executo manualmente, mas não quando é executado através do cron.

Eu descobri que o problema se resume ao gvfs-info. Basicamente, eu uso o comando:

gvfs-info -a 'metadata::nemo-icon-position' /path/to/file

que produzirá:

metadata::nemo-icon-position: 220,682

na saída.

O gvfs-info, no entanto, precisa se comunicar com o dbus-daemon para obter os metadados, porque eles são realmente armazenados em ~ / .local / share / gvfs-metadata /. Ele não pode acessar o dbus-daemon quando está sendo gerado a partir do cron (ou sudo ou ssh) - um fato que eu descobri aqui e aqui que propõe uma possível solução.

Seguindo essa solução, posso executar com sucesso a partir do terminal:

dbus-launch --exit-with-session /path/to/myscript.sh

e funciona como esperado. No entanto, ainda produz a mesma saída sem os metadados. Eu tentei muitas permutações de onde eu chamei o dbus-launch e em combinações com 'su user' para garantir que ele está realmente rodando como meu usuário, mas eu acho que eu não entendo muito bem o que está acontecendo aqui.

Alguém tem alguma ideia?

    
por Shaav 08.06.2017 / 17:30

1 resposta

0

@ O comentário da steeldriver foi exatamente o que eu precisava (obrigado!).

Eu elevei o abaixo de Como alterar o Gsettings via shell remoto e era exatamente o que eu precisava!

PID=$(pidof -s nemo)
QUERY_ENVIRON="$(tr 'PID=$(pidof -s nemo)
QUERY_ENVIRON="$(tr '%pre%' '\n' < /proc/${PID}/environ | grep "DBUS_SESSION_BUS_ADDRESS" | cut -d "=" -f 2-)"
export DBUS_SESSION_BUS_ADDRESS="${QUERY_ENVIRON}"
' '\n' < /proc/${PID}/environ | grep "DBUS_SESSION_BUS_ADDRESS" | cut -d "=" -f 2-)" export DBUS_SESSION_BUS_ADDRESS="${QUERY_ENVIRON}"

Eu usei o nemo porque sei que ele estaria sendo executado no ambiente de área de trabalho.

    
por Shaav 10.06.2017 / 06:21

Tags