У меня есть простой скрипт /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
Решение, мне пришлось запустить скрипт для моего локального пользователя вместо 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
Решение, мне пришлось запустить скрипт для моего локального пользователя вместо 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
Решение, мне пришлось запустить скрипт для моего локального пользователя вместо 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
, мне пришлось запустить скрипт на моем локальном пользователя вместо 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
Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.
Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью
export DISPLAY=:0
или
DISPLAY=:0 <COMMAND>
Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".
Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?
Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.
env -i /lib/systemd/system-sleep/start_my_lock
, который опустошает список переменных среды.
Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.
Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью
export DISPLAY=:0
или
DISPLAY=:0 <COMMAND>
Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".
Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?
Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.
env -i /lib/systemd/system-sleep/start_my_lock
, который опустошает список переменных среды.
Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.
Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью
export DISPLAY=:0
или
DISPLAY=:0 <COMMAND>
Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".
Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?
Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.
env -i /lib/systemd/system-sleep/start_my_lock
, который опустошает список переменных среды.
Инструменты, которые полагаются на сервер отображения или пользовательский сеанс, такие как scrot или i3lock, не работают из фоновых системных сценариев, потому что они не могут найти сервер отображения и / или пользовательский сеанс.
Вы должны установить переменную среды DISPLAY, прежде чем вы вызовете эти инструменты с помощью
export DISPLAY=:0
или
DISPLAY=:0 <COMMAND>
Если для любая причина DISPLAY должна иметь другое значение, приспосабливая ее как подходящую. Вы можете проверить текущее значение внутри графического сеанса с помощью echo "$DISPLAY".
Подробнее о очень похожей проблеме см. В разделе Как запустить приложение GUI из cron?
Вы можете протестировать свои сценарии для запуска без связанных с сеансом переменных среды, если вы префикс их вызова с помощью env -i, e. g.
env -i /lib/systemd/system-sleep/start_my_lock
, который опустошает список переменных среды.