Awesome-wm 收到焦点时提升客户端的信号

ale*_*exm 17 emacs awesome-wm lua

我让我的 Emacs 在一个worker带有server-start启动的标签上运行。我在其他地方打开了一个文件管理器(例如另一个监视器),当我打开一个文本文件时,emacsclient它成功地在 emacs 中打开,但没有切换到它,也没有启动它。

我正在寻找的是rc.lua. 就像是:

client.add_signal("focus", function(c) c:raise() end)
Run Code Online (Sandbox Code Playgroud)

我希望它只针对 Emacs。并同时切换到worker标签。或者我可以从 Emacs 规则回调中完成吗?

有任何想法吗?:)

Tia*_*ago 1

我想要同样的东西,你的 emacs 回调的想法最终起作用了。我还没有在 Awesome 上测试过它,但我正在使用 dwm,并且我认为它们足够相似,足以使其工作。

这是emacs中的回调函数:

(defun raiseme ()
  (x-send-client-message
   nil                ; DISPLAY - nil is selected frame
   0                  ; DEST - 0 is root window of display
   nil                ; FROM - nil is selected frame
   "_NET_ACTIVE_WINDOW"    ; MESSAGE-TYPE - name of an Atom as a string
   32                 ; FORMAT  - size of the values in bits
   '(1 "_NET_WM_USER_TIME" 0) ; VALUES
   )
  )
Run Code Online (Sandbox Code Playgroud)

有多种方法可以调用回调。为了简单性和灵活性,我选择了一个 shell 别名,它调用回调,然后调用常规 emacsclient:

$ alias edi
alias edi='emacsclient -e "(raiseme)"; emacsclient -n'
Run Code Online (Sandbox Code Playgroud)

希望它仍然有用;)

有关消息类型和值的更多参考,请参阅窗口管理器提示

至于awesome对这个消息的处理,好像是对这个事件进行了处理。源代码在这里