У меня процесс xautolock все еще работал в фоновом режиме, но он не прослушивал никакие xautolock -locknow
команды. Как упоминал @jrm, приложение должно подавлять «скринсейвер» . Для нас обоих это произошло из-за того, что mpv (видеоплеер )отключил заставку.
Для MPV исправление заключается в добавлении следующего к ~/.config/mpv/config
или~/.mpv/config
:
stop-screensaver=no
Если вы не используете mpv, это может быть другое приложение, отключающее заставку. Попробуйте некоторые часто используемые, чтобы увидеть, какой из них это.
Если вы хотите предотвратить автоматическую блокировку экрана во время воспроизведения видео , одним из распространенных способов является использование функции «углы» xautolock:
xautolock -corners 000- -cornersize 30
С помощью приведенной выше команды, если вы поместите курсор мыши в нижний правый угол экрана (в радиусе 30 пикселей ), автоматическая -блокировка будет временно отключена.
Еще одна вещь, которую стоит попробовать, это опция -resetsaver
:
xautolock -resetsaver
Или опция -detectsleep
:
xautolock -detectsleep
Возьмите скрипт и заставьте его работать вне make.
shellcheck
Вы обнаружите проблему с кавычками.
make
вызываетsh
(по умолчанию, если вы не изменитеSHELL
make
переменную )для интерпретации кода (один sh
вызов на строку, если вы не используете \
в конце каждой строки ).
Здесь вы хотите, чтобы $$MYTEXT
, поэтому $MYTEXT
были встроены в код sh
, но вы также хотите, чтобы $MYTEXT
не расширялся этим sh
, а передавался в коде bash
., так что расширение должно быть предотвращено либо с помощью \
внутри двойных -кавычек, либо с использованием одинарных кавычек -вместо двойных -кавычек. В любом случае, поскольку вы хотите, чтобы bash
расширял $MYTEXT
, вы не хотите, чтобы $MYTEXT
в коде bash
заключалось в одинарные -кавычки.
Так:
test:
(cd subdirectory && \
docker-compose exec webserver bash -c '\
MYTEXT=hello && \
echo "this is $$MYTEXT world" > /tmp/file && \
cat /tmp/file \
'\
)
Если вы запустите strace -s999 -fe execve make
, вы увидите здесь (с заменой docker-compose exec webserver bash
на bash
):
[pid 22370] execve("/bin/sh", ["/bin/sh", "-c", "(cd subdirectory && \\\n exec bash -c '\\\n MYTEXT=hello && \\\n echo \"this is $MYTEXT world\" > /tmp/file && \\\n cat /tmp/file \\\n '\\\n)"], 0x555ce503e620 /* 52 vars */) = 0
strace: Process 22371 attached
[pid 22371] execve("/bin/bash", ["bash", "-c", "\\\n MYTEXT=hello && \\\n echo \"this is $MYTEXT world\" > /tmp/file && \\\n cat /tmp/file \\\n "], 0x563430f3e8f8 /* 52 vars */) = 0
[pid 22371] execve("/bin/cat", ["cat", "/tmp/file"], 0x55e9509edc10 /* 52 vars */) = 0
this is hello world
В любом случае подоболочка (...)
здесь не нужна, так как cd
изменит только рабочий каталог того одного процесса, выполняющего этот один sh
вызов, не затрагивая рабочий каталог любой другой оболочки, запущенной позже. с помощью make
для запуска других команд.