2013年,一个20岁的年轻人给手机代工厂写邮件要数据手册,只为把Ubuntu Phone的桌面模式移植到新硬件上。13年后,他fork了Plasma Mobile——这次能成吗?
第一次:死在二进制黑箱里
Ubuntu Phone的演示视频很诱人:手机插显示器,秒变桌面。同一套系统,同一批应用,没有第二套操作系统。
作者买了机器,开始给OEM和ODM写邮件,要数据手册、要参考设备。他以为自己能移植一个融合壳层,最终做出可销售的产品。
现实给他上了第一课:手机硬件为什么长成这样。
Halium项目让他能在少数设备上维持开发,但大部分时间都在跟不透明二进制blob搏斗。厂商内核冻结在没人碰过的分支上,OEM的支持"技术上礼貌,实际上缺席"。硬件最终变得不可管理,想要的优化根本落不了地。
计划死在这里,但这段经历让他学到了应用层之下,事情实际如何运转。
那个"手机变电脑"的梦想本身也没好到哪去。Ubuntu Phone的dock在现有硬件上卡顿,应用支持稀薄,整个市场感觉还没准备好下注。几年后Canonical终止了Ubuntu Touch,UBports社区接过来续命,Lomiri继承了融合野心但社区更小。
作者一直没停止关注。这一关注,就是13年。
"融合"这个词被营销磨平了
大多数人听到"融合",想到的是应用的响应式设计——界面自适应屏幕大小。这不是作者关心的部分。
真正有趣的是壳层(shell)——绘制dock、状态栏、窗口装饰、锁屏的东西。壳层是计算与双手交汇的地方。
今天的Linux,每个壳层都被锁死在特定形态上:
Plasma假设你在用桌面。Plasma Mobile假设你在用手机。GNOME假设你在用笔记本。Phosh假设你在用手机。
每个都把自己的事做好,但在它们之间切换意味着切换会话,有时甚至是切换发行版。
作者从第一台Ubuntu Phone开始就想要的是:一个壳层,知道自己在什么设备上运行,然后安静地自我重组。插上显示器:dock在底部,边缘平铺,系统托盘。拔掉显示器:同样的进程,同样的通知,重新排布给拇指操作。
他试过从头写这个,好几次。每次都写到足够远,意识到自己即将重新发明多少东西,然后停下。
第三次:fork Plasma Mobile
Plasma Mobile已经把难的部分做了。它是Plasma壳层,用QML写在kwin之上——跟Plasma桌面用的是同一个合成器。它正确地讲Wayland。它有操作抽屉、主屏幕、状态栏、管理窗口的KWin脚本。手机端是扎实的。
缺的是桌面端。
所以作者fork了它。
SHIFT是plasma-mobile在KDE Plasma 6分支上的fork。如果在手机上启动SHIFT,它表现得跟Plasma Mobile一样——上游的手机UI原封不动。这个fork添加的是一个融合模式,一层叠加在之上的东西,通过plasmamo
热门跟贴