Вот один способ:
sed 's/^\|$/"/g' file | paste -d, -s
"string1","string2","string3","....","string12312"
Теперь я нашел ответ, который мне подходит (однопользовательская система ).
Хотя systemd-logind
обрабатывает события ACPI , существует только стандартный набор опций poweroff
, reboot
, halt
,... (, см. man logind.conf
), которые не t включить только экран.
Предшественникacpid
также предоставляет обработчики для обработки событий ACPI, таких как закрытие крышки. Самый простой способ — напрямую загромождать использовать демонстрационный файл /etc/acpi/handler.sh
и изменить раздел
button/lid)
case "$3" in
close)
logger 'LID closed'
;;
open)
logger 'LID opened'
;;
*)
logger "ACPI action undefined: $3"
;;
-
button/lid)
case "$3" in
close)
logger 'LID closed'
XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force off
;;
open)
logger 'LID opened'
XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force on
;;
*)
logger "ACPI action undefined: $3"
;;
(Для широкого использования acpid
определенно рекомендуется создать отдельное правило/файл для этой задачи.)
xset dpms force off
неявно выключает экран$DISPLAY
(иначеxset -d $DISPLAY dpms force off
). Для этого ему нужен файл авторизации )cookie (человека, который запустил X
, расположенный по адресу $XAUTHORITY
.
В случае, если X
был запущен root
во время входа в систему (, что является стандартным случаем ), может быть достаточно простого xset dpms force off
.
Я запускаю X
в конфигурации ~/.shellrc
моей оболочки входа в систему. Следовательно, я должен вручную дать ему отображение и куки меня.
Можно подкрутить еще больше, чтобы не использовать команду при включении переменного тока(xset
выключает все подключенные экраны и udev
не обнаруживает переключатель крышки на моем система ).
close)
logger 'LID closed'
if [[ $(cat /sys/class/power_supply/AC/online) == 0 ]];then
XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force off
fi
;;