以client-daemon方式启动WSL中的Emacs无法最大化启动

大家好。这两天我折腾了一下WSL (wsl1+WSL/Arch),发现在WSL中以daemon方式启动emacs,再启动emacsclient,无法让启动时的初始窗口最大化,想请教一下原因和解决办法。

我的配置如下:

1.X-server配置

X-server采用mobaxterm,配置如下:

2.Emacs配置

在.emacs中只添加一行:

(add-to-list 'default-frame-alist '(fullscreen . maximized))

3.启动daemon的方式

用vbs+bat的形式,脚本如下:

'HideBat.vbs
CreateObject("Wscript.Shell").Run "Emacs_wsl_daemon.bat", 0, True
@echo off
powershell wsl "DISPLAY=127.0.0.1:0.0 /usr/bin/emacs --daemon"

4.启动client的方式

用vbs+bat的形式,脚本如下:

'HideBat.vbs
CreateObject("Wscript.Shell").Run "Emacs_wsl_client_new.bat", 0, True
@echo off
arch run "LANG=zh_CN.UTF-8 DISPLAY=127.0.0.1:0.0 /usr/bin/emacsclient -a /usr/bin/emacs -cn"

5.启动起来的“最大化”的client窗口

不知道这是为什么?该怎么解决?

1 个赞

一样的问题。我没要找到原因。我参考下面这个帖子直接重设大小。

谢谢,我还是希望能设置为最大化。 我再找找看。

可能是窗口管理器的问题,我以此再找找,不太相信没人尝试解决这个问题…

你有没有换过xserver?我也用的是mobaxterm。当时没想到要换xserver。问题解决了就没再折腾。

换过,VcXsrv和Xming也一样,而且用它们还会随机出现按一下方向键,光标就不断的跑,停都停不下来…

抱歉,我没仔细看你的截图。

我和你不一样的是,我最大化的窗口的确是屏幕的最大大小,但问题是窗口的位置不对。

我Mobaxterm和VcXsrv都用过,都是一样的现象:窗口能最大,但是位置不对,就是会变成这样

不过我一直是自己重设大小的,用的还挺舒服。

我直接用/usr/bin/emacs启动也是最大化、位置不对,但是用emacsclient启动就是这样子了。

最大化启动但位置偏移有解决办法,见这里:

只需要把他用的vcxsrv替换为XWin_MobaX就可以了。

但是实际操作,这个做法对emacs有效,但对emacsclient无效

我这个也是用emacsclient启动的, emacsclient -c -n -a ''

呃…我的启动起来就是那个样子了…

晕…

Emacs_wsl_client_new.bat里面的-a /usr/bin/emacs换成-a ''试试?

试了一下,还是一样的。感觉我的wsl里启动emacsclient,只要启动时调整窗口大小,就一定是那个小条,就像窗口调整命令不起作用一样,但是直接启动emacs又正常。

别折腾了。直接重设窗口大小吧。

能问下为什么要用emacsclient呢?

我之前也是希望用emacsclient来加快启动速度,但是后来发现我基本上都是打开一次emacs然后就不关了。

另外,可以试试wsl自带的wslu工具,可以辅助生成vbs脚本快捷方式。

不全是为了加速启动而已…我有时候会下意识的关闭一些窗口,用emacsclient的话,关了窗口再打开,原来在编辑的文件还能切回来。

这个问题应该和wslu没啥关系?我有点怀疑是不是我少装了些东西。

是和wslu没啥关系 :joy:,一个建议罢了,可以省去写脚本的功夫。

本来我是直接用Windows版的Emacs的,但是最近做一些事情需要经常Copy/paste大段文字相互对照,从Word往Emacs里粘贴的时候太慢了,但是往WSL下的Emacs中粘贴快很多,于是就折腾了一下。其它都还行,就这个问题不习惯了。

解决了。@stk_SGarcia @yqu212 ,谢谢你们~~

解决方法是:

  1. -cn改成-c -n

2.按前面提到的qiita上 fujimotok的做法进行一堆操作

3.在.emacs后面添加

(require 'frame-maximize)
(toggle-frame-maximized)
(add-hook 'window-setup-hook 'toggle-frame-maximized t)
(add-hook 'after-make-frame-functions 'toggle-frame-maximized)

另,24楼有新的补充。