Доверяйте значкам на рабочем столе, не щелкая их вручную в Ubuntu 18.04 Gnome 3

После перемещения файла.desktop в папку "Рабочий стол" ~/Desktop, он показывает значок на рабочем столе. Для первого запуска вы должны доверять приложению. Есть ли способ доверять ему напрямую, не нажимая? chmod +x *.Desktop уже сделано, чтобы сделать файл исполняемым

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перезапустить наутилус
Другие вопросы по тегам