上周三下午,我在Ubuntu 22.04的应用抽屉里滚动时,突然停住了——有个图标我完全不认识。没印象装过,就算装过也是八百年前的事了。删掉就行?问题来了:怎么删?
是apt包?Snap?还是Flatpak?想从终端下手,得先破案——哪个工具把它塞进来的,再回忆对应命令。GNOME Software只管它自己店里的货,对来历不明的本地应用视而不见。就为这一个陌生程序,查资料、试命令,折腾了二十分钟。
我想要的很简单:一个图形界面,把所有已装应用摊开,不管从哪来的,一键删掉不要的。搜了一圈,没有干净的解决方案。于是业余时间,我开始自己写。
这就是Showcase。
一个入口,管遍所有应用
Linux应用从好几扇门进来:系统包(apt/dpkg)、Flatpak、Snap,还有独立的AppImage。每种都有自己的列表和删除语法。Showcase把它们全问一遍,所有图形应用塞进同一个网格,按来源打标签。
在这个界面里,你可以:
搜索、筛选、排序。实时搜索,按来源过滤(带实时计数)或按分类过滤,按名称、大小、最近安装时间排序。
查看任何应用的底细。点击打开详情面板:图标、版本、安装大小、安装日期、发布者、分类、包ID、完整描述。
卸载不留隐患。一键操作,走系统正常密码认证。提交前告诉你能腾出多少空间;删apt包时会警告连带依赖;系统核心包和基础Snap直接拒绝删除。
保持更新。单个应用即时检查更新,或全盘扫描后逐个或批量应用更新,每个走自己的源机制。
界面跟随系统亮暗主题。各源并行查询,某个工具慢或缺失(比如你不用Snap)不会拖慢整体。
技术实现的一些细节
Showcase是用Tauri v2写的原生桌面应用——Rust核心,SvelteKit(Svelte 5)前端。二进制体积保持小巧,质感像真正的GTK应用,而非浏览器标签套壳。
关键问题是"什么才算一个应用"。答案出乎意料地朴素:.desktop文件。这些正是出现在你应用菜单里的条目,Showcase把它们当作真相来源,再从对应的包管理器抓取元数据来丰富信息。
有两个原则从一开始就定死:
绝不以root运行。只有卸载动作本身提权,且仅限该单次操作,通过常规系统认证流程。
绝不瞎删。系统包和基础Snap有硬性保护,依赖关系变更前有明确警告。
开发过程中最耗时的部分不是界面,而是理清各包管理器的差异——Snap有"基础包"概念,Flatpak的运行时依赖链,apt的反向依赖计算。每个都要单独处理,才能在统一界面里给出一致的体验。
目前Showcase已支持Ubuntu 22.04/24.04,Debian 12,以及主流Flatpak/Snap配置。代码开源,欢迎试用和反馈。
有时候最烦人的问题,答案就是一个能看清全貌的工具。
热门跟贴