最近在wsl里面安装了emacs,并且装上了Xming启动gui。现在想在windows里面做到类似于安装的软件一样双击某个图标启动,于是想试试先写个bat脚本,但是不是太行:
powershell wsl emacs
这样会直接在命令行内启动emacs,而且无法sudo
powershell wsl ./scrip.sh
echo “passwd” | sudo -S emacs
这样会报错
emacs : standard input is not a tty
要如何才能达到双击启动wsl内的emacs,体验windows原生的感觉?
我的 vbs 脚本
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl DISPLAY=192.168.0.1:0.0 emacs",vbhide
1 个赞
感谢,指定DISPLAY参数后可以使用wsl执行sh脚本以传入sudo
不过奇怪的是无论在sh脚本内或直接在wsl的参数内,执行
echo “passwd” | sudo -S emacs
都会出现emacs : standard input is not a tty
不过至少能在windows双击运行wsl下程序了,开心
创建一个快捷方式
C:\Windows\System32\wsl.exe DISPLAY=192.168.8.116:0.0 ALTERNATE_EDITOR="" emacsclient -cn
IP 地址根据你自己的来填
好处是可以自动启动emacs daemon
icon可以在这里下载 file,type,emacs Icons
2 个赞
现在在 wsl2 下用 emacs 有什么痛点吗?
还有不能使用系统剪贴板
我用的是Xming,在像Cadence这种显式地具有输入框的情况下是可以用的,但是Emacs中不行
用VcXsrv后可以了。
目前最大的提升可以说是各种响应的速度了,包括find-file,dired等操作,我现在觉得Windows下Emacs的速度简直慢的匪夷所思
你说的这些在我这都不算痛点啊,有没有什么真正影响的,比如 magit 慢什么的
magit不慢
agenda有点慢 10个文件首次打开7-8s,后续要3s 不过可能file少点的话会快一些
1 个赞
yqu212
11
WSL 2还没用上,WSL上面magit一点也不慢
1 个赞
yqu212
13
之前我也对WSL 2充满期待,今早听 @fuxialexander提到EAF不能用,心里一下哇凉哇凉的。
et2010
14
没有用EAF,对我影响不大。你们用 EAF 主要解决哪些痛点?
我是因为linux里xwidget不大好用(老是闪)才想着要不要入坑eaf的
目前还没解决痛点
1 个赞
我用 VcXsrv, 有个痛点是电脑休眠了或者长久不动,开的 GUI 程序会消失
不知道其他人有这个问题没有
yqu212
17
不用开浏览器了啊,平时工作就是在Emacs和浏览器之间切换,有了EAF就没切换的问题了。另外有了浏览器,很多功能都有了。
1 个赞
这个快捷方式打开会有一个 wsl 的终端窗口在,有办法隐藏掉吗?
分享一下WSL emacs里默认用Windows里的浏览器打开网页的设置
;; * set browser in wsl
(setq-default sysTypeSpecific system-type) ;; get the system-type value
(cond
;; If type is "gnu/linux", override to "wsl/linux" if it's WSL.
((eq sysTypeSpecific 'gnu/linux)
(when (string-match "Linux.*microsoft.*Linux"
(shell-command-to-string "uname -a"))
(setq-default sysTypeSpecific "wsl/linux") ;; for later use.
(setq
cmdExeBin "/mnt/c/Windows/System32/cmd.exe"
cmdExeArgs '("/c" "start" ""))
(setq
browse-url-generic-program cmdExeBin
browse-url-generic-args cmdExeArgs
browse-url-browser-function 'browse-url-generic)
(defun org-file-apps-wsl (path)
(shell-command (concat
"/mnt/c/Windows/System32/cmd.exe /c start \""
(file-relative-name path) "\"")))
(after! org
(setq org-file-apps
`(("pdf" . emacs)
("\\.x?html?\\'" . (lambda (file link)
(org-file-apps-wsl file)))
(auto-mode . emacs)
(directory . emacs)
(t . (lambda (file link)
(org-file-apps-wsl file)))))))))
4 个赞