博文

目前显示的是标签为“gnome”的博文

眼下最好的 hidpi linux 桌面可能还是 gnome

gnome 从 3 开始就有很多非议。对于 gnome 想走的 ui 风格我并不讨厌,反倒是可以看出其实很用心在设计感(触屏友好)上。对于 gnome 的各种外围开发全面拥抱 javascript,虽然我对 js 并无好感,但是只要能最大化笼络社区(KDE 不也这么干了)开发人员,作为一个伸手党也实在没什么资格抱怨。 不过最近遇到的问题,还真是反应了 gnome 在设计上的一些短板,也终于体会到了大家都在吐槽什么(搜 gnome crash 可见一斑)。像 上一篇末 提到的卡顿的问题,其实就是 gnome shell 崩了在自行重启。相比之下,xorg 好一些,wayland 惨不忍睹。前因后果,redhat 的主力开发在 自己的博文 里说的清楚。 于是前段时间考察了其他几个桌面,但是试用下来都不甚理想: KDE:说实话个人真的接受不了 KDE 的 UI,太缭乱。看样子想要配置出理想效果所需的努力令人望而却步。 Budgie:外观最接近 gnome 的一个,功能简单(或者说简陋)但堪用。 Deepin:需要装个 kernel module 令人意外,login 的时候会黑屏 hang 接近 1 分钟,而且 ui 在 hidpi 下表现失准,若干字体非常小。 而最要紧的贯穿上述所有 desktop 的死结是输入法。输入法的光标跟随计算有偏差,距离左上角坐标值越大,候选窗口偏的越远,以至于基本没法用,无论是 ibus 还是 fcitx。目测跟 xrdb 的 dpi 设定有关,也可能跟 gdm 有关,但实在是无暇折腾(被 ubuntu 默认 LightDM 的 hidpi 表现吓到了)。 于是转了一圈还是回到 gnome。虽然 gnome shell 写个 js extension 就能 core 掉整个 shell 的设计实在是难以令人满意,但在去掉了花哨的 gnome shell extension(或者说只保留了必要的 extension)之后,gnome shell 确实稳定了许多(当然日志还是没法看)。而且,这真的是目前开箱即用做的最好的,对 hidpi 支持的也最好的 linux 桌面了。

解决登录卡顿问题一例

ArchLinux,Gnome。有些时候,笔记本从睡眠中醒来,登录 Gnome,会卡好一阵子。经查是因为挂载了网络文件系统的缘故——比如休眠之前通过 gvfs 挂了个 samba,醒来重新登录的时候基本上要等一个超时才能见到桌面。 于是一直都是小心翼翼的在合上笔记本之前把该卸载的都卸载掉。但是这样人肉毕竟不方便。作为一个程序员,如果都不能给自己日常工作增加生产力,实在是羞耻。 于是准备用代码来解决问题。准备工作如下: suspend 的 hook。翻了翻  wiki ,现在什么 acpid、pm-utils 都不用了,hook 可以直接写成 systemd service file 的形式。 卸载 fuser 的挂载。linux 的外围存储都是 sshfs 挂上来,在 mount 表里直接可以看到,最容易处理。 卸掉 gvfs 的挂载。主要是来自 windows 的外围存储,Gnome 自带的 gvfs 其实还挺好用。但 gvfs 令人讨厌的是挂载行为变化不定,挂载点用 mount -l 是看不到的,之前还在 /run/user/$(id -u)/gvfs 下,而现在的版本则又找不到地方了。搜了一圈下来,看到 gio mount -s 可以直接按类型卸载,还算方便。 干掉 vpn 进程。好几次休眠之前开着公司的 vpn,唤醒之后忘了,结果一边是 vpn 在顽强的尝试恢复连接,一边是我一头雾水在看为啥网络不通。 写好 suspend-root.service,实测发现以 root 用户身份执行的 gio mount -s 是有问题的,而且简单的用 su 或者 sudo 换掉身份也不行。 gio 依赖 dbus ,而 dbus 里面貌似也有 session 的概念,在开发环境即使用 root 都验证过了,放到 suspend hook 里还是会有问题,估计和 session 的生命周期有关,事情越搞越复杂。 好在后续的搜索工作找到了 xss-lock (其实最早 ArchLinux 的 wiki 上就提到过,但是被忽略了),可以越过 systemd 的 hook,让用户进程直接订阅 suspend 事件。于是又搞一个 user space 的 systemd service,用来卸载 gvfs 和 sshfs。 最终方案用到的脚...

