Kde

如何通過命令行控制 KDE 中的“螢幕節能”設置?

  • February 28, 2021

問題

我正在尋找的是從命令行更改 KDE 中“螢幕節能”設置狀態所需的內容。

目前,我以兩種方式之一以圖形方式執行此操作:

  • 系統設置->電源管理->節能->螢幕節能
  • 電池和亮度小元件 -> 啟用電源管理

我目前執行一個自定義守護程序,用於在桌面和電視環境之間切換我的工作站(這意味著更改顯示器解析度和主顯示器),並且希望能夠連接到切換“螢幕節能”設置,因為我經常發現我在切換上下文時忘記從小元件切換中更改設置。

我試過的

~/.config我使用以下 grep搜尋了我的目錄:

grep -rnis -e "power" -e "energy" -e "saving" ~/.config/{k,plasma}*

我一直在尋找任何與 KDE 或 Plasma 相關的詞中的“power”、“energy”或“saving”一詞的實例。

我得到以下點擊,但是當我切換“螢幕節能”設置時沒有任何變化。

/home/joe/.config/kglobalshortcutsrc:290:[org_kde_powerdevil]
/home/joe/.config/kglobalshortcutsrc:296:PowerOff=Power Off,Power Off,Power Off
/home/joe/.config/kglobalshortcutsrc:299:_k_friendly_name=Power Management
/home/joe/.config/ksmserverrc:30:program4=/usr/lib/x86_64-linux-gnu/libexec/org_kde_powerdevil
/home/joe/.config/ksmserverrc:38:restartCommand4=/usr/lib/x86_64-linux-gnu/libexec/org_kde_powerdevil,-session,<uuid>
/home/joe/.config/plasmashellrc:40:pluginWhiteList=services,desktopsessions,PowerDevil,shell,bookmarks,baloosearch,locations

這實際上是由 KDE 管理的嗎?或者 KDE 是否只是潛在地將這個呼叫解除安裝到 PowerDevil?

以供參考

  • KDE 等離子版本:5.12.9
  • KDE 框架版本 5.47.0

我發現的另一個解決方案是編輯 $HOME/.config/powermanagementprofilesrc。消除

[AC][DPMSControl]
idleTime=600

我是這樣用 sed 做到的

sed -i "/\[AC\]\[DPMSControl\]/,+2d" $HOME/.config/powermanagementprofilesrc

然後呼叫 qdbus org.freedesktop.PowerManagement /org/kde/Solid/PowerManagement org.kde.Solid.PowerManagement.reparseConfiguration 重新載入配置

如果您需要重新啟動它,請再次添加這些行並使用相同的參數執行 qdbus

對於遇到此問題的任何人,我都想通了,但它離我預期的位置不遠。這可以通過 qdbus 呼叫手動控制。

暫停“螢幕節能”:

dbus-send --print-reply \
--dest=org.freedesktop.PowerManagement.Inhibit \
/org/freedesktop/PowerManagement/Inhibit \
org.freedesktop.PowerManagement.Inhibit.Inhibit \
string:"Application Name" \
string:"Reason"

這將給出一個答复

method return time=1592250463.638616 sender=:1.54 -> destination=:1.574 serial=4527 reply_serial=2
  uint32 <id>

uint32 <id>是我們重新啟用此設置所需的,可以這樣呼叫:

dbus-send \
--dest=org.freedesktop.PowerManagement.Inhibit \
/org/freedesktop/PowerManagement/Inhibit \
org.freedesktop.PowerManagement.Inhibit.UnInhibit \
uint32:<id>

引用自:https://unix.stackexchange.com/questions/593082