.sh файл при запуске приложений не выполняется

Это продолжение вопроса о диалоговых окнах .

Я хочу показать диалоговое окно как в начале сеанса, так и после n минут бездействия. Я решил использовать zenity и xautolock. Я успешно использую оба из командной строки (bash).

zenity --text=text --warning
xautolock -time 15 -locker "zenity --text=sometext --warning"

Однако есть некоторые ограничения:

  • Текст состоит из нескольких слов. Если в нем есть пробелы, zenity покажет только первое слово и попытается проанализировать другие слова как параметры. Чтобы исправить это, я заключаю текст в двойные кавычки ("), но это приводит к следующему:
  • xautolock принимает всю команду zenity в качестве опции для своего параметра -locker. Команда состоит из нескольких слов, поэтому я должен заключить ее в кавычки. Но изначально у него уже были кавычки, поэтому он конфликтует с кавычками внутри кавычек.
  • Я хочу, чтобы текст оповещения был настраиваемым, поэтому я использую --text="$(cat .filename)".

Так что теперь у меня есть:

zenity --text="$(cat .filename)" --warning
xautolock -time 15 -locker "zenity --text=\"$(cat .filename)\" --warning"

Если я запускаю каждую строку отдельно в терминальном сеансе (bash), они работают . Курсор останавливается в ожидании завершения процесса, но диалоговые окна отображаются так, как они мне нужны.

Теперь мне нужно, чтобы он запускался автоматически без вмешательства пользователя. Что я сделал:

  • Я поместил каждую строку по отдельности в список Startup Applications . Вместо того, чтобы показывать нужный текст, они будут отображать $ (cat в диалоговом окне.
  • Я создал файл command.sh в моей папке ~, вставил эти две строки, сделал это исполняемый файл.
  • Запуск скрипта из командной строки работает.
  • Выкладывание ~/command.sh в качестве записи в Startup Applications не работает . Ничего не происходит, ничего не отображается , нет сообщения об ошибке, ничего. Согласно этому ответу , он должен работать.
  • Установка /home/username/command.sh работает, но этот пользователь просто a " skel ", который копируется в папку гостевого пользователя , созданную при входе в систему, поэтому папка с именем пользователя будет" guest-RANDOMSTRING ", и я не могу установить ее в качестве записи автозагрузки приложений. По причинам разрешения я не могу установить для пользователя "skel".
2
задан 13 April 2017 в 15:25

2 ответа

Оказывается, что каждая запись в Списке приложений Запуска создается как a .desktop файл на ~/.config/autostart$.

Как упомянуто и ответом @muru и ответом по вопросу он связался, .desktop файлы не разворачивают тильду, как оболочка была бы. Ни один у них, кажется, есть $ {ДОМАШНЯЯ} переменная.

Таким образом, решение состояло в том, чтобы добавить следующую строку к ~/.pam_environment файл:

PATH DEFAULT=${PATH}:${HOME}/scripts

Затем поместите мой .sh сценарий на ~/scripts папка, и добавляет script.sh, никакие префиксы, к Списку приложений Запуска.

2
ответ дан 13 April 2017 в 15:25

Попытайтесь поместить их в сценарий и добавить что сценарий как запись в Ваших Приложениях Запуска. Достаточно трудно использовать переменные среды и ~ в файлах на рабочем столе, уже не говоря о законченной замене команды, как проявлено Файлы на рабочем столе don' t, кажется, используют $PATH правильно и , Как включать переменную среды в средство запуска для значка .

0
ответ дан 13 April 2017 в 15:25
  • 1
    Спасибо I' m теперь горящий в к USB Ubuntu 14.04.2 теперь I' m на окнах 10 – NiKpLaYsHiK Channel 27 December 2015 в 10:13

Другие вопросы по тегам:

Похожие вопросы: