Firefox的“刘海”真是越来越大了,垂直空间捉襟见肘.在userChrome.css
中添加下面的代码,可以在非全屏模式下也自动隐藏地址栏和书签栏(当光标移上去、按下Alt-D或处于新标签页时会重新出现),并让选项卡的高度缩小一点:
1 | :root[sessionrestored] |
效果如图:
Firefox的“刘海”真是越来越大了,垂直空间捉襟见肘.在userChrome.css
中添加下面的代码,可以在非全屏模式下也自动隐藏地址栏和书签栏(当光标移上去、按下Alt-D或处于新标签页时会重新出现),并让选项卡的高度缩小一点:
1 | :root[sessionrestored] |
效果如图:
偶然看到这个问题:为什么互为逆否的命题同真假? - 知乎,尝试证明如下:
1 | Definition excluded_middle_statement := forall (P : Prop), P \/ ~P. |
虽然过程很简单但还是记录一下.
crossdev
1 | # emerge -av sys-devel/crossdev |
然后先来建立一个 overlay,让crossdev
自动把生成的 ebuild 放在里面[1]:
1 | # mkdir -p /var/db/repos/cross-riscv64-linux-gnu/{profiles,metadata} |
这里的riscv64-linux-gnu
是Target Triple,后面还会用到.
注意如果用 Git 方式同步gentoo
源(或者其他Manifest
文件不含 ebuild 的校验码的方式),需要在layout.conf
里添加一行:
1 | echo 'thin-manifests = true' >> /var/db/repos/cross-riscv64-linux-gnu/metadata/layout.conf |
最后启用这个 overlay.在/etc/portage/repos.conf/crossdev.conf
中写入:
1 | [cross-riscv64-linux-gnu] |
执行以下命令安装工具链:
1 | # crossdev --stable --ex-gdb -t riscv64-linux-gnu -oS gentoo |
此处各个参数的含义如下:
--stable
表示安装稳定 keyword 的版本,不带--stable
会安装最新版(~*
);--ex-gdb
表示除了 GCC 等基本工具外还要安装 GDB;-t
指定 target triple,可以用crossdev -t help
列出合法的值;-oS
表示从哪些 overlay 里找 ebuild,这里指定gentoo
是因为crossdev
不知为什么默认会使用gentoo-zh
里的gdb
.可能会因为/etc/portage/package.mask
等配置文件存在但不是目录而失败,这时只要把它们转换成目录即可(创建同名目录,把原来的配置文件变成目录下的一个普通文件).
执行完该命令后会得到/usr/riscv64-linux-gnu
这个目录.
可以试着编译一个简单的程序:
1 | $ cd /tmp |
可以用 QEMU 来直接运行 riscv64 程序.首先要启用 QEMU 模拟 riscv64 架构的功能,比如在/etc/portage/package.use
中添加
1 | app-emulation/qemu qemu_softmmu_targets_riscv64 qemu_user_targets_riscv64 |
然后重新安装 QEMU:
1 | # emerge -av qemu |
现在可以试着运行上面编译的hello
程序:
1 | $ qemu-riscv64 -L /usr/riscv64-linux-gnu /tmp/hello |
听说不少人一放假就喜欢装黑苹果,然而手上并没有Hackintosh-friendly的机器的我,只能用重装Gentoo的方式来祭奠一下逝去的青春啦(悲)。
这里随便记录一些安装和配置过程中的琐事,便于日后查询。
持续更新中。
手贱把Nextcloud从17.0.2更新到了18.0.0 (Beta Channel),结果occ upgrade
的时候fail在下面这个错误上:
1 | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'entity' in 'where clause' |
幸而手动加上这一列以后就能正常完成更新了,顺带复习了一下SQL(逃
1 | ALTER TABLE "oc_flow_operation" ADD entity varchar(256) COLLATE utf8mb4_bin NOT NULL DEFAULT ''; |
P. S. GitHub上亦有此issue,看起来受影响的人还不少……见Issue while upgrading to 18 Beta1 (SQL, related to Flow) · Issue #18265 · nextcloud/server.
涉事笔记本系一台神舟Z7M-CT5NA,发行版为Arch Linux,或许也适用于其他症状相同的机器和/或发行版.
详细症状如下:
PM: hibernation entry
处.一番周折后开始考虑内核问题. 在archlinux_pkg_linux directory listing可以找到linux
这个包的所有历史版本. 用二分法可以锁定到是4.16.7版本的某些更新内容导致了唤醒失败,于是找到了这个页面:199747 – resume from hibernate results in kernel panic (bisected).
(报告人表示重启后Caps Lock狂闪,然而神舟的这台笔记本并没有键盘指示灯……)
网页上给出的一种解决方案是把intel_lpss_pci这个模块放在initramfs里面. 在Arch Linux上编辑/etc/mkinitcpio.conf
:
1 | MODULES=(... intel_lpss_pci ...) |
然后重新生成initramfs:
1 | # mkinitcpio -P |
重启后应该就可以正常唤醒了.
执行上述步骤可以正常唤醒,然而唤醒以后触摸板会死掉.
按照网页上的提示,需要在唤醒后重新加载intel_lpss_pci
这个模块。创建/etc/systemd/system/touchpad-after-resume.service
并添加以下内容:
1 | [Unit] |
然后启用这个unit.
1 | # systemctl enable touchpad-after-resume |
现在触摸板可以在唤醒后正常工作了,但是所有设置(滚动、单击、移动速度……)全都会被重置,只有在系统设置里把触摸板设置重新应用一次解决方案在下面:
Update 2020-01-19: 今天发现写在/etc/X11/xorg.conf.d/30-touchpad.conf
里的触摸板设置会在唤醒后(实际上应该是X重新检测到触摸板的时候)自动应用,所以只需要把相关设置放在这个文件里即可. 步骤如下:
xinput
,找到写有Touchpad之类字眼的那一行,记住id=后的数字;xinput list-props <id>
列出触摸板设置,重点关注与Default不一样的值;/etc/X11/xorg.conf.d/30-touchpad.conf
,写入如下内容:1 | Section "InputClass" |
然后参照libinput(4)
把触摸板设置翻译成Xorg配置文件的格式,填在…的地方就可以啦.