Программы, установленные с помощью оснастки, не отображаются в Launcher


37

Только что обновил до Ubuntu 16.04 и пробовал делать мгновенные пакеты.

Поэтому мне понадобился meshlab для просмотра некоторых файлов stl. Подбежал к проблеме с входом в систему pitn. Обнаружил, что для установки пакетов Snap не требуется вход в систему.

sudo snap install meshlab

и эй Presto meshlap установлен, нет входа в систему. Работает нормально из командной строки. Однако программа не отображается в панели запуска. Почему это? Пакеты моментальных снимков не отображаются в программе запуска? Как я могу это исправить?

Ответы:


40

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

emulate sh -c 'source /etc/profile'

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

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

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

1
Благодарность! Хорошо работает и на 17.10. Переход на zsh поднял и эту проблему для меня.
danwit

2
Они должны исправить это в процессе установки или добавить FAQ / Устранение неполадок для привязки.
BradErzwh

1
Спасибо, у меня сработало 18.10. Надеюсь, что это будет исправлено в будущем.
Павел Давыдов

1
Бриллиант, к сожалению, это все еще проблема на 19.04
jhole89

11

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

snap run meshlab

как только он будет запущен, щелкните правой кнопкой мыши по значку и нажмите «добавить в тире».


7

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

Быстрый обходной путь - это символическая ссылка на нужные файлы рабочего стола, например:

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

5

Пакеты моментальных снимков не отображаются в программе запуска?

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

Как я могу это исправить?

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


5

Запуск 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, похоже, не работает.


2
Это сработало отлично - пользователь Kubuntu.
Джон

Благодарность! Решил проблему для меня на Kubuntu.
Дмитрий Полянин

3

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


3

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

Я добавил следующий фрагмент к своему ~ / .bash_profile, чтобы связать при входе в систему каждый файл в / var / lib / snapd / desktop / apps. Точно так же это можно изменить, чтобы удалить ссылки для приложений, которые больше не существуют, путем переключения путей в строке 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

Вероятно, есть несколько способов сделать это, но это работает.


1
Бесполезное использование ls. Используйте for in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...вместо этого. Более короткий способ достичь этого был бы ln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null.
Дэвид Фёрстер

Я знал, что есть способ выполнить ваш первый пример, однако я не мог вспомнить часть $ {i ## * /}, когда писал эту статью. Я отредактирую свой пост, чтобы включить этот вариант. Тем не менее, ваше последнее предложение не проверяет, существует ли ссылка, таким образом, бесполезно повторно выполняет команду ln. На самом деле, я хотел найти способ избежать grep, а также уменьшить количество процессов, запускаемых во время выполнения. Спасибо за ваш комментарий.
Эрик Никонович

Мое второе предложение делает проверку , если целевой файл уже существует , и если это так, то выводит сообщение об ошибке (редирект /dev/nullи , таким образом , подавляется). Он ничего не делает «бесполезно»: он порождает и Exec это единственный раз , и делает один системный вызов symlink(2)или symlinkat(2)для каждого файла соответствия. Если вы используете цикл для проверки типа файла ( stat(2)), а затем (условно) fork & exec, ln(1)который вызывает symlink*(2)гораздо более «бесполезную» работу.
Дэвид Фёрстер

1

То же самое и с блендером.

snap run blender

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

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

Похоже, какая-то трещина между снимками и гномами для меня. Возможно, что нам нужно, это мгновенный гном (или это щелчок гнома; ^).


1
Привет, я сделал то, что вы сказали, но теперь у меня есть две иконки для каждой программы, в которой я это сделал ... см. I.imgur.com/aamlQJZ.png Это тоже с вами?
Cirelli94

1

Копировать ярлыки приложений из /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)


0

Я столкнулся с той же проблемой на Ubuntu 18.04. Кажется, проблема с Уэйлендом. Решением для меня было переключиться обратно из Уэйленда в Хорг.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.