2012-01-09 35 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))))) 
相关问题