У меня возникла странная проблема, и я надеялся, что кто-то там сможет дать мне некоторое представление.
В 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-демонами, чтобы получить метаданные, потому что они фактически хранятся в ~ / .local / share / gvfs-metadata /. Он не может получить доступ к dbus-демонам, когда он порождается cron (или sudo или ssh, если на то пошло) - факт, который я открыл здесь и здесь, который предлагает возможное решение.
Следуя этому решению, я может успешно выполнить с терминала:
dbus-launch --exit-with-session /path/to/myscript.sh
и работает как ожидалось. Однако он все равно производит одинаковый вывод без метаданных. Я пробовал много перестановок, где я назвал dbus-запуск и в сочетании с «su user», чтобы убедиться, что он действительно работает как мой пользователь, но я думаю, что я просто не понимаю, что здесь происходит очень хорошо.
У кого-нибудь есть мысли?
комментарий @ steeldriver был именно тем, что мне нужно (спасибо!).
Я снял нижеследующее: Как изменить 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», потому что знаю, что он будет работать в моей среде рабочего стола.
комментарий @ steeldriver был именно тем, что мне нужно (спасибо!).
Я снял нижеследующее: Как изменить 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», потому что знаю, что он будет работать в моей среде рабочего стола.
комментарий @ steeldriver был именно тем, что мне нужно (спасибо!).
Я снял нижеследующее: Как изменить 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», потому что знаю, что он будет работать в моей среде рабочего стола.