2012-01-09 21 views
2

我使用ERC和好bitlbee管理在Emacs我聊天會話啓動OS級別的焦點。它出色地工作,只有一個小缺失功能 - 當Emacs沒有焦點時發出警報。如何找出如果當前幀具有在Emacs

理想我不得不當我發了消息並聊天緩衝埋或Emacs本身不具有輸入焦點的應用程序的操作系統級警報(低吼或其他)。我有第一個工作正常,但如果我能找到一種方法來確定Emacs本身是否具有輸入焦點,那麼我就會發現這個問題。

我能找到最近的是幀可見P,但只告訴你,如果幀被最小化或沒有。

任何幫助非常讚賞 - 謝謝!

回答

0

您可以嘗試投票,一個計時器,並檢查了switch-frame事件。可能或可能不工作。請參閱Elisp手冊,節點Focus Events

+0

嗯,我認爲,只有當你切換到另一個Emacs框架,而不是完全的另一個窗口觸發一個事件。當然,這就是快速測試的結果,它似乎在文檔中表現得如此之多。還是)感謝你的建議! – bbbscarter 2012-01-10 13:23:59

0

您可以運行一個外部命令。這讓你活動窗口的名稱與xdotool

(defun get-active-window-title() 
    (let ((command-result 
     (shell-command-to-string 
      (concat "xdotool getwindowname " 
        (shell-command-to-string 
        "xdotool getactivewindow"))))) 
    (substring 
    command-result 
    0 (1- (length command-result)))))