LINUX.ORG.RU

Не работает .desktop файл, запускающий скрипт

 , ,


0

1

Подскажите, почему .desktop файл может не запускать скрипт.

Сам файл:

[Desktop Entry]
Name=Silly Tavern
# Exec=bash -c 'cd SillyTavern-Launcher/SillyTavern; ./start.sh'
Exec=/home/user/SillyTavern-Launcher/SillyTavern/start.sh
Terminal=true
Type=Application
Icon=/home/user/SillyTavern-Launcher/st.ico
Categories=Utility;
Keywords=script;custom;

В начале скрипта есть cd "$(dirname "$0")"

Но всё равно после нажатия по иконке в wofi ничего не происходит. Хотя отдельно скрипт запускается без проблем



Последнее исправление: klixx_foxe (всего исправлений: 3)

Не забыл дать права на исполнение скрипту?

Зачем терминал=тру? (я не знаю что это даёт)

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

papin-aziat ★★★★★
()

Если у тебя не работает desktop-файл то первое что проверяешь - это запускаешь терминал вручную и вводишь в нём точно то что стоит после Exec= и смотришь что получается. Скорее всего после этого проблема разрешится.

Однако возможные причины ещё:

1) ты указал неполный путь к башу (не /bin/bash - возможно так нельзя)

2) ты указал неполный путь в cd (который закомметирован уже но наверно ты его тоже пробовал)

3) у start.sh не поставлено chmod +x

4) в start.sh нет шебанга

5) start.sh почему-то падает сразу после запуска (вставь в его начало после шебанга sleep 100 например).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Я вводил, то что написано в Exec в терминале - запускается. Обе команды (с комментом и без) запускаются. chmod +x ставил на все скрипты вообще какие могут запустится - не помогло.

В скрипте:

#!/usr/bin/bash
# Make sure pwd is the directory of the script
cd "$(dirname "$0")"

Совпадает с выводом which bash

Пробовал ставить sleep 100, но терминал как-будто не запускается даже. Хотя в .desktop точно прописано Terminal=true

klixx_foxe
() автор топика
Ответ на: комментарий от papin-aziat

Зачем терминал=тру? (я не знаю что это даёт)

Потому что скрипт запускает терминал (вывод логов веб сервера) и затем открывает страницу на локалхосте в браузере

Не забыл дать права на исполнение скрипту?

Выдал. Из командной строки запускается

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

Это как запустить терминал из скрипта?

klixx_foxe
() автор топика

Может ли быть такое, что проблема в bash / wofi? Может у них нет каких-то прав на запуск терминала / исполнение скрипта? Я не знаю уже…

klixx_foxe
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

error: value "foot -e bash -c 'cd SillyTavern-Launcher/SillyTavern; ./start.sh'" for key "Exec" in group "Desktop Entry" contains a reserved character ''' outside of a quote

Я заменил ’ на ", и ошибка пропала, но приложение не запустилось.

Но сейчас я заметил, что при попытке открыть двойным кликом из файлового менеджера появляется ошибка: "Unable to find terminal required for this application". Хотя foot установлен

klixx_foxe
() автор топика
  • laucher.desktop
[Desktop Entry]
Name=Silly Tavern
Exec=sh -c "/home/$USER/SillyTavern-Launcher/SillyTavern/start.sh"
Terminal=true
Type=Application
Icon=/home/user/SillyTavern-Launcher/st.ico
Categories=Utility;
Keywords=script;custom;
chmod +x laucher.desktop

  • start.sh
#!/usr/bin/env sh
cd "$(dirname "$0")" && ./файл_игры_для_запуска
chmod +x start.sh

Двойнок клик по «иконке» laucher, и всё должно работать.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Ладно, я понял в чём была проблема. Ошибка была в строчке Terminal=true. Я думал она нужна для запуска терминала, но при значении false он всё равно запускается и всё работает, так как терминал запускает сам скрипт и это во-первых было излишнее действие, а во-вторых (нейросеть сказала), что у меня не был настроен терминал по умолчанию в xdg-mime

Спасибо за помощь всем кто писал советы

klixx_foxe
() автор топика
[Desktop Entry]
Name=Silly Tavern
Exec=bash -c "cd SillyTavern-Launcher/SillyTavern; ./start.sh"
# Exec=bash -c 'sh /home/user/SillyTavern-Launcher/SillyTavern/start.sh'
Terminal=false
Type=Application
Icon=/home/user/SillyTavern-Launcher/st.ico
Categories=Utility;
Keywords=script;custom;

Или Exec=foot -e bash -c "cd SillyTavern-Launcher/SillyTavern; ./start.sh" чтобы был вывод в терминал (без него тоже работает)

В самом скрипте:

#!/usr/bin/env bash
# cd "$(dirname "$0")" не обязательно (?)
klixx_foxe
() автор топика
Ответ на: комментарий от klixx_foxe

Раз оно в скрипте есть, значит обязательно. Если конечно скрипт, не фуфло голимое. На запуск из десктоп-файла это не влияет никак.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)