gnome 3.8,好的和坏的

忙,随手记一笔流水帐。 好的: ibus 集成的很好了,gnome-session-properties 里的各种 quirk 都可以去掉了。难得我 fcitx 都用出了感情,唉,gnome 这帮家伙整整折腾了一个大版本。 触摸板双指滚动可以同时 xy 两方向有效了——描述的不是很清楚,找个横竖都有滚动条的窗口试一下就知道了,刚开始用有点别扭,但是我觉得习惯了之后这个功能会很有生产力。 坏的: gdm 貌似挂了,systemd 启动直接卡死,只能强行关机。解决办法是直接换 lxdm。grub2 启动按 e 在 linux 字样行尾加写个 3 然后 f10 启动,root 密码进 rescue 模式,systemctl start NetworkManager.service 联网,剩下的就是按照 官方 wiki 做,记得 systemctl disable gdm.service。lxdm 默认不漂亮,好在换了 archlinux-lxdm-theme 之后还挺酷(要改 /etc/lxdm/lxdm.conf 的设置 lang=0)。 输入法切换的有点点慢,ctrl-space 之后敲快了有时会丢第一个字母。 extension 很多都 outdated,这个没办法,只能慢慢等。 chromium 的字体,ukai 莫名其妙的适配到 wenquanyi 前面去了,这个可能不是 gnome 的问题,不过我没时间折腾,干脆把 ukai 和 uming 都卸载了事。 总之,个人认为 3.8 的各种细节逐渐丰满起来,还是值得肯定的。

archlinux, gnome 3.6, fcitx

图片
我受够了 gnome 3.6 + ibus 这对组合了。为了尝试新人会遇到的问题,我把 .config/dconf/user 这个文件改了个名字,然后在「干净」的 gnome 3.6 环境里无论如何折腾也呼叫不出输入法。 好在除了 gnome 官方「刻意」集成的 ibus,还有 fcitx 可以选择。我对 fcitx 的印象一直还停留在 3.x 的时代,这次尝试才发现,现在伊能提供的用户体验,比起 ibus 岂止是毫不逊色,简直可以令后者蒙羞。 而整个切换过程也异常的顺利,基本上就是按照 wiki 操作一遍(我这是吃狗食已经吃出斯德哥尔摩综合症了么,呵呵)。 安装 fcitx-rime fcitx-gtk3 fcitx-gtk2 fcitx-qt fcitx-libpinyin fcitx-anthy fcitx-configtool 修改 ~/.xprofile 的 export 为 fcitx,注释掉  ~/.Xdefaults-`hostname` 里 URxvt.inputMethod 和 URxvt.preeditType 两行 gnome-session-properties 里面去掉自动启动 ibus 的项 到  https://extensions.gnome.org/extension/261/kimpanel/  安装 kimpanel 扩展,重启 X 即可。 通常我对新东西是宽容的,比如 gnome 3(到现在为止我也还认为 gnome 3 整体上还不错)。因为创新终归是件很困难的事,总要有人愿意吃狗食,事情才会一点一点好起来。但是宽容是有底线的,正如狗食虽然难吃,但至少不能超越作为食物的底线。作为一个中文用户,无法输入中文,超越了我的底线。gnome 团队,你们再这样折腾下去,你们的狗食我是不会再吃了。