запустите скрипт запуска, который требует xserver сессии

У меня есть python3-сценарий, который использует Gtk- модуль (импортированный из gi.repository, для функциональности недавнего менеджера), требуя ссылки на текущую xserver сессию (lightdm сервис в Ubuntu).

При выполнении его вручную через консоль (на xserver сессии) работы, но я хочу, чтобы он автоматически работал.

init.d сценарий не будет работать (установка переменной ДИСПЛЕЯ к 0,0). Используя xvfb-run сделанный init.d сценарием запустить мой скрипт, но в виртуальной xserver среде как ожидалось (не мой). Действительно ли там не эквивалентно, который подключает init.d сценарий к текущей xserver-сессии?

До сих пор я попробовал .xinitrc файл (в ~/, да это - исполняемый файл), а также создание .xprofile, .xsession, .xsessionrc который вся ссылка на первую через ln -s. Я попытался добавить gnome-terminal & поскольку тестирование, но терминал не обнаружилось также, было этим после любого перезапуска lightdm или даже весь ПК и входящий в систему снова.

Я также попробовал Запущенный скрипт конфигурации в X резюме сессии, но это дает ошибку Can't open /usr/share/acpi-support/power-funcs.

Используя upstart, как предложено Запущенным скрипт запуска с lightdm не обеспечил бы переменную дисплея xserver (или дескриптор?) также, просто выполняет его после lightdm запущенный, корректный?

Возможно, поместите его где-нибудь в xorg.conf? (Как я могу сделать xrandr настройку постоянной?) Бьет меня..

(Мой сценарий делает quicklists недавних файлов и добавляет их к щелчку-правой-кнопкой-menues средства запуска единицы, подобному окнам: https://github.com/thirschbuechler/ubuntu-recentquicklists)

0
задан 13 April 2017 в 15:23

1 ответ

Как во многих случаях, синхронизация является основным вопросом здесь.

  1. Ваш сценарий должен работать на уровне пользователя после того, как входят в систему, так как он редактирует объекты средства запуска, который находится на уровне пользователя.
  2. Даже затем, смотря на то, что сценарий должен сделать (чтение Вашего объяснения), сценарий должен ожидать немного, чтобы рабочий стол полностью загрузился; Средство запуска Единицы не является первой вещью быть "готово" после того, как войдут в систему. Если сценарий будет работать слишком рано, то он или повредит или пропустит цель.

Короче говоря

Необходимо запустить скрипт appr. Спустя 10-15 секунд после этого входят в систему, который может быть сделан путем добавления также:

/bin/bash -c "sleep 15 && python /path/to/script.py"

(если сценарий не является исполняемым файлом), или

/bin/bash -c "sleep 15 && /path/to/script.py"

(если сценарий является исполняемым файлом) к Приложениям Запуска пользователя: Тире> Приложения Запуска> Добавляет.

Выполните его для всех пользователей

При необходимости в сценарии для выполнения за всеми пользователями (после того, как войдите в систему), можно добавить его для Запущения Приложений для всех пользователей сразу.

Чтобы сделать это, скопируйте код ниже в пустой файл, отредактируйте строки, начиная с Name= и установленный корректный путь к сценарию в строке:

Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"

затем сохраните файл в /etc/xdg/autostart как launch_script.desktop (или независимо от того, что Вам нравится, пока это заканчивается .desktop)

[Desktop Entry]
Name=Name
Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"
Type=Application
2
ответ дан 29 September 2019 в 12:20

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

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