Monitoring
檢測 HDMI 監視器是否已關閉
我有一個顯示器通過 HDMI 連接到我的機器。
現在,如果有人要通過上面的軟按鈕或移除它的電源線來關閉監視器,我希望得到通知並執行 Shell 腳本。
我嘗試了多種方法來確定顯示器何時打開或關閉(它始終處於連接狀態)。唯一接近的技術是:
# ddccontrol -p
當連接外接顯示器時,這將返回有關顯示器的各種詳細資訊。我可以編寫一個腳本來解析輸出。然而,對於無人監督的使用,這似乎是一種不可靠的技術。
有沒有什麼方法可以讓我得到一個是/否的答案來判斷顯示器是否打開/關閉?
編輯:如果我能收到有關狀態更改的消息,那就更好了。由於這將連續執行數天,我不希望輪詢監視器的狀態。相反,如果它被關閉,我想通過一條消息得到通知。
我看不出解析
ddccontrol
. DDC 是獲取所需資訊的正確方法。與創建 DDC 的 VGA 不同,HDMI連接器從一開始就設計為包含 DDC。他們甚至回頭修改了 DDC 標準,為 HDMI 添加了更多功能,稱之為E-DDC。在 Linux 上,用於訪問 DDC 資訊的使用者空間工具是
ddccontrol
,因此它沒有一個標誌可以讓它做你想要的開箱即用的東西,因此沒有理由避免使用目前提供的東西。如果有的話,它是一個破解程式碼並提供更新檔的邀請。同時,這裡有一個簡短的 Perl 腳本,可以使用:
#!/usr/bin/perl # monitor-on.pl my $CMD = open '-|', 'ddclient -p' or die "Could not run ddclient: $!\n"; local $/ = undef; # slurp command output my $out = <$CMD>; if ($out =~ m/> Power control/) { if ($out =~ m/id=dpms/) { print "asleep\n"; } elsif ($out =~ m/id=on/) { print "on\n"; } elsif ($out =~ m/id=standby/) { print "off\n"; } else { print "missing?\n"; } } else { # Monitor is either a) not DDC capable; or b) unplugged print "missing!\n"; }
此腳本未經測試。我沒有任何非無頭(“有頭”?)Linux 機器可以在這裡測試。如果它不起作用,修復應該是顯而易見的。
它可以變得更智能。它現在無法處理多個監視器,並且它的字元串解析可能會被混淆,因為它不檢查它搜尋的電源狀態字元串是否在該
> Power control
部分內。