簡體   English   中英

linux中自動調光鍵盤背光

[英]automatic dimming keyboard backlight in linux

我想在我的 Thinkpad X1 上自動化鍵盤背光,就像我在我的舊 XPS13 上使用的那樣。 在任何按鍵按下背光應該打開,並在一定的空閑時間(這里是 30 秒)后背光應該關閉。 我已經編寫了這個基本的 bash 腳本,雖然它通過xprintidle輪詢一次,但它運行良好,並且可能會耗盡一些電池:

#!/bin/bash

function switch {
  echo $1 > /sys/devices/platform/thinkpad_acpi/leds/tpacpi\:\:kbd_backlight/brightness
}

while (true); do

  sleep 1
  last=`xprintidle`
  status=`cat /sys/devices/platform/thinkpad_acpi/leds/tpacpi\:\:kbd_backlight/brightness`
  [ $last -lt 20000 -a $status -lt 2 ] && switch 2 && continue
  [ $last -ge 20000 -a $status -eq 2 ] && switch 1 && continue
  [ $last -ge 30000 -a $status -ge 1 ] && switch 0 && continue

done

我想知道是否可以完成一些非輪詢的方式,例如通過 systemd 或 dbus。

先感謝您

我設法優化了腳本,使其在燈亮時輪詢的頻率大大降低。 我還包括了 dbus 方式來檢測狀態和切換背光。 為了使用 qdbus,腳本必須以用戶身份運行,因此需要對/sys/devices/../kbd_backlight/brightness寫入權限。

#!/bin/bash

idletime=30000  # in milliseconds

prepath=/sys/class/leds/tpacpi\:\:kbd_backlight
sudo chmod a+w $prepath/brightness

function switch {
  echo $1 > $prepath/brightness
  # ALTERNATIVE WITH QDBUS: WORKS BUT SHOWS NOISY OVERLAY ICON
  #qdbus local.org_kde_powerdevil /org/kde/Solid/PowerManagement/Actions/KeyboardBrightnessControl setKeyboardBrightness $1
}

while (true); do

  # BOTH THE FOLLOWING WORK FINE, BUT THE SECOND DONT WORK AS ROOT
  #last=`xprintidle`
  last=`qdbus org.kde.screensaver /ScreenSaver GetSessionIdleTime`

  # BOTH THE FOLLOWING WORK FINE, BUT THE SECOND DONT WORK AS ROOT
  status=`< $prepath/brightness`
  #status=`qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/KeyboardBrightnessControl keyboardBrightness`

  val=`< $prepath/brightness_hw_changed`

  [ $last -lt $idletime -a $status -lt $val ] && switch $val && sleep ${idletime}e-3 && continue  #SWITCH ON
  [ $last -ge $idletime -a $status -ge $val ] && switch 0                             #SWITCH OFF
  sleep 1

done

編輯:現在腳本跟蹤用戶使用 fn 鍵選擇的亮度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM