xset dpms force off
не работает, вывод:
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 147 (DPMS)
Minor opcode of failed request: 6 (DPMSForceLevel)
Serial number of failed request: 12
Current serial number in output stream: 14
У меня есть два монитора, на которых есть кнопки питания, с настройками управления питанием по умолчанию. Однако было бы удобно нажать одну комбинацию клавиш с помощью команды.
Я почти уверен, что использую Gnome и читаю, что xset не работает с Gnome.
В качестве альтернативного решения я просто изменю время ожидания экрана на 1 минуту.
Связанный:
Этот скрипт работает на моем Ubuntu 17.10
#!/bin/bash
busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 1
read -n 1 -s -r -p "Press any key continue"
busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 0
Ubuntu 17.10 запускает сеанс Wayland по умолчанию, щелкните значок шестеренки при входе в систему и выберите сеанс Xorg, если вам нужны такие команды, как xset
. Общее правило состоит в том, что команды, начинающиеся с x
, выполняются только в Xorg. Насколько я знаю, Wayland пока не дает возможности выключить экран. Это может очень хорошо измениться в будущем.
Обновление 23 марта 2018 года: в качестве альтернативы вы можете установить кнопку питания для приостановки, а не выключения. 24 марта: однако, если вы приостановите его, выполнение всех процессов будет остановлено, что может быть нежелательно.
Я ввел следующие команды, сделанные @Gonki, в файл turnthescreenoff.sh, который я сохранил в своем домашнем каталоге, а затем ввел bash /home/james/turnthescreenoff.sh
в качестве сочетания клавиш.
#!/bin/bash
busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 1
read -n 1 -s -r -p "Press any key continue"
busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 0
Я черпал вдохновение из ответов Гонки и Джеймса Рэя и написал версию (на питоне), которая работает без оболочки:
#! /usr/bin/python3
import subprocess
template = ('busctl --user {what}-property org.gnome.Mutter.DisplayConfig '
'/org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig '
'PowerSaveMode')
current = subprocess.check_output(template.format(what='get').split()).strip()
try:
if current == b'i 0':
subprocess.call(template.format(what='set').split() + ['i', '1'])
else:
subprocess.call(template.format(what='set').split() + ['i', '0'])
except:
# If anything goes wrong, turn on the light:
subprocess.call(template.format(what='set').split() + ['i', '0'])
Она должна решить проблему, о которой сообщил Йоханнес Лемонде (экран сразу же включится снова), и, следовательно, будет работать с любой горячей клавишей: просто нажмите ту же горячую клавишу еще раз, чтобы включить экран.
Вот скрипт в bash, похожий на ответ Пьетро Баттистона (я бы предпочел добавить комментарий, но не могу):
#!/bin/bash
p="org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode"
[ $(busctl --user get-property $p | cut -d ' ' -f 2) -eq 1 ] && s=0 || s=1
busctl --user set-property $p i $s
Каждый вызов скрипта включает или выключает экран .