exwm 里面使用 emacs 输入法要怎么配置呢

不知道有没有成功的道友给点经验。我想用 exwm-xim 但似乎没有成功。

不管是用哪个输入法,看起来都是没有效果的样子,是不是我电脑上缺什么。我装了 exim 和 uim

(setenv "GTK_IM_MODULE" "xim")
(setenv "QT_IM_MODULE" "xim")
(setenv "XMODIFIERS" "@im=exwm-xim")
(setenv "CLUTTER_IM_MODULE" "xim")
(exwm-xim-enable)

qt应该没用

我用的 exwm 里的 exwm-xim.el

我也设置了这些了,是还需要什么特别的依赖吗? 输入法我试了 emacs-rime, pyim, 还有自带的 chinese-py 和 programmer-dvorak 好像都没有用。我感觉我的配置应该是哪里缺点啥

(leaf exwm
  :require t
  :init
  (setenv "ORGANIZATION" "Z572")
  :preface
  (defun byzanz ()
    (interactive)
    (start-process-shell-command "byzanz" nil "byzanz-record /tmp/a.gif -d 5"))
  (leaf exwm-systemtray
    :straight nil
    :commands
    exwm-systemtray--init
    exwm-systemtray--exit
    :hook
    (exwm-init-hook . exwm-systemtray--init)
    (exwm-exit-hook . exwm-systemtray--exit))
  (leaf exwm-xim
    :straight nil
    :commands
    exwm-xim--init
    exwm-xim--exit
    :hook
    (exwm-init-hook . exwm-xim--init)
    (exwm-exit-hook . exwm-xim--exit)
    :config
    (setenv "GTK_IM_MODULE" "xim")
    (setenv "QT_IM_MODULE" "xim")
    (setenv "XMODIFIERS" "@im=exwm-xim")
    (setenv "CLUTTER_IM_MODULE" "xim"))
  :hook
  (kill-emacs-hook . exwm--server-stop)
  :mode-hook
  (exwm-update-class-hook
   . ((setq-local rime-show-candidate 'minibuffer)
      (exwm-workspace-rename-buffer (format "*EXWM:%s\t%s*" exwm-class-name exwm-title))))
  (exwm-manage-finish-hook
   . ((when (and exwm-class-name
                 (string= exwm-class-name "Alacritty"))
        (exwm-input-set-local-simulation-keys nil))))
  ;; (exwm-init-hook
  ;;  . ((start-process-shell-command "picom" nil "picom")))
  ;; :bind*
  ;; ([f7] . byzanz)
  :custom
  (exwm-workspace-number . 1)
  (exwm-input-global-keys
   . `(([?\C-\\] . toggle-input-method)
       ([?\s-r] . exwm-reset)
       ([?\s-k] . exwm-input-release-keyboard)
       ([?\s-s] . webjump)
       ([?\s-f] . exwm-layout-set-fullscreen)
       ([?\s-w] . exwm-workspace-switch)
       ([XF86AudioRaiseVolume] . alsamixer-up-volume)
       ([XF86AudioMute] . alsamixer-toggle-mute)
       ([XF86AudioLowerVolume] . alsamixer-down-volume)
       ([?\s-d] . (lambda (command)
                    (interactive (list (read-shell-command "run > ")))
                    (start-process-shell-command command nil command)))
       ,@(mapcar (lambda (i)
                   `(,(kbd (format "s-%d" i)) .
                     (lambda ()
                       (interactive)
                       (winum-select-window-by-number ,i))))
                 (number-sequence 0 9))))
  (exwm-input-simulation-keys
   . `(,@(mapcar (lambda (i)
                   `(,(kbd (format "M-%d" i)) .
                     (lambda ()
                       (interactive)
                       (winum-select-window-by-number ,i))))
                 (number-sequence 1 9))
       ([?\C-b] . [left])
       ([?\C-f] . [right])
       ([?\C-p] . [up])
       ([?\C-x h] .  [?\C-a])
       ([?\C-n] . [down])
       ([?\C-a] . [home])
       ([?\M-<] . [home])
       ([?\M->] . [end])
       ([?\C-w] . [?\C-x])
       ([?\C-m] . [return])
       ([f9] . nil)
       ([f7] . nil)
       ([f12] . nil)
       ([?\M-w] . [?\C-c])
       ([?\C-y] . [?\C-v])
       ([?\C-e] . [end])
       ([?\M-v] . [prior])
       ([?\C-v] . [next])
       ([?\C-d] . [delete])
       ([?\C-k] . [S-end delete])))
  :defer-config

  (dolist (i exwm-blocking-subrs)
    (advice-add i :around #'exwm--server-eval-at))

  (leaf exwm-edit
    :disabled t
    :commands global-exwm-edit-mode
    :global-minor-mode
    global-exwm-edit-mode
    :custom (exwm-edit-bind-default-keys . nil))
  :config

  (exwm-init)
  (server-start)
  (setenv "EDITOR" "emacsclient"))

这就是我 exwm 的配置 我就设置了这些, 没有其他依赖

嗯,谢谢。我再研究研究。现在先用 fcitx5

exwm 相对于其他的wm有什么很大的优势吗?是不是一个大号的eaf?

我把 evil-mode 关了就可以输入了.可能你的 meow 也会影响.

不是 Meow 的问题,Meow 的实现比较干净,不像 evil 挂了各种 hook。我现在已经放弃 exwm 了,感觉还是 bspwm 好用,不管是性能上还是功能上。