Awesome-wm 当获得焦点时发出信号让客户端上升

Awesome-wm 当获得焦点时发出信号让客户端上升

我的 Emacs 运行在已启动的标签上workerserver-start我在其他地方打开了一个文件管理器(例如另一个显示器),当我用emacsclient它打开一个文本文件时,可以在 emacs 中成功打开,但不会切换到它,也不会将其启动。

我正在寻找的是 中的客户端特定信号rc.lua。类似于:

client.add_signal("focus", function(c) c:raise() end)

我希望它仅特定于 Emacs。worker同时切换到标签。或者我可以从 Emacs 规则回调中执行此操作吗?

有任何想法吗? :)

答案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
   )
  )

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

$ alias edi
alias edi='emacsclient -e "(raiseme)"; emacsclient -n'

希望它仍然有用;)

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

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

相关内容