如何使用elisp使窗口系统的焦点切换到另一个应用程序?

时间:2012-08-08 11:04:17

标签: emacs elisp

我想在浏览器中打开当前正在编辑的html页面然后切换 窗口系统重点关注按键上的浏览器。我正在使用gnome桌面环境。

以下是代码(焦点切换除外)

(defun open-in-browser()
  (interactive)
  (save-buffer)
  ; switch the windowing systems focus to the browser
  (let ((filename (buffer-file-name)))
    (browse-url (concat "file://" filename))))

(global-set-key (kbd "<f5>") 'open-in-browser)

我尝试使用较低框架功能和暂停框架功能, 两者都隐藏了不需要的emacs-frame,因为我无法看到代码, 除此之外,我必须再次键入ALT-TAB 两次再切换到emacs-frame。

如何切换到另一个应用程序(就像在gnome中模拟ALT-TAB一样) elisp的。

3 个答案:

答案 0 :(得分:1)

您正在寻找的功能可能是unfocus-frame,但它已经过时了。您需要一个合作的窗口管理器才能真正按照您的要求进行操作。

答案 1 :(得分:1)

你不能做你想要的。更改焦点是窗口管理器的责任,而emacs无法做到这一点。你可以

  1. 从emacs调用外部程序来执行您想要的操作
  2. 创建一个将<f5>ALT-TAB
  3. 组合在一起的键绑定

答案 2 :(得分:0)

有些程序可用于从命令行控制窗口管理器,以便您可以从elisp调用命令来激活窗口和内容。

其中一个程序是wmctrl。我不知道它是否适用于Gnome,你应该尝试一下。