X11 多显示器配置:玩转 XRandR
RandR(Resize and Rotate)协议是基于 X Window 系统的一个扩展,它可以直接操作显示器模式、刷新率,属于 DDX 组件。 xrandr 是官方的 RandR 配置工具,比老的 Xinerama 机制更容易测试和配置。 本文在没有桌面环境的情况下直接对底层软件进行配置,如果有安装某种 DE 可以在其控制面板中找到对应的配置。
RandR(Resize and Rotate)协议是基于 X Window 系统的一个扩展,它可以直接操作显示器模式、刷新率,属于 DDX 组件。 xrandr 是官方的 RandR 配置工具,比老的 Xinerama 机制更容易测试和配置。 本文在没有桌面环境的情况下直接对底层软件进行配置,如果有安装某种 DE 可以在其控制面板中找到对应的配置。
JavaScript 在 1.1 就支持 Date
对象,所有主流浏览器都支持。
和其他语言类似,Date、Time 的表现会受到时区的影响,在编写跨时区网站的页面脚本时,或者单元测试在其他时区的持续集成服务上运行时,都需要熟悉 Date
对象里的时区概念。
本文介绍 Date 对象的初始化字符串会被当做怎样的时区解释,Date 上的方法哪些是时区相关的,以及如何编写在所有时区都能运行的代码。
Vim 中的搜索默认是大小写敏感的,即搜索 vim
不会匹配到 Vim
。
这一点跟多数编辑器/IDE 都不同,因此 Vim 的默认设置其实很不顺手。
本文来分享一些个性化的配置方法,让 Vim 下的大小写敏感/不敏感用起来更加顺手。
比如当搜索词包含大写时应用大小写敏感搜索;其他情况应用大小写不敏感搜索。
以搜索词为 harttle 为例(省略了最后的回车):
/harttle\c
/harttle\C
s/harttle\c/Harttle
s/harttle\C/Harttle
:set ignorecase
:set noignorecase
:set smartcase
:set nosmartcase
最近遇到在 X11 下切换到 TTY 可以用 Ctrl+LeftAlt+Fn 或 Ctrl+RightAlt+Fn,但从 TTY 切换回 X11 只能使用 Ctrl+LeftAlt+Fn 的问题。 为了手感比较一致今晚解决了这个问题并记录在这里,希望能帮助遇到同样问题的人。
具体原因是 X11 下的键盘映射由 xkbmap 来管理,它默认提供了比较复杂的配置;但 VT 直接运行在内核上没有经过 X11 它的配置更直接和简单。
这两份配置的不同导致了在 VT 下 RightAlt 不能正确映射。
这里我们关心的是 keycode 到 keysym 的映射关系,
更过关于 scancode, keycode, keysym 的概念解释可以先参考
ArchLinux 键盘映射 的第一小节。
这个 keycode 到 keysym 的映射关系就是我们常说的 keymap,
就是装各种系统时要选的键盘布局。
所有的 keymap 都存在 /usr/share/dbd/keymaps
中:
find /usr/share/kbd/keymaps/ -type f
关键在于 X11 和 VT 中如何选择这些文件,其中每个 .map.gz 文件解压后得到的 .map 文件即为键盘布局文件。文件中的数字表示 keycode,Alt、Control 这样的词即为 keysym。
模逆元(modular multiplicative inverse)俗称模倒数,是指与原数的乘积和 1 同余的整数。即对于整数 $a$ 和 $n$:
\[ax \equiv 1 \mod(n)\]上式中 x 就是 a 对于 n 的模逆元,$a$ 与 $n$ 互质时模倒数存在,否则不存在。 它的数学意义是模倒数存在时,除以一个数和乘以它的模倒数同余,可以把除法转换为乘法。 这对于计算大数(10 以上)组合问题非常有效,适用于 Sherlock and Permutations 和 Matrix Tracing 等问题。 这类问题的都可以转化为组合问题 ${n \choose m}$,由于它的值通常会很大,我们只关心它对某个大质数 M(比如 $1e9 + 7$)的模:
\[{n \choose m} = C_n^m = \frac{n!}{m!(n-m)!} \mod{M}\]Linux 使用交换分区来休眠,首先冻结所有进程并申请足够的交换内存(位于磁盘),把当前内存都存进去。 然后下次启动时,initramfs 会直接加载上次休眠时的内存状态,跳过内核的 init 过程。 因此首先需要有足够大的交换分区或交换文件;再把内核指向到休眠的分区上;最后再配置 initramfs 让它加载休眠的内存文件。 官方文档请参考 Power_management/Suspend_and_hibernate#Hibernation, 本文细述如何休眠到交换文件,并对其中一些概念和细节进行了解释。
在本文讨论的范围内, 挂起(suspend)是指冻结当前的进程,保留它们的内存,并把几乎除了内存之外的设备都断电。 休眠(hibernate)是指把挂起后的内存写入磁盘并完全关机。 锁定(lock)则只是显示一个模态的全屏软件输入正确的密码才能退出。
最近发现我的 ArchLinux 每次解锁之后屏幕背光都会设置为最大,今晚终于有时间把它修复了。
写这篇文章介绍在 ArchLinux 下开机(Boot)和解锁(Resume)时,如何恢复此前的屏幕背光。
先解释背光控制的机制,再给如何入配置和调试。
本文以 MacBook Pro 2013 Late 为例(intel 显卡,xf86-video-intel
驱动)。
本文只解决背光恢复的问题,如果你的 Fn 功能键无法调整背光,请参考 在 MacBookPro 上安装 ArchLinux 中的“显示器/键盘背光”一节。