由于众所不知的原因 laekov 在一处办公环境使用自己的 chromebook 进行办公.

之前的博客提到 laekov 的 chromebook 具有一块 3200x1800 的高分(瞎眼)屏. 而 laekov 在办公室开心地借来了一块和实验室那块看起来一样的 34 寸的带鱼屏, 然而插上之后才发现它的分辨率竟然是 2560x1080, 完全被 13 寸的笔记本屏幕给包含了. 本着屏幕 dpi 不重要, 面积才是王道的思路, laekov 十分容易地 disable 了笔记本的屏幕, 单独使用一整块 34 寸屏幕来进行工作.

laekov 在经历了 chromeos 的 ro rootfs 各种无语之后, 终于决心使用 crouton 的 xfce 环境作为自己的主力工作环境, 并配上了 i3lock 锁屏和熟悉的 urxvt.

然后问题来了: laekov 要抱着 chromebook 去开会! 当 laekov 拔掉 type-c dock, 看向 13 寸小屏幕的时候, 多年前在 laekov 的 (已经死掉的) mbp 上装 kde 之后出现的神奇一幕又出现了! 所有东西变得奇小无比, 需要配合放大镜才能分辨出屏幕上的字是 1 还是 l.

经过查资料发现 xfce4 有一项配置在 appearance/fonts/dpi/custom dpi settings, 通过将它的值在 96 和 192 之间切换即可达到 GDK_SCALE 的效果. 而且 chrome 浏览器 (没错, chromeos 里 chroot 出来的 xfce4 里面跑着的 linux 版的 chrome 浏览器) 会实时根据这个值进行更新. (遗憾的是 urxvt 和 fcitx 等程序需要重启)

于是经过学习 laekov 获得了以下脚本来一键调整 dpi.

xfconf-query -c xsettings -p /Xft/DPI -s $1

然而新的问题又出现了: 某些时候内置屏幕会自动开启 (即使在合盖状态), 此时 34 寸屏幕的 screen range 会变成巨大的 3200x1800. laekov 需要手工开盖合盖来使它恢复正常.

laekov 发现可以在 xfce4 里禁用 displays/use display. 所以是否使用 xrandr 就可以解决问题呢? 答案是肯定的. laekov 摸了一下就摸出了一个脚本.

xrandr -d :1 --output eDP-1 --off

至此似乎就可以一键进行 dpi 的切换了耶.