Скрипт System-sleep не выполнен

У меня есть простой скрипт /lib/systemd/system-sleep/start_my_lock, и он не будет работать, когда система будет приостановлена, я пытаюсь сделать i3lock блокировкой по умолчанию

#!/bin/bash case $1 in pre) scrot /home/jappatel/tmp/screen.png convert /home/jappatel/tmp/screen.png -scale 10% -scale 1000% /home/jappatel/tmp/screen.png convert /home/jappatel/tmp/screen.png /home/jappatel/Pictures/Icons/lock.png -gravity center -composite -matte /home/jappatel/tmp/screen.png i3lock -i /home/jappatel/tmp/screen.png rm /home/jappatel/tmp/screen.png ;; esac
4
задан 26 April 2017 в 18:04

8 ответов

Решение, мне пришлось запустить скрипт для моего локального пользователя вместо root

su jappatel -c <command>

, а также запустить, а также указать отображение с помощью

DISPLAY=:0

моего финального скрипта

#!/bin/bash
case $1 in
  pre)
    su jappatel -c "
    DISPLAY=:0 scrot /home/jappatel/tmp/screen.png;
    convert /home/jappatel/tmp/screen.png -scale 10% -scale 1000% /home/jappatel/tmp/screen.png;
    convert /home/jappatel/tmp/screen.png /home/jappatel/Pictures/Icons/lock.png -gravity center -composite -matte /home/jappatel/tmp/screen.png;
    DISPLAY=:0 i3lock -i /home/jappatel/tmp/screen.png;
    rm /home/jappatel/tmp/screen.png"
    ;;
esac
2
ответ дан 22 May 2018 в 23:19

Решение, мне пришлось запустить скрипт для моего локального пользователя вместо root

su jappatel -c <command>

, а также запустить, а также указать отображение с помощью

DISPLAY=:0

моего финального скрипта

#!/bin/bash case $1 in pre) su jappatel -c " DISPLAY=:0 scrot /home/jappatel/tmp/screen.png; convert /home/jappatel/tmp/screen.png -scale 10% -scale 1000% /home/jappatel/tmp/screen.png; convert /home/jappatel/tmp/screen.png /home/jappatel/Pictures/Icons/lock.png -gravity center -composite -matte /home/jappatel/tmp/screen.png; DISPLAY=:0 i3lock -i /home/jappatel/tmp/screen.png; rm /home/jappatel/tmp/screen.png" ;; esac
2
ответ дан 18 July 2018 в 14:25

Решение, мне пришлось запустить скрипт для моего локального пользователя вместо root

su jappatel -c <command>

, а также запустить, а также указать отображение с помощью

DISPLAY=:0

моего финального скрипта

#!/bin/bash case $1 in pre) su jappatel -c " DISPLAY=:0 scrot /home/jappatel/tmp/screen.png; convert /home/jappatel/tmp/screen.png -scale 10% -scale 1000% /home/jappatel/tmp/screen.png; convert /home/jappatel/tmp/screen.png /home/jappatel/Pictures/Icons/lock.png -gravity center -composite -matte /home/jappatel/tmp/screen.png; DISPLAY=:0 i3lock -i /home/jappatel/tmp/screen.png; rm /home/jappatel/tmp/screen.png" ;; esac
2
ответ дан 24 July 2018 в 20:23
решение

, мне пришлось запустить скрипт на моем локальном пользователя вместо root

su jappatel -c <command>

, а также выполнения, а также указать на дисплее, используя

DISPLAY=:0

мой окончательный сценарий

#!/bin/bash case $1 in pre) su jappatel -c " DISPLAY=:0 scrot /home/jappatel/tmp/screen.png; convert /home/jappatel/tmp/screen.png -scale 10% -scale 1000% /home/jappatel/tmp/screen.png; convert /home/jappatel/tmp/screen.png /home/jappatel/Pictures/Icons/lock.png -gravity center -composite -matte /home/jappatel/tmp/screen.png; DISPLAY=:0 i3lock -i /home/jappatel/tmp/screen.png; rm /home/jappatel/tmp/screen.png" ;; esac
2
ответ дан 31 July 2018 в 13:00

Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.

Решение

Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью

export DISPLAY=:0

или

DISPLAY=:0 <COMMAND>

Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".

Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?

Тестирование [ ! d8]

Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.

env -i /lib/systemd/system-sleep/start_my_lock

, который опустошает список переменных среды.

0
ответ дан 22 May 2018 в 23:19
  • 1
    Каков результат работы echo "$DISPLAY" на регулярной графической сессии? Вы сделали исполняемый файл сценария? Каков результат работы ls -l /lib/systemd/system-sleep/start_my_lock? – David Foerster 25 April 2017 в 21:30
  • 2
    Эй @ Давид, спасибо тебе за то, что помогли мне, я смог заставить его работать. Я добавил свой окончательный сценарий к моему вопросу, и извините, что не могу поддержать ваше решение – Jay Patel 26 April 2017 в 06:16

Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.

Решение

Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью

export DISPLAY=:0

или

DISPLAY=:0 <COMMAND>

Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".

Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?

Тестирование [ ! d8]

Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.

env -i /lib/systemd/system-sleep/start_my_lock

, который опустошает список переменных среды.

0
ответ дан 18 July 2018 в 14:25

Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.

Решение

Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью

export DISPLAY=:0

или

DISPLAY=:0 <COMMAND>

Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".

Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?

Тестирование [ ! d8]

Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.

env -i /lib/systemd/system-sleep/start_my_lock

, который опустошает список переменных среды.

0
ответ дан 24 July 2018 в 20:23
  • 1
    Каков результат работы echo "$DISPLAY" на регулярной графической сессии? Вы сделали исполняемый файл сценария? Каков результат работы ls -l /lib/systemd/system-sleep/start_my_lock? – David Foerster 25 April 2017 в 21:30
  • 2
    Эй @ Давид, спасибо тебе за то, что помогли мне, я смог заставить его работать. Я добавил свой окончательный сценарий к моему вопросу, и извините, что не могу поддержать ваше решение – Jay Patel 26 April 2017 в 06:16

Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.

Решение

Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью

export DISPLAY=:0

или

DISPLAY=:0 <COMMAND>

Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".

Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?

Тестирование [ ! d8]

Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.

env -i /lib/systemd/system-sleep/start_my_lock

, который опустошает список переменных среды.

0
ответ дан 31 July 2018 в 13:00
  • 1
    Каков результат работы echo "$DISPLAY" на регулярной графической сессии? Вы сделали исполняемый файл сценария? Каков результат работы ls -l /lib/systemd/system-sleep/start_my_lock? – David Foerster 25 April 2017 в 21:30
  • 2
    Эй @ Давид, спасибо тебе за то, что помогли мне, я смог заставить его работать. Я добавил свой окончательный сценарий к моему вопросу, и извините, что не могу поддержать ваше решение – Jay Patel 26 April 2017 в 06:16

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

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