持续更新中的稀奇古怪技巧
或许家家都有本难念的经,而在我的电脑上常常有些奇怪的问题或需求。为了这样的内容单独写一篇文章真的很逊,但如果不找个地方记下来又怕哪日再寻找时完全忘记了。
不如在这里将这些奇怪的内容整理在一个页面中,方便快速搜索查找。
Firefox强制启用阅读视图/打印简化版本
打印Firefox浏览器渲染的网页时,有时可以看到“格式”下存在一个 “精简” 选项,这个选项通常可以把网页的主要内容提炼出来,以紧凑的布局打印,效果还是很不错的。
然而,在有些网站上打开打印对话框时,并不能看到 “精简” 格式选项,这是因为,该选项实际上是先将网页渲染为Firefox的阅读视图再进行打印,而一部分网页并不能被Firefox自动识别并排版为阅读视图,自然无法打印。
那,我们能否强制Firefox不管结果,直接渲染网页为阅读试图呢?答案是肯定的。下面提供两种方法。不过,丑话说前头,这些方法都无法保证网页渲染结果正常,因此渲染成功后还需要自行检查格式和内容。
不修改设置不安装插件
在地址栏中,直接在整个URL最前面添加前缀:about:reader?url=
。例如,如果当前正在访问http://www.example.com/abc
,那么应当修改地址栏中的URL为:
1 | about:reader?url=http://www.example.com/abc |
此时,就可以强制将URL后的网页渲染成阅读视图。
修改Firefox设置
在Firefox中访问about:config
,搜索设置项reader.parse-on-load.force-enabled
,设置成true
(boolean),就可以让进入阅读模式的按钮一直出现在地址栏中。
打印
开心地按下Ctrl + P键打印吧。
QEMU/KVM便捷地创建桥接网络
有时候,我们希望把虚拟机暴露到局域网LAN中,方便局域网内其他机器访问。然而,在Debian系统上使用QEMU/KVM虚拟化技术,配合libvirt,其默认创建的default
网络是NAT模式的,不能满足以上要求。
目前网络上关于创建QEMU桥接网络的方法有很多,但通常很复杂,而且常常要求机器上有两个网卡。
问题在于,普通家用电脑上,通常很难找到两个同时连接到网络的网卡。
因此,这里推荐一种相对方便的,使用macvtap
的桥接网络创建方法。
宿主机创建macvtap网络接口
在宿主机上使用以下命令创建一个macvtap网络接口:
1 | nmcli connection add type macvlan dev eth0 mode bridge tap yes ifname macvtap0 |
其中,eth0
是连接到网络,也就是虚拟机希望桥接到的网络的物理网卡接口。ifname
后的macvtap0
是可以任意指定的接口名称。
再执行以下命令:
1 | nmcli connection modify macvlan-macvtap0 ipv6.method disabled |
根据前面接口名称的不同,modify
后面的连接名称可能也有差异。
重新启动以上网络连接。
1 | nmcli connection down macvlan-macvtap0 |
虚拟机连接到macvtap网络接口
打开virt-manager
界面,修改虚拟机网卡NIC设置,网络类型选择Macvtap device
。网络设备名称填写上面创建的接口名,例如macvtap0
。
保存后启动虚拟机,此时虚拟机就桥接连接到网卡所在网络中了。
宿主机和虚拟机的访问
macvtap
的一大局限是,默认配置下,宿主机不能和虚拟机通过此网卡通信。即便分配到了局域网地址,宿主机访问虚拟机的局域网地址也是不通的。
为了允许宿主机也可以和虚拟机通信,一种解决方法是,额外在虚拟机上创建一个NIC,并连接到默认的NAT连接上。
Gnome应用列表按字母表排序
至今,我依然没有弄明白,GNOME的应用列表里,图标究竟遵循了怎样的排序规律。
或许翻阅源代码可以弄明白,但或许也不需要了,因为我更习惯按应用名称字母表排序。想要设置按字母表排序,只需要在命令行中执行以下命令即可:
1 | gsettings set org.gnome.shell app-picker-layout "[]" |
Debian系统列出可升级软件包所含Bug
前不久,Debian Testing更新内核版本号至6.10,导致默认软件源中的NVIDIA驱动535版本DKMS模块无法正常编译,我意识到:原来Debian Testing作为桌面系统也会产生严重Bug啊!
大家都知道,Debian软件包上发现的Bug,都会在Debian bug tracking system里被跟踪,但在近乎滚动更新的Debian Testing上,一次更新可能超过200个软件包,不可能一个个手动分开查询。
我们可以使用apt-listbugs
工具完成这一操作。如果系统上没有,使用APT即可快速安装。
接着只需要执行以下命令,待更新的软件包中有哪些严重Bug就都知道了。
1 | apt-listbugs -s critical,grave,serious list $(apt list --upgradable 2>/dev/null | awk -F/ '{print $1}' | grep -v "Listing" | tr '\n' ' ') |
其中,-s
参数指定了查询的Bug严重程度,默认就是上例中的critical,grave,serious
,如果希望无论轻重列出所有Bug,只需要把这一串参数改成all
即可。$()
中的一大串是,将APT命令列出的可升级软件包列表格式化成apt-listbugs
可接受的空格列表。