从今天开始,Emacs里面可以运行任何你想要的程序 (Linux & Windows & Mac & BSD)

换个靠谱点的包管理器,比如 nix

brew 主要都是些 Xcode 用户在用,社区基本没有跨平台开发者。

哈哈哈,在Mac这么封闭的平台上居然可以要我玩 Nix , 哈哈哈哈,好欢乐啊。

nix 你玩过吗?确认可以解决我上面的问题吗?

nix 提供的版本还是比较稳定的,而且最不怕的就是版本冲突导致的坑。

我之前试过,唯一的问题是默认的软件源比较慢,不过能挂代理就行。

其实作为 Python 开发者,为什么不试试 Portage 呢(滑稽)

Nix 这种软连接发行版我深入研究过。

我只是感觉你在把我往另外一个火坑里面推。哈哈哈

我还是在 brew 把 python3 和 pip3 折腾好了,估计就快成功了。 Nix和其他的坑不想趟了。

我在从源码编译Python3, Mac上的Python2.x居然不支持 SSL , 会导致 pip install 的时候各种报错。

Python的话 用anaconda比较好

archlinux在pyenv创建的python下安装pyqt5相关的东西也挺要命的。

真可怕,elisp(py) machine 启动!

1 个赞

这有 homebrew 的 python 说明,不知道有没有用: https://docs.brew.sh/Homebrew-and-Python

谢谢大家, Python3 和 PyQt5 都折腾好了.

这两天研究一下Mac上怎么运行 DBus 和 Xlib

还没试过,有时间学学pyqt5,留名支持大神!!!

Mac 上的DBus还在折腾中.

但是看了一下 Mac 下, elisp " (frame-parameter nil 'window-id) " 居然返回的是 1 , 这个一点都不像 xwindow xid, 深深的不安.

折腾了几天, 进展到 PyQt5 已经可以在Mac工作了.

我做了几个实验,得出了几个结论:

  1. DBus 很难折腾好, 我看了网上的教程,应该最后可能还是可以折腾好,实在不行可以用跨平台的IPC 来替代,主要的死穴在后面两个

  2. X11 reparent 没法在 MacOS 上工作, 我也没法发现 Cocoa 上有类似的技术

  3. Qt 的 QGraphicsView/QGraphicsScene 没法正常工作,特别是视频播放器 QGraphicsVideoItem完全没法加载

基于以上几个原因我会放弃继续折腾Mac 上的EAF 了, 如果那位 Mac 大神能够知道怎么解决上面三个问题, 麻烦告知一下解决方案.

我继续在 Linux 上开发EAF 了.

3 个赞

所以只能在Linux 平台玩 EAF 了

话说reparent是怎么实现的呢?是用Elisp吗?还是C?

x11 的底层协议支持的, 给一个 xid 和 parent xid, xlib 可以让任意程序的窗口粘贴到 parent 窗口上,即使 parent 窗口是另外一个风马牛不及的应用程序提供的.

xreparent 和 xcomposite 是构成 linux 所有窗口管理器图层合并的基础.

举一个简单的例子, mpv命令行启动的时候,只绘制在一个光秃秃的 xwindow 上, 但是在 mpv 进程启动的时候,给他一个 parent xid , mpv 就可以粘贴到应用程序制定的控件窗口上了. vlc, gsteamer 都是类似的.

EAF 里面通过 python-xlib 这个库向 XServer 发送 xreparent message.

3 个赞

话说有一个 xelb 的库, 可以通过 elisp 和 xserver 进行通讯.

不管什么编程语言, 都是再向 xserver 发送消息,所有的绘制都在服务端, 并通过显卡进行图层硬件混合的.

1 个赞

之前提过,在 Cocoa 实现 XWidget 。不知道是否有参考价值