Вопрос или проблема
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Link
Name=ShareFolder
Icon=/usr/share/icons/DPL/NetworkShare.png
Name[en_US]=ShareFolder
URL=smb://servername/sharefolder
Это мой файл .desktop
, который содержит URL. Как мне выполнить этот ярлык рабочего стола в терминале? Если я дважды щелкаю, он работает отлично, но мне нужно выполнить это в терминале.
Я пытался Запустить .desktop файл в терминале. Это тоже не сработало, но работает, если это ярлык “приложения”. Я пытаюсь выполнить “ссылку” .desktop
файл, где вы определяете в секции типа (Type=Link
) и (URL=smb://servername/sharefolder
).
Используйте
xdg-open path/to/file.desktop
Первая строка в файле – это приложение, которое запускает этот файл.
Если это не сработает, попробуйте это (адаптировано из Запуск .desktop файла в терминале):
xdg-open `grep ‘^URL’ path/to/file.desktop | tail -1 | sed ‘s/^URL=//’ | sed ‘s/%.//’` &
Извините за возобновление обсуждения, но предыдущий ответ кажется неверным, так как он просто открывает .desktop файл в текстовом редакторе. Если вы хотите “выполнить” переменную рабочего стола, то есть смоделировать двойной щелчок по ней из графической среды рабочего стола, используйте соответствующий запускатор для вашей графической среды.
На Cinnamon, Gnome, Gnome Flashback и MATE используйте gio launch path/to/file.desktop
.
Указанная ниже страница вики должна помочь вам найти соответствующий запускатор для вашей графической среды, если вы не используете Cinnamon/Gnome/Gnome Flashback/MATE.
Ссылка: https://wiki.archlinux.org/title/Desktop_entries
Ответ или решение
Чтобы выполнить файл .desktop
, содержащий ссылку, можно использовать несколько различных подходов в зависимости от вашего рабочего окружения и инструментов. Рассмотрим несколько способов выполнения вашего файла name.desktop
, который содержит URL.
Определение файла .desktop
Файл .desktop
, который вы предоставили, содержит следующую структуру:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Link
Name=ShareFolder
Icon=/usr/share/icons/DPL/NetworkShare.png
Name[en_US]=ShareFolder
URL=smb://servername/sharefolder
Этот файл представляет собой ярлык для сетевой папки, используемый в различных графических средах Linux. Он имеет тип Link
, который определяет, что при выполнении файла должен открываться указанный URL.
Способы выполнения файла .desktop в терминале
-
Использование xdg-open
Самый простой способ открыть URL, указанный в вашем
.desktop
файле — это использовать командуxdg-open
. Эта команда автоматически запустит соответствующее приложение по указанному URL.Откройте терминал и выполните следующую команду:
xdg-open path/to/name.desktop
Замените
path/to/name.desktop
на фактический путь к вашему файлу.desktop
. Это будет эквивалентно двойному щелчку по файлу в графическом интерфейсе. -
Команда gio
Если вы используете одно из следующих рабочих окружений: Cinnamon, Gnome, Gnome Flashback или MATE, вы можете воспользоваться командой
gio
.В терминале выполните:
gio launch path/to/name.desktop
Это также откроет ваш ярлык, как если бы вы кликнули по нему мышью.
-
Извлечение URL из файла .desktop
Если предыдущие команды по каким-то причинам не сработают, вы можете извлечь URL вручную и открыть его. Для этого выполните следующую команду, которая извлекает URL из вашего файла:
url=$(grep '^URL=' path/to/name.desktop | cut -d'=' -f2) && xdg-open "$url"
Эта команда сначала получает URL, затем использует
xdg-open
для его открытия. Таким образом, вы сможете работать с содержимым.desktop
файла более тонко.
Заключение
Выбор подхода зависит от ваших предпочтений и используемой среды рабочего стола. Команда xdg-open
является наиболее универсальным решением для открытия большинства ссылок. Если же по какой-то причине она не работает, gio launch
и извлечение URL через команду grep
также окажутся полезными инструментами.
Не забывайте, что правильная установка разрешений файла также критически важна. Убедитесь, что ваш .desktop
файл является исполняемым:
chmod +x path/to/name.desktop
Эти действия позволят вам успешно открыть сетевую папку, соответственно, облегчая взаимодействие с сетевыми ресурсами.