安裝
確保已安裝 emacs包。還需要 xorg-xinit包。
在 Emacs 中安裝 EXWM: M-x package-install RET exwm RET
。
編輯 xinitrc 並添加:
exec emacs
在 emacs 初始化(init)文件中添加
(require 'exwm) (require 'exwm-config) (exwm-config-example)
以使用默認設置。如果想使用自己的設置,請使用 (exwm-enable)
而不是 (exwm-config-example)
(也無需 (require 'exwm-config)
)。
還可以在伺服器模式下啟動 emacs,並通過命令行啟動 EXWM。請參見 https://github.com/ch11ng/exwm/issues/284 。
配置
EXWM 是一個完整的 X 窗口管理器,因此 Emacs 可以管理瀏覽器、vlc 等 X 窗口。您可以使用所有正常的 Emacs 窗口命令來控制窗口的位置。在 X 窗口(即非「正常」的 Emacs 緩衝區)中,有些命令會被 EXWM 捕捉,而不會傳遞給程序。這些鍵值存儲在 exwm-input-prefix-keys
中。此外,您也可以通過自定義 exwm-input-global-keys
來設置全局命令。如果您不使用自定義功能,而希望在 elisp 中設置 exwm-input-global-keys
,請注意可能需要重啟 EXWM(並在啟用 exwm 之前設置 exwm-input-global-keys
)。或者,你也可以嘗試使用 "or emacs" blog 中的 cset
宏,它可以在不重啟 EXWM 的情況下重新定義 exwm-input-global-keys
。要使用 s-& 作為啟動程序(如 firefox)的快捷鍵,可以這樣做:
(setq exwm-input-global-keys `(,(kbd "s-&") . (lambda (command) (interactive (list (read-shell-command "$ "))) (start-process-shell-command command nil command))))
多顯示器
EXWM 可以通過(可選)exwm-randr
軟體包處理多顯示器問題。在調用 (exwm-enable)
之前,您需要安裝 xrandr 並在 emacs 配置文件中啟用 exwm-randr。您需要調整 「DP-1」 和 「DP-2」 的值,使其與您電腦使用的值一致;在命令行中調用 xrandr
不帶參數,即可查看可用輸出。
(require 'exwm-randr) (setq exwm-randr-workspace-output-plist '(1 "DP-1")) (add-hook 'exwm-randr-screen-change-hook (lambda () (start-process-shell-command "xrandr" nil "xrandr --output DP-1 --right-of DP-2 --auto"))) (exwm-randr-enable)
系統托盤
EXWM 支持系統托盤,但默認情況下並未啟用。要啟用它,請在 dotemacs 文件中的 (exwm-enable)
前添加以下內容:
(require 'exwm-systemtray) (exwm-systemtray-mode 1)
之後可能需要調整高度;可以使用 exwm-systemtray-height
變量進行調整。
嵌入 LXDE
EXWM 可以代替 openbox,讓您仍然可以使用 LXDE 會話管理工具。
在這樣做之前,請確保已為 emacs 設置好運行 EXWM 的啟動文件(見上文)
lxsession 使用~/.config/lxsession/LXDE/desktop.conf
中定義的窗口管理器。(默認情況下使用Openbox)。如果該文件不存在,則會在 /etc/xdg/lxsession/LXDE/desktop.conf
中搜索。
用 emacs 替換任一文件中的 openbox-lxde
:
[Session] window_manager=emacs
lxsession-logout
您可以在 emacs 中創建以下函數,以便在 LXDE 會話中乾淨利落地註銷、關機或重啟:
(defun exwm-logout () (interactive) (recentf-save-list) (save-some-buffers) (start-process-shell-command "logout" nil "lxsession-logout"))
該功能會將最近的歷史記錄存儲到磁碟中,提示您保存、丟棄或更改未保存緩衝區中的更改,然後啟動註銷管理器。你可以將此功能綁定到 emacs 中的任意鍵上。
疑難解答
火狐瀏覽器屏幕撕裂
在某些程序中,特別是 Firefox 中,您可能會遇到屏幕撕裂現象。您可以試試
令人困惑的緩衝區名稱
您可能會看到緩衝區名稱被命名為 「*EXWM*」。EXWM 允許緩衝區自行命名。要允許緩衝區自行命名,請在 dotemacs 中添加以下內容:
;; Make buffer name more meaningful (add-hook 'exwm-update-class-hook (lambda () (exwm-workspace-rename-buffer exwm-class-name)))