X session
startx
startx
命令会启动图形界面。但是因为startx
是以root
用户权限运行的,
副作用是把用户目录下的~/.Xauthority
的所有者变成root
。
以后该普通用户就没有登录成功登录了,表现症状为在登录界面输入用户名密码验证成功
以后又会跳回登录界面。
解决方案是修改~/.Xauthority
的所有者为当前用户:
sudo chown <groupname>:<username> .Xauthority
分享会话到多个用户
分享 X 会话。如果你需要频繁的(以不同用户身份)登入或登出桌面时,那就需要 startx
来救场。这个命令建立了一个新的会话从而避免了在一个会话中反复的登入和登出。为了
在X会话间进行交换,我们可以通过ctrl+Alt+F7
和ctrl+Alt+F8
的组合键来完成。
startx - :1
注意:快捷键ctrl+Alt+F1~F6
是为了控制台会话准备的,而ctrl+Alt+F7~F12
则为
X会话服务。因此我们有6个控制台会话和6个X会话,不需要频繁的登入登出。上面的顺序
适用于大多数的发行版,然而不同发行版可能会有不同的实现。我在Debian中尝试过,
运行的很好。
xvfb
在终端下虚拟一个X来运行图形界面程序:
xvfb-run firefox # 指定显示屏幕大小 xvfb-run --server-args="-screen 0 1024x768x24" node test.js
高分屏适配
GNOME 可以在Settings>Displays(设置>显示)
中开启 HiDPI 支持,以整数倍来调整屏幕比例。
也可以通过如下命令的来设置:
# scaling-factor 仅能设置为整数 1=100%,2=200% 3=300% ...... gsettings set org.gnome.desktop.interface scaling-factor 2
整数倍的缩放设置,在部分设备上 UI 元素要么显得过大,要么显得过小,因此我们需要进一步调整。
使用下面的命令查看你 Linux 设备上的 Window System(图形接口协议):
echo $XDG_SESSION_TYPE #通常是Wayland/X11
wayland
如果是 wayland,使用下面的命令启动实验性的非整数倍缩放功能。
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
之后再次打开Settings>Displays
,就可以选择非整数倍缩放(125%、150%、175%)。
Ubuntu20.04 已经在 Settings>Displays 中提供了图形化的界面来开启实验性的非整数倍
的缩放功能,因此无需通过上面的命令来开启。我试验下来,这种方式无法在我的设备上
正常设置非整数倍缩放。我判断是因为 Ubuntu20.04 默认的 Window System 是 X11
而不是 Wayland,如果你的设备上是 Wayland,应该是可以正常设置的。
或者你在登陆桌面系统时选择 Ubuntu On Wayland 理论上也是可以的。
X11
对于 X11,我们可以同时使用scaling-factor
和xrandr
来实现非整数倍缩放,这可以使
TTF 字体被正确缩放,防止单独使用 xrandr 时出现的模糊现象。你可以使用gsettings
或者在 Settings>Displays 中来指定放大系数,并用 xrandr 指定缩小系数。
首先将界面缩放系数设置为「UI看起来太大」的最小系数,通常是2
(200%),
如果不够大就继续尝试 3 甚至更大的系数。然后使用xrandr
来设置缩小系数,
我自己设置的是 1.25,如果 UI 看起来太大就提高系数,反之就降低系数。命令如下:
xrandr --output DP-4 --scale 1.25x1.25
使用上述命令你可能会遇到warning: output DP-4 not founnd; ignoring
的提示,
或者执行命令后界面无任何变化。此时你需要执行xrandr
命令来查看你的output
参数
(也就是当前显示接口的名称,日志中显示 connected 的就是),比如我设备上的是 DP-4。
正确执行完命令后可能会出现 UI 元素过小的情况,回去Settings>Displays
中看看,
是不是整数倍缩放被还原成了 100%,如果是重新选择合适的缩放比例即可(比如 200%)。
重启后 xrandr 的设置会失效,我们可以设置个启动自动执行的脚本,比如start-service.sh
:
# start-service.sh #!/bin/bash xrandr --output DP-4 --scale 1.25x1.25 exit 0
接着给start-service.sh
授予执行权限:
bash sudo chmod +x start-service.sh
然后在 Ubuntu 中搜索「sartup Applications」(启动应用程序) ,将脚本添加进去: 至此就能完美的支持 4K 屏显示了。