Программы, установленные через snap, не отображаются в запуске.

Вопрос или проблема

Только что обновил Ubuntu до версии 16.04 и впервые пробую snap-пакеты.

Мне понадобился meshlab для просмотра некоторых stl-файлов. Столкнулся с проблемой входа в систему через p-i-t-n. Обнаружил, что установка snap-пакетов через командную строку не требует входа в систему. Сделал:

sudo snap install meshlab

и вуаля, meshlab установлен, входа через p-i-t-n не было. Работает нормально из командной строки. Однако программа не отображается в лаунчере. Почему так? Snap-пакеты не отображаются в лаунчере? Как это исправить?

Если вы используете zsh, директории snap binary и desktop не будут автоматически добавлены в ваши переменные окружения. Чтобы решить эту проблему, я добавил следующую строку в /etc/zsh/zprofile (взято из Arch):

emulate sh -c 'source /etc/profile'

Это обработает ваш файл /etc/profile с эмуляцией bash, который, в свою очередь, подключает /etc/profile.d/* и устанавливает необходимые пути PATH и т.д.

Чтобы добавить только директории snap в ваш путь, без включения остальных настроек profиля bash по умолчанию:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'

Скопируйте ярлыки приложений из /var/lib/snapd/desktop/applications/ в /usr/share/applications/

Пример:
sudo cp /var/lib/snapd/desktop/applications/brave_brave.desktop /usr/share/applications/

Мне пришлось сделать это на GalliumOS 3.0 (на основе Xubuntu)

Для меня это также связано с комбинацией Wayland/ZSH под Ubuntu 18.04 – хотя /var/lib/snapd/desktop указан в переменной XDG_DATA_DIRS (это выполняется с помощью /etc/profile.d/apps-bin-path.sh), лаунчер не распознает приложения из этой папки.

Быстрое решение – это создание символьной ссылки на нужные файлы desktop, например:

ln -s /var/lib/snapd/desktop/applications/rubymine_rubymine.desktop .local/share/applications

Это встроено в систему snap, но вам нужно добавить ссылку в вашу панель. Чтобы запустить программу, введите

snap run meshlab

как только она запустится, щелкните правой кнопкой мыши на значке и выберите “добавить на панель”.

На Kubuntu 18.04 решением для меня было добавление

export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/"

в пользовательский файл, например, snap-apps.sh в ~/.config/plasma-workspace/env. Но это применимо только к Plasma 5 и, возможно, уже исправлено в Ubuntu 18.10.

Как уже упоминалось в ответе dsager, стандартный /etc/profile.d/apps-bin-path.sh, по-видимому, не работает.

Мне помогла команда

ln -s /var/lib/snapd/desktop/applications ~/.local/share/applications/snap

Эта команда создает ссылку на папку с ярлыками приложений snap в мою локальную папку. Теперь я могу запускать snap приложения, как и другие.

Snap-пакеты не отображаются в лаунчере?

Они отображаются, если snap содержит корректные .desktop файлы. Только у Meshlab’s meshlabserver есть корректный .desktop файл (и действительно, он отображается в моем лаунчере). Однако meshlab .desktop файл пытается выполнить meshlab.meshlab, тогда как должен использовать meshlab. В результате он не отображается.

Как это исправить?

Если вы выполните snap info meshlab, вы увидите контактную информацию издателя. Я предлагаю вам сообщить им о проблеме. До тех пор, вы всегда можете запускать meshlab из командной строки или создать свой собственный .desktop файл для него.

Я не смог прокомментировать чужой пост. Однако это чтобы добавить к ответу dsager, который помог мне на Fedora 28 (насколько я могу судить, используется Wayland)

Я добавил следующий фрагмент в свой ~/.bash_profile, чтобы создать ссылки на каждый файл в /var/lib/snapd/desktop/applications при входе в систему. Аналогично, это можно изменить для удаления ссылок для приложений, которых больше не существует, изменив пути в строках for и if, затем заменив ln на rm.

for i in /var/lib/snapd/desktop/applications/*.desktop; do
    if [ ! -f ~/.local/share/applications/${i##*/} ];then
            ln -s /var/lib/snapd/desktop/applications/${i##*/} ~/.local/share/applications/${i##*/};
    fi;
done

Существует, вероятно, множество других способов достичь этого, но это работает.

Чтобы запустить Meshlab из вашего списка приложений, вам нужно с терминала выполнить snap run meshlab и остановить его, тогда вы увидите Meshlab в своем списке приложений

Snap бинары хранятся в /snap/bin, по крайней мере, в Debian 10 (buster). Добавьте директорию в $PATH и перезагрузите bash профайл, ~/.bashrc.

echo -n "export PATH=/snap/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc

Та же ситуация с blender.

snap run blender

работает, однако проблему не решает.

Мне пришлось скопировать blender.desktop из /snap/blender/current/blender.desktop в /usr/share/applicationssudo) и тогда все решилось: blender отображается в меню gnome и nautilus ассоциирует его с .blend файлами.

