我遇到了一个奇怪的问题,希望有人能给我一些见解。有点不知所措。
在 Linux Mint 上使用 Nemo 时,它有时会崩溃,并产生令人讨厌的副作用,即移动一堆桌面图标。我想我只需编写一个快速脚本,每天将所有图标的位置转储到文本文件中一次,然后再编写另一个脚本将它们重新定位到它们应该在的位置。
当我手动运行它时,它运行完美,但通过 cron 运行时则不行。
我发现问题出在 gvfs-info 上。基本上,我使用以下命令:
gvfs-info -a 'metadata::nemo-icon-position' /path/to/file
其结果为:
metadata::nemo-icon-position: 220,682
在输出中。
但是,gvfs-info 需要与 dbus-daemon 通信以获取元数据,因为它实际上存储在 ~/.local/share/gvfs-metadata/ 中。当它从 cron(或 sudo 或 ssh)生成时,它无法访问 dbus-daemon — 我发现了一个事实这里和这里提出了一个可能的解决方案。
按照该解决方案,我可以从终端成功执行:
dbus-launch --exit-with-session /path/to/myscript.sh
并且它按预期工作。但是,它仍然会产生相同的输出,即使没有元数据。我尝试了很多次调用 dbus-launch 的排列组合,并与“su user”组合以确保它确实以我的用户身份运行,但我想我只是不太明白这里发生了什么。
有人有什么想法吗?
答案1
@steeldriver 的评论正是我需要的(谢谢!)。
我从如何通过远程 shell 更改 Gsettings这正是我所需要的!
PID=$(pidof -s nemo)
QUERY_ENVIRON="$(tr '\0' '\n' < /proc/${PID}/environ | grep "DBUS_SESSION_BUS_ADDRESS" | cut -d "=" -f 2-)"
export DBUS_SESSION_BUS_ADDRESS="${QUERY_ENVIRON}"
我使用“nemo”,因为我知道它会在我的桌面环境中运行。