年度烂活之复活inkmacs

缘起:

对这个inkscape联动一直念念不忘。当时我发现了inkmacs这个项目(名字起的挺好),但是并没能成功运行它。好吧,既然老东西不工作,那我们就重写它吧!

我花了一些时间研究Castel大佬是怎么做到这些东西的,他其实没有用到D-bus(是的,D-bus很蠢,根本就没有脑子正常的人会考虑用d-bus做IPC去集成软件),他只是用了系统剪贴板,python实现的inkscape插件,以及命令行调用inkscape。他的这一套工作流其实有点……混乱,或者说迁移起来不是那么优雅,但是的确可以用。

但悲剧的是我的目标已经变成了复活inkmacs(经典的X-Y问题,现在想来还不如做个Inkscape插件把Emacs给塞到Inkscape里面去呢),所以我又花了一点时间去搞明白inkscape的dbus接口怎么用,遇到不懂的问题,跑到聊天室去问人家,人家很热情的回复了,看来,虽然世界抛弃了D-bus,但是世界还没有抛弃Emacser。

然后出于某种不明原因,我把这个项目忘了大半年,前几天偶然想起来给它糊了点功能,如下:

  • Emacs启动并通过dbus连接inkscape
  • Emacs指派inkscape打开某个路径下的svg文件
  • 把Emacs buffer里的svg overlay粘贴到inkscape里面(仅限X窗口,wayland有剪贴板隔离所以无效,这个是唯一跟Castel的演示效果相近的功能,我用org-latex-preview在Emacs里面生成svg overlay,然后用这个函数就可以在inkscape里面拖拽画图了。至于你问我为什么不直接手动用剪贴板非要用D-bus,我只能说D-bus也就这点可怜的用处了)
  • Emacs控制Inkscape一键输出PDF和tex header,这个或许对演示有帮助,比如上课画图之类的,但因为我没啥演示的需求所以也没做进一步的集成。

工作流集成目前不是我感兴趣的工作,诸位须知,inkmacs在它的README里面画了一通大饼(比如集成org文档工作流之类的)其实除了dbus接口啥都没做。所以我吸取教训就不画饼了,不知道能否拜托ai先生做这件事情呢?

10 个赞

厉害厉害,我回国后再也没有精力折腾新技术,赞美楼主的行动力!

确实,感觉回国后,也用Emacs,但非常少了。。。

Emacs我倒是天天用,latex、org脱不开,但不咋有时间折腾新包了,写matlab、python也少了。最近5年最大一次也就是从ivy全家桶迁移到了vertico(其实感觉没啥本质差别,但也没动力再迁回去了)

说白了,就是自由时间国内太少了(不知道懒猫怎么有时间开发那么多新插件,膜拜

想要无中生有,必然是胸有成竹。我花了一年想通这件事怎么做,而不是在写代码。猫大的画功不是顶级,但他胸中的竹林是顶级的。黑客想要的不过是画而已,只有土壤了解竹子。