Похоже, что это какая-то недоработка между snaps и gnomes.
Возможно, нам нужен “снаппи” gnome (или это гномистый snap ;^).

На моей машине все установленнные snapы отображаются в лаунчере только после выхода из системы и нового входа. Я только что установил Krita и Standard Notes. Вышел из системы и снова вошел, и они появились в лаунчере. То же самое со Spotify.

У меня была проблема, что после установки zsh ни один из моих snap-пакетов не отображался в стартовом меню или на Latte Dock в KDE (никакие приложения не отображались, хотя они существовали).

Что помогло – это один из ответов сверху.

Я сделал следующее:

sudo cp /var/lib/snapd/desktop/applications/* /usr/share/applications/

Возможно, вам нужно будет перезагрузить компьютер после этого, чтобы приложения отобразились.

В моем случае, впервые, editor Kate установленный через snap на Mint, показывает иконку в меню лаунчера и на панели запуска.

Но иконка исчезает после недавнего автоматического обновления snap. Следуя ответу H2onvety, я попробовал отредактировать его desktop файл с помощью редактора меню, обнаружил, что он указывает на старую версию kate editor, которой больше нет в системе (Icon=/snap/kate/158/meta/gui/icon.png). Тогда я изменил его на Icon=/snap/kate/current/meta/gui/icon.png, и иконка в меню лаунчера вернулась, отсоединив и повторно прикрепив ее на панель, я исправил проблему неотображения иконки в панели запуска.

Я столкнулся с той же проблемой на Ubuntu 18.04. Похоже, это проблема с Wayland. Решением для меня было переключиться с Wayland на Xorg.

У меня обычный bash-shell (не zsh) в Kubuntu 21.10, и у меня была эта проблема только с одним snap (Opera), тогда как другие были видны в лаунчере.

Вот как вручную решить проблему в графическом интерфейсе в KDE Plasma:

Откройте с текстовым редактором .desktop файл программы в

/var/lib/snapd/desktop/applications

enter image description here

и скопируйте путь к исполняемому файлу в “Команда:” в Редакторе меню KDE (открывается при щелчке правой кнопкой мыши на лаунчере и выборе Изменить приложения).

Также из .desktop файла обратите внимание на путь к значку программы и в Редакторе меню KDE найдите его в этом местоположении (если не найдете подходящий значок среди текущей темы значков).

enter image description here

Этот скрипт сработал для меня, основываясь на предыдущих вопросах. Он создает .desktop ссылки для всех snap приложений.

Моя среда – Ubuntu Server + i3 + Nautilus

#!/bin/bash

# Исходная директория, где Snap хранит .desktop файлы
source_dir="/var/lib/snapd/desktop/applications"
# Целевая директория, где будут созданы символические ссылки
target_dir="$HOME/.local/share/applications"

# Убедитесь, что целевая директория существует
mkdir -p "$target_dir"

# Перебираем все .desktop файлы в исходной директории
for desktop_file in "$source_dir"/*.desktop; 
do
  # Получаем базовое имя .desktop файла
  file_name=$(basename "$desktop_file")

  # Создаем символическую ссылку в целевой директории
  ln -s "$desktop_file" "$target_dir/$file_name"
done

echo "Созданы символические ссылки для всех Snap приложений."

Flatpak решает эту проблему с файлом в /etc/X11/Xsession.d/20flatpak, который добавляет бинарные файлы в PATH и ярлыки приложений в XDG_DATA_DIRS. Копия этого файла также находится в /etc/profile.d/flatpak.sh. Предположительно, первый для вашей рабочей среды, а второй для вашей терминальной сессии.

Как уже упоминалось другими, snapd имеет файл в /etc/profile.d/apps-bin-path.sh, но не имеет соответствующей копии в /etc/X11/Xsession.d. Поэтому исправление настолько простое:

$ sudo cp /etc/profile.d/apps-bin-path.sh /etc/X11/Xsession.d/20snap

Мне нравится этот подход, потому что он соответствует последовательному подходу к flatpak и, вероятно, будет легко найти, когда я задамся вопросом, как я это исправил через год.

.

Ответ или решение

Если вы встретились с ситуацией, когда программы, установленные через Snap на Ubuntu, не отображаются в лаунчере, это может быть связано с рядом причин. Понимание проблемы и знание того, как ее можно решить, поможет вам быстро вернуть работу вашего ПО в нормальное русло.

Теория

Snap-пакеты — это универсальный способ дистрибуции программного обеспечения, который обеспечивает единое окружение для приложений на разных дистрибутивах Linux. Однако, иногда программы, установленные через Snap, не появляются в лаунчере операционной системы Ubuntu. Это может происходить из-за особенностей интеграции Snap с системной средой рабочего стола, которые зависят от конфигурации используемой системы и версии Ubuntu.

Примеры

  1. Проблемы с десктопными файлами: Так, в случае программы MeshLab, часть проблемы может заключаться в некорректном десктопном файле, где указание на исполняемый файл может быть неверным.

  2. Отсутствие обновления путей: Иногда переменные окружения, такие как XDG_DATA_DIRS, могут не обновляться правильно, особенно если вы используете альтернативные оболочки командной строки, такие как ZSH вместо стандартной Bash.

  3. Смешанные окружения: Использование разных графических серверов, таких как Wayland вместо Xorg, также может привести к тому, что Snap-приложения не будут отображаться корректно.

Применение

  1. Проверка и исправление десктопных файлов: Вы можете проверить, корректно ли настроены десктопные файлы для ваших приложений. Например, для MeshLab редактируйте файл десктопа, чтобы исправить путь к исполняемому файлу.

  2. Обновление переменных окружения: Добавьте необходимые пути непосредственно в конфигурационные файлы окружения. Например, добавьте export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/" в ~/.bash_profile или соответствующий файл для своей оболочки.

  3. Создание символических ссылок: Для обеспечения доступности приложений в лаунчере можно создать символические ссылки на десктопные файлы Snap в локальные директории приложений:

    ln -s /var/lib/snapd/desktop/applications/*.desktop ~/.local/share/applications/
  4. Копирование файлов: Перенос файлов .desktop из директории Snap в системную директорию приложений также является рабочим способом решения:

    sudo cp /var/lib/snapd/desktop/applications/* /usr/share/applications/

    После копирования может потребоваться перезагрузка системы для обновления информации в лаунчере.

  5. Переключение с Wayland на Xorg: Если вы используете Wayland и у вас возникают проблемы, попробуйте переключиться на Xorg. Это может решить проблему несоответствия путей или переменных окружения.

  6. Использование независимых профилей: Можно адаптировать решения, используемые другими системами дистрибуции пакетов, такими как Flatpak, для исправления аналогичных проблем с интеграцией Snap.

Заключение

Проблемы с интеграцией Snap-пакетов в вашем окружении рабочего стола могут быть вызваны множеством факторов, от неправильных путей в десктопных файлах до конфигурации системы. Применение вышеупомянутых решений позволит вам попытаться устранить данную проблему, улучшая функциональность вашего рабочего пространства. Не забудьте следить за обновлениями вашей системы и Snap-пакетов, так как исправление таких проблем может быть включено в будущие обновления.

Оцените материал
Добавить комментарий

Капча загружается...