年度烂活之复活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先生做这件事情呢?

4 个赞