Доверяйте значкам на рабочем столе, не щелкая их вручную в Ubuntu 18.04 Gnome 3
4 ответа
Благодаря никому особенному, файлы рабочего стола можно доверять через командную строку:gio set Your_desktop_file.desktop "metadata::trusted" yes
НОТА:
- Вы должны выполнить эту команду с тем же пользователем, что и владелец файлов рабочего стола.
- Работает только если вы запускаете команду в оболочке gnome (не через SSH)
- Чтобы сделать это автоматически при входе в систему, вы должны создать сценарий входа, который будет выполнять сценарий, поскольку он запускается только при запуске Gnome. Например, вы можете создать файл.desktop в
~/.config/autostart/что выполнить сценарий оболочки, включая команды gio - Удостовериться
nautilus-desktopдействительно началось. Вы можете создать цикл с помощьюsleep 1пока наутилус-рабочий стол не запустится - Иконки не обновятся автоматически. Вы можете добиться этого, нажав F5 на рабочем столе или перезапустив nautilus в вашем скрипте автозапуска.
killall nautilus && nautilus-desktop &(последний знак & должен убедиться, что остальная часть вашего кода будет работать. В противном случае он остановит скрипт там, пока вы не закроетеnautilus-desktopпроцесс снова)
Вдохновленный великолепным ответом @Sander, я вполне доволен этим подходом в Ubuntu 18.04. Я использую это в настройке автоматического создания виртуальной машины, где сначала размещаются значки на рабочем столе, а затем готовятся эти сценарии. Они выполняются только при первом запуске.
Я создаю файл рабочего стола ~/.config/autostart/desktop-truster.desktop со следующим содержанием:
[Desktop Entry]
Name=Desktop-Truster
Comment=Autostarter to trust all desktop files
Exec=~/.config/autostart/desktop-truster.sh
Type=Application
Рядом с ним скрипт ~/.config/autostart/desktop-truster.sh, который вызывается файлом рабочего стола автозапуска:
#!/bin/bash
# Wait for nautilus-desktop
while ! pgrep -f 'nautilus-desktop' > /dev/null; do
sleep 1
done
# Trust all desktop files
for i in ~/Desktop/*.desktop; do
[ -f "${i}" ] || break
gio set "${i}" "metadata::trusted" yes
done
# Restart nautilus, so that the changes take effect (otherwise we would have to press F5)
killall nautilus-desktop && nautilus-desktop &
# Remove X from this script, so that it won't be executed next time
chmod -x ${0}
Вы должны сделать файлы.desktop исполняемыми (доверие), что вы можете сделать, перейдя в ~/Desktop в терминале и выполнив следующую команду
chmod u+x foo*
Очевидно, используйте подстановочный знак, подходящий для ваших нужд, а затем обновите свой рабочий стол. Это потребует больше усилий, чем механизм доверия для одной записи, но сэкономит время, если вы импортируете, скажем, больше, чем n записей (где n - ваше максимальное неудобство).
Существуют способы мониторинга каталога и автоматического выполнения этого с помощью внешних инструментов, но я бы посоветовал вам серьезно подумать о последствиях безопасности для таких вещей.
Но в вашей DE нет способа сделать это, о чем я знаю.
ПРИМЕЧАНИЕ: это работает на KDE, но, очевидно, не работает на Gnome.
Я адаптировал ответ Janos для своей установки (/etc/skel создается через pam_mkdir в Ubuntu 22.04), поместив следующее в
/etc/profile.d/desktop-truster.sh(все пользователи должны иметь возможность читать этот файл):
# Trust all desktop files
for i in ~/Desktop/*.desktop; do
[ -f "${i}" ] || break
gio set "${i}" "metadata::trusted" true
done
# Restart nautilus, so that the changes take effect (otherwise we would have to press F5)
nautilus -q
Внесены изменения:
- заменены
yesсtrue - убрал ожидание, так как это не сработало
- использует
nautilus -qперезапустить наутилус
