seagle0128 / doom-modeline

A fancy and fast mode-line inspired by minimalism design.
https://seagle0128.github.io/doom-modeline/
GNU General Public License v3.0
1.3k stars 158 forks source link

强制Daemon启动也使用GUI的mode-line format #134

Closed cireu closed 5 years ago

cireu commented 5 years ago

Is your feature request related to a problem? Please describe. 使用systemd以daemon模式启动emacs。在加载配置文件的过程(display-graphic-p)的返回值为nil。之后在X Window下用client连接server。all-the-icons不会被默认启用,而且modeline的上下padding也会丢失。

Describe the solution you'd like Emacs 26以后没有了frame local variable。但是可以用frame-parameter。每次更新modeline时判断该部分内容,决定是否按有GUI的方式渲染modeline。

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

Additional context Add any other context or screenshots about the feature request here.

cireu commented 5 years ago

想了下不太现实,mode-line-format是buffer local变量

不过如何让daemon启动也强制使用GUI的mode-line format呢

seagle0128 commented 5 years ago

这样的使用方式不对。为何不在GUI下使用server-mode? 你非要daemon模式下使用icon,直接将doom-modeline-icon强制设为t。

cireu commented 5 years ago

因为在GUI下使用server-mode时Emacs不能隐藏到后台,这样C-x C-c按得太爽就把server给杀了

目前的我的尝试是:如果daemon模式下启动,则把doom-modeline-mode函数挂在after-make-frame-functions钩子上,否则挂在after-init-hook钩子上。这样做是有图标了,但是还是没有padding和左边的小色块

default

cireu commented 5 years ago

使用exwm解决问题 :P