Ubuntu 20.04 решила, что нам нужно 4 щелчка для выключения:
Давайте отключим по крайней мере 2 щелчка здесь ... как?
ОБНОВЛЕНИЕ: Это " «Lounge PC» - управляется мышью (нет кнопки питания в пределах досягаемости, когда ноутбук закрыт). Мы смотрим фильм, хотим щелкнуть по кнопке «Завершение работы» и не вводить команды.
Уменьшить двумя щелчками
Вариант 1 ) Установить кнопку отключения питания на верхней панели расширение от Darknico. Он добавляет отдельную кнопку питания в правой части верхней панели.
Вариант 2 ) Создайте «обычный» модуль запуска для «Выключения» (с помощью pomsky). Либо:
Вы можете уменьшить еще один щелчок, заменив команду в панели запуска «poweroff». Затем один щелчок на панели запуска немедленно выключит машину без диалогового окна подтверждения.
Уменьшить одним щелчком мыши
Вариант 3 ) Использовать расширение Вызов подменю кнопки выключения / выхода из системы с помощью Pratap или Меню простого отключения с помощью K3rcus. Эти расширения переносят элементы в подменю «Выключение / Выход из системы» непосредственно в системное меню, позволяя получить к ним доступ одним щелчком мыши.
Вы можете легко сделать это за 2 клика:
. Теперь нажмите физическую кнопку питания на вашем устройстве и затем выберите отключение питания из приглашения - это 2 щелчка (1, если вы не считаете нажатие кнопки питания). как щелчок).
Уменьшение до 1 "щелчка" (технически нажатие кнопки):
По умолчанию Ubuntu выключается при нажатии кнопки питания.
Затем подождите 60 секунд, пока устройство выключится, вместо повторного щелчка.
Ответ равен 0.
Установите KShutdown, укажите, как долго вы будете в сети. Пока вы придерживаетесь плана, не теряете времени и сохраняете все, что делаете, за 2 минуты до этого. Машина сама выключится, даже если вы ее не трогаете.
Если вы хотите написать собственную команду, запустите терминал и наберите:
sudo shutdown -h +30
+30 (минут), например. Измените его так, как долго вы хотите оставаться в сети. И если вы хотите, чтобы машина отключалась в определенное время, попробуйте:
sudo shutdown -h 20:30
(время гипотетическое, измените его на то, что вы хотите).
Примечание: Без переключателя -h
или -r
это недопустимая команда.
0 щелчков, несколько щелчков.
Альтернативное решение, которое не не требуется мышь (только клавиатура):
Это откроет окно терминала.
в терминале , отключение сейчас
, добьются цели для меня
У меня есть привычка создавать собственные сочетания клавиш для выключения ПК, потому что это много проще и менее болезненно.
Я использовал слишком много кнопок, чтобы избежать случайного выключения.
Вы можете уменьшить его и сделать его похожим на Super + P или что-то в этом роде если вы достаточно осторожны.
с питанием от телевизора
(телевизор управляет питанием компьютера) является прямым сценарий forward bash, созданный на основе технических статей, широко доступных в Интернете.
Обратите внимание, что этот работает только с телевизорами Sony Bravia . Конечно, вы, вероятно, могли бы исправить код для разных телевизоров в короткие сроки, поскольку для написания с нуля потребовалось всего несколько часов. У меня также есть обычный телевизор Toshiba 4K под управлением Amazon Fire OS, и, возможно, я захочу посмотреть для него версию сценария. Кроме того, если у вас телевизор другой марки, вам придется провести собственное исследование, кодирование и, самое главное, тестирование.
Когда телевизор выключается, это tvpowered
автоматически приостанавливает работу портативного компьютера или выключает его. Измените значение переменной $ SCTL
(расположенной вверху скрипта) между приостановкой или отключением питания.
tvpowered
можно запустить как sudo
во время загрузки, но это не было проверено. Он должен запускаться как обычный пользователь и вызываться в Startup Applications.
Программа проста:
Между этими шагами на рабочем столе появляются всплывающие всплывающие сообщения, которые также записываются в journalctl
:
$ journalctl -xe | grep tvpower
Jun 11 18:11:20 tvpowered[27398]: TV is powered on. 'tvpowered' is now waiting for TV to power off.
Jun 11 18:11:47 tvpowered[28229]: TV Powered off. 'systemctl suspend' being called.
Jun 11 18:11:47 tvpowered[28238]: System powered back up. Checking if TV powered on. './tvpowered'.
Jun 11 18:12:26 tvpowered[31672]: TV is powered on. 'tvpowered' is now waiting for TV to power off.
tvpowered
скрипт Скопируйте и вставьте скрипт в файл на вашем компьютере и пометьте его как исполняемый с помощью:
chmod a+x /path/to/tvpowered
Где / path / to /
- это имя каталога, в котором вы создали файл.
Вы также можете использовать свой файловый менеджер (например, Nautilus), чтобы сделать файл исполняемым .
В приведенном ниже скрипте вам нужно будет установить несколько констант:
SCTL=suspend # systemctl paramater: suspend or poweroff
IP=192.168.0.16 # IP address for Sony TV
PWRD=123 # Password for Sony TV IP Connect
Оставьте комментарий, если у вас есть какие-либо вопросы!
# NAME: tvpowered
# DESC: When TV is powered off automatically suspend the laptop.
# DATE: June 9, 2020. Modified June 11, 2020
#
# NOTE: Written for Ask Ubuntu question:
# https://askubuntu.com/questions/1247484/
# 4-clicks-to-shut-down-ubuntu-can-we-reduce-this
# UPDT: Jun 10 2020: Change name from 'slave2tv' to 'tvpowered'. Abandon
# i2c, drm, i915, nvidia, xrandr, etc to see if monitor turned off. Setup
# WiFi on TV instead and use Sony REST API to communicate TV status.
# Jun 11 2020: Add pop-up bubble status messages. Add dependencies.
# Add TenMinuteSpam. Add WaitUserSignOn. Add $SCTL constant. Convert
# in-line code to mainline format.
# Credits:
# https://gist.github.com/kalleth/e10e8f3b8b7cb1bac21463b0073a65fb#cec-sonycec
# https://pro-bravia.sony.net/develop/integrate/rest-api/spec/service/audio/v1_0/setAudioVolume/index.html
# https://developer.sony.com/develop/audio-control-api/get-started/http-example#tutorial-step-2
# https://en.wikipedia.org/wiki/CURL
# https://stackoverflow.com/questions/7172784/how-do-i-post-json-data-with-curl
# https://stackoverflow.com/questions/2829613/how-do-you-tell-if-a-string-contains-another-string-in-posix-sh
SCTL=suspend # systemctl paramater: suspend or poweroff
IP=192.168.0.16 # IP address for Sony TV
PWRD=123 # Password for Sony TV IP Connect (Pre-Shared key)
# Must have curl package.
command -v curl >/dev/null 2>&1 || { echo >&2 \
"'curl' package required but it is not installed. Aborting."; \
exit 2; }
# Must have notify-send from libnotify-bin package
command -v notify-send >/dev/null 2>&1 || { echo >&2 \
"libnotify-bin package required but it is not installed. Aborting."; \
exit 3; }
cURLit () {
# $1 = JSON String in pretty format converted to file for cURL --data.
# $2 = Sony subsystem to talk to, eg accessControl, audio, system, etc.
# 3 = variable name to receive reply from TV
local TEMP Result ReturnState
# Declare mathres as reference to argument 3 provided (Bash 4.3 or greater)
declare -n Result=$3
# Create temporary file in RAM for curl command
TEMP=$(mktemp --tmpdir json.XXXXXXXX)
echo "$1" > "$TEMP"
# -s = silent
Result=$(curl -s -H "Content-Type: application/json; charset=UTF-8" \
-H "X-Auth-PSK: $PWRD" \
--data @"$TEMP" \
http://$IP/sony/"$2")
#echo "Result: $Result" # Remove leading # for debugging
ReturnState="$?"
# TO-DO: check $? and if non-zero pop up dialog with $TEMP contents
rm "$TEMP"
} # cURLit
GetPowerStatus () {
local Reply ReturnState
# Copy and paste JSON strings from Sony website:
# https://pro-bravia.sony.net/develop/integrate/rest-api/spec/service/system/v1_0/getPowerStatus/index.html
JSONstr='{
"method": "getPowerStatus",
"id": 50,
"params": [],
"version": "1.0"
}'
cURLit "$JSONstr" "system" Reply # No $ for Reply variable! pass pointer
ReturnState="$?"
#echo "Reply: $Reply" # Remove leading # for debugging
# Reply: {"result":[{"status":"active"}],"id":50}
# or: {"result":[{"status":"standby"}],"id":50}
# Does 'active' substring exist in TV's reply?
[[ "${Reply#*active}" != "$Reply" ]] && return 0
# TV is turned off
# Might want timer tests to make sure we aren't repeatedly turning off
return 1
} # GetPowerStatus
log () {
logger --id=$$ -t "tvpowered" "$1"
} # log
WaitForSignOn () {
# tvpowered might be loaded during boot. The user name is required
# for sending popup bubble messages and dialogs to screen. We must
# wait until user signs on to get .Xauthority file settings.
# code lifted from eyesome.sh
SpamOn=10 # Causes 10 iterations of 2 second sleep
SpamContext="Login"
TotalWait=0
# Wait for user to sign on then get Xserver access for xrandr calls
UserName=""
while [[ $UserName == "" ]]; do
# Find UserName currently logged in.
UserName="$(who -u | grep -F '(:0)' | head -n 1 | awk '{print $1}')"
[[ $UserName != "" ]] && break
sleep "$SpamLength"
TotalWait=$(( TotalWait + SpamLength ))
done
if [[ $TotalWait != "0" ]] ; then
log "Waited $TotalWait seconds for $UserName to login."
xhost local:root
export XAUTHORITY="/home/$UserName/.Xauthority"
fi
} # WaitForSignOn
TenMinuteSpam () {
# If TV not powered up Spam user for 10 minutes that 'tvpowered' is running
# and will shut down / suspend system
WaitForSignOn # Might be called by root during boot before user signed on.
Cnt=0
while : ; do
GetPowerStatus
if [[ "$?" == "0" ]] ; then
log "TV is powered on. 'tvpowered' is now waiting for TV to power off."
break
else
# Spam user every 60 seconds
(( $(( Cnt % 20 )) == 0 )) && \
notify-send --urgency=critical "tvpowered" \
--icon=/usr/share/icons/gnome/48x48/devices/display.png \
"TV was powered off.\n Checking TV power state again..."
fi
sleep 3
(( Cnt++ ))
done
notify-send --urgency=critical "tvpowered" \
--icon=/usr/share/icons/gnome/48x48/devices/display.png \
"Fully activated.\n System will $SCTL when TV powered off."
return 0
} # TenMinuteSpam
###################################
# MAINLINE #
###################################
Main () {
echo "$0: Initialization. Ensuring TV is powered on before starting."
TenMinuteSpam
echo "$0: Fully activated. Waiting for TV to powered off and then $SCTL."
while : ; do
GetPowerStatus
if [[ "$?" != "0" ]] ; then
log "TV Powered off. 'systemctl $SCTL' being called."
systemctl "$SCTL"
log "System powered back up. Checking if TV powered on. '$0'."
sleep 10 # Give system time to wake from suspend
TenMinuteSpam
fi
sleep 3
done
exit 0
} # Main
Main "$@"
Меня вдохновил вопрос OP, и я никогда не осознавал, насколько громоздким и трудоемким был мой процесс. В конце ночи я также смотрю телевизор и расслабляюсь после дня перед сном. Когда пришло время приостановить работу ноутбука, я хочу спать, но мне все еще нужно:
tvpowered
устранило трудоемкие шаги с 1 по 4. Быстрое нажатие кнопок питания на двух пультах дистанционного управления телевизора также предотвращает классическую проблему в Linux:
xreset
для перемещения мониторов, вы потеряете много времени, делая это в системных настройках.Наслаждайтесь
У меня есть телевизор у телевизора, к которому я подключаюсь через беспроводную клавиатуру / сенсорную панель. Я также держу крышку закрытой.
Что я сделал, так это добавил простое расширение gnome под названием Gnome-Shutdown-Button. Вы можете найти тонну этих расширений по адресу: https://extensions.gnome.org/
. Откроется диалоговое окно с сообщением «Выключение через 30 секунд» (может быть, меньше) и предложит второй вариант: закрой сейчас.