coffee into linux machine

AppImage не запускается при входе: путь /tmp/.mount_… в автозапуске

Одна программа в формате AppImage умеет сама добавлять себя в автозапуск — галочкой в настройках. Галочка стояла, а после перезагрузки программа не стартовала.

Что внутри

Записи автозапуска лежат в ~/.config/autostart/. В нужном файле было примерно такое:

[Desktop Entry]
Type=Application
Name=MyApp
Exec=/tmp/.mount_MyAppqZ8kLp/myapp

При запуске AppImage монтирует свой образ во временный каталог вида /tmp/.mount_<имя><случайные символы> и запускает программу оттуда. Программа записала в автозапуск путь к себе внутри этого каталога. После выхода каталог размонтируется, а при следующем запуске его имя будет уже другим — запускать нечего.

Правильный путь программа могла бы взять из переменной $APPIMAGE: её выставляет сам AppImage при запуске, и в ней лежит путь к файлу .AppImage.

Как починить

Указать в Exec путь к самому файлу:

Exec=/home/user/Applications/MyApp.AppImage

Посмотреть, что прописано во всех записях сразу:

grep -H '^Exec' ~/.config/autostart/*.desktop

В KDE то же самое можно сделать мышкой: «Параметры системы» → «Автозапуск» → «Добавить» → «Добавить приложение…» и выбрать файл .AppImage.

Подвох

Программа перезаписывает файл автозапуска каждый раз, когда её запускают из нового места, — например, если скачать свежую версию в «Загрузки» и запустить оттуда. Поэтому AppImage лучше держать в одном постоянном каталоге и запускать только из него, а после обновления заменять файл на том же месте.