写脚本时所想到的 —— 作为 Power User 的一点怨念

Firefox 没有 Chromium 的后台运行功能,导致每次关掉最后一个窗口也会终止实例进程,新开实例初始化要 5s 左右(等插件启动)。寻思写个脚本保证始终有一个窗口隐藏在某处来 daemonize Firefox。本来是简单记录折腾过程的,结果推文越写越长,索性吐几句苦水发博客了。

Daemonize Firefox

由于 i3 不能隐藏窗口,起初想开一个特殊的 FF 窗口用 i3 mark 标记完扔 scratchpad 里,以后显示时过滤掉特定标记。 然而 i3 mark 无法标记多个窗口,正则匹配完窗口再标记的方法行不通。转而打算直接匹配窗口属性,却发现 FF 无论如何弄不出一个特殊的 title/classname。i3 这条路算是死了。 最后的方案是利用 xdotool 和 wmctrl 输出的差别,把新开的特殊 FF window 用 xdotool unmap 掉。每次对比两者输出来判断特殊窗口是否已经打开,以及是否已经有窗口被隐藏。

吐槽

在找解决方法的过程中,翻到 6 年前有人报告 Firefox 不支持 GTK 的 --name 参数,至今没下文。联想到这几天改 Tree Style Tab 时搜到大量被 FF 默认快捷键 ctrl-w 不能修改折磨的 Emacs 用户,甚至有位小哥被逼得去修改源码,自己编译,各种踩坑。

浏览器已成为日常生活不可或缺的一部分,其可自定义程度却低得可怜。更别提网站都围着 Chrome 测试和优化,浏览器本身其实都快没有选择。作为一个有自定义需求的 Firefox 用户只能忍受着较慢渲染速度,抱怨着快捷键不能改,向别人吹捧 Tree Style Tab 好用。 现在想想,前段时间得知索法新款手机没有小屏旗舰的心情,大概是类似的: 「有小众需求的 Power User 就在抱怨和折腾中操劳至死吧」