emacsclient 关闭 frame 后, server 卡死

按照 hyprland + emacs 配置 emacs 作为 app launcher, 正常是没问题的, 可以选择打开 app, frame 自动关闭。 但是 C-x C-c 或者 SUPER+c 等强制手段关闭 frame 之后会卡死 emacs-server, 其他的 frame 无法正常工作, ps 查看的话会发现进程没有关闭。

代码贴在下面, 执行命令是 emacsclient -cF "((visibility . nil))" -e "(emacs-run-launcher)"

;; App-Launcher
;; The 'app-launcher' is a better run launcher since it reads the desktop applications on your system and you can search them by their names as defined in their desktop file.  This means that sometimes you have to search for a generic term rather than the actual binary command of the program.

(use-package app-launcher
  :elpaca '(app-launcher :host github :repo "SebastienWae/app-launcher"))
;; create a global keyboard shortcut with the following code
;; emacsclient -cF "((visibility . nil))" -e "(emacs-run-launcher)"

(defun dt/emacs-run-launcher ()
  "Create and select a frame called emacs-run-launcher which consists only of a minibuffer and has specific dimensions. Runs app-launcher-run-app on that frame, which is an emacs command that prompts you to select an app and open it in a dmenu like behaviour. Delete the frame after that command has exited"
  (interactive)
  (with-selected-frame 
    (make-frame '((name . "emacs-run-launcher")
                  (minibuffer . only)
                  (fullscreen . 0) ; no fullscreen
                  (undecorated . t) ; remove title bar
                  ;;(auto-raise . t) ; focus on this frame
                  ;;(tool-bar-lines . 0)
                  ;;(menu-bar-lines . 0)
                  (internal-border-width . 10)
                  (width . 80)
                  (height . 11)))
                  (unwind-protect
                    (app-launcher-run-app)
                    (delete-frame))))

没用过 你说的这个 hyprland+emacs launcher。但是 server 卡死这个情况来看,你会不会用的是 emacs-gtk?

是 archlinux aur 的 emacs-pgtk-igc-git, 版本号是31.0.50.

不光卡死, ps 查看的话, 会发现进程没有关闭。