Linux桌面环境:平铺式的为什么&是什么
对于linux五花八门的桌面环境,在一众发行版中占主流地位的是Gnome和KDE。Gnome提供了完善的风格统一的桌面环境,KDE有着近似win的操作体验和与Gnome相比更简单的自定义。
在我使用archlinux做为我的主力系统的头两年中,我一直使用KDE。为了适应我的个人习惯和美化,我对其进行了大量的配置。但是作为一名CS学生,我常常需要面对编程+查资料+查看效果等3~4个窗口同时需要开启的情况,这让我小小的14寸笔记本显得非常局促。
直到我了解到了平铺式桌面Hyprland。平铺式的概念与经常见到的win、macos、Gnome和KDE的层叠式相反,它会让屏幕上所有的窗口在同一平面上铺展开来,窗口之间不会有层叠关系。这样做的好处就是不需要断掉原本的思路去翻找窗口在那一层;不需要双手离开键盘用鼠标与操作窗口。
Hyprland与Niri
严格来讲,Hyprland和Niri并不是桌面环境,只是其中的wm(windows manager)。他们都是平铺式的wm,但wm与wm之间亦有不同。
Hyprland以工作区为单位,每个屏幕占用一个工作区,一个工作区中有多个窗口。默认窗口打开时为全屏,打开新窗口时在水平或垂直方向上平分工作区。所以只要你想,可以打开许多窗口直到小到无法在屏幕上渲染出来。
Niri以行列为单位,每个工作区为一个窗口行,一个窗口行占用一个屏幕,窗口行内的窗口在本行中滚动。Niri开发时就考虑了多屏幕,每个屏幕都有独立的工作区,一个屏幕也可以有多个工作区。
对于我来说,我14寸的笔记本外接了一个15寸的便携屏,每个屏幕基本只开两个窗口,不会超过三个,所以niri比hyprland更适合我。并且我原有的hyprland的dotsfile配置是HyDE,一直有某些小bug,干脆趁更换dotsfile的机会叛逃到Niri了(。
Niri+DankMaterialShell安装配置
0.基础环境
我演示用的是2025-10-13安装的archlinux+KDE。带KDE是因为在安装过程中需要连接github和chromium.googlesource.com
,图形界面方便配置代理。如果你的网络条件良好或者有其他代理方式,minimal配置即可。
需要注意的是,音频系统请使用pipewire,否则可能有兼容性bug导致无法正常发生。基础包版本参考请见下方。
[ldsr@archlinux ~]$ paru -Q
abseil-cpp 20250814.1-1
accounts-qml-module 0.7-6
accountsservice 23.13.9-2
acl 2.3.2-1
adwaita-cursors 49.0-1
adwaita-fonts 49.0-2
adwaita-icon-theme 49.0-1
adwaita-icon-theme-legacy 46.2-3
aha 0.5.1-3
alsa-card-profiles 1:1.4.9-1
alsa-lib 1.2.14-1
alsa-topology-conf 1.2.5.1-4
alsa-ucm-conf 1.2.14-2
aom 3.13.1-1
appstream 1.1.1-1
appstream-qt 1.1.1-1
archlinux-appstream-data 20250825-1
archlinux-keyring 20250929-1
archlinuxcn-keyring 20250531-1
at-spi2-core 2.58.1-1
attica 6.19.0-1
attr 2.5.2-1
audit 4.0.5-1
aurorae 6.4.5-1
autoconf 2.72-1
automake 1.18.1-1
avahi 1:0.9rc2-1
baloo 6.19.0-1
base 3-2
base-devel 1-2
bash 5.3.3-2
binutils 2.45+r29+g2b2e51a31ec7-1
bison 3.8.2-8
blas 3.12.1-2
bluedevil 1:6.4.5-1
bluez 5.84-1
bluez-libs 5.84-1
bluez-qt 6.19.0-1
bolt 0.9.10-1
boost-libs 1.88.0-3
breeze 6.4.5-1
breeze-gtk 6.4.5-1
breeze-icons 6.19.0-1
brotli 1.1.0-3
btrfs-progs 6.17-1
bubblewrap 0.11.0-1
bzip2 1.0.8-6
ca-certificates 20240618-1
ca-certificates-mozilla 3.117-1
ca-certificates-utils 20240618-1
cairo 1.18.4-1
cblas 3.12.1-2
cdparanoia 10.2-9
cifs-utils 7.4-1
clinfo 3.0.23.01.25-1
convertlit 1.8-13
coreutils 9.8-2
cryptsetup 2.8.1-1
curl 8.16.0-1
dav1d 1.5.1-1
db5.3 5.3.28-5
dbus 1.16.2-1
dbus-broker 37-2
dbus-broker-units 37-2
dbus-units 37-2
dconf 0.49.0-1
ddcutil 2.2.1-1
debugedit 5.2-1
default-cursors 3-1
desktop-file-utils 0.28-1
device-mapper 2.03.35-1
diffutils 3.12-2
discount 3.0.0.d-1
discover 6.4.5-2
dmidecode 3.6-1
double-conversion 3.3.1-1
drkonqi 6.4.5-1
duktape 2.7.0-7
e2fsprogs 1.47.3-1
ebook-tools 0.2.2-9
editorconfig-core-c 0.12.10-1
efibootmgr 18-3
efivar 39-1
elfutils 0.193-5
exiv2 0.28.7-1
expat 2.7.3-1
fakeroot 1.37.1.2-1
fastfetch 2.53.0-1
ffmpeg 2:8.0-3
fftw 3.3.10-7
file 5.46-5
filesystem 2025.05.03-1
findutils 4.10.0-3
flac 1.5.0-1
flex 2.6.4-5
fontconfig 2:2.17.1-1
frameworkintegration 6.19.0-1
freeglut 3.6.0-2
freerdp 2:3.17.2-2
freetype2 2.14.1-1
fribidi 1.0.16-2
fuse-common 3.17.1-1
fuse2 2.9.9-5
fuse3 3.17.1-1
gawk 5.3.2-1
gc 8.2.8-2
gcc 15.2.1+r22+gc4e96a094636-1
gcc-libs 15.2.1+r22+gc4e96a094636-1
gdb 16.3-1
gdb-common 16.3-1
gdbm 1.26-1
gdk-pixbuf2 2.44.3-1
gettext 0.26-1
giflib 5.2.2-2
git 2.51.0-1
glib-networking 1:2.80.1-1
glib2 2.86.0-2
glibc 2.42+r17+gd7274d718e6f-1
glslang 1:1.4.328.1-1
glu 9.0.3-2
glycin 2.0.3-1
gmp 6.3.0-2
gnulib-l10n 20241231-1
gnupg 2.4.8-1
gnutls 3.8.10-1
gocryptfs 2.6.1-1
gperftools 2.17.2-1
gpgme 2.0.1-1
gpgmepp 2.0.0-2
gpm 1.20.7.r38.ge82d1a6-6
graphene 1.10.8-2
graphite 1:1.3.14-5
grep 3.12-2
groff 1.23.0-7
gsettings-desktop-schemas 49.0-1
gsettings-system-schemas 49.0-1
gsm 1.0.22-2
gst-plugins-base 1.26.6-3
gst-plugins-base-libs 1.26.6-3
gstreamer 1.26.6-3
gtest 1.17.0-1
gtk-update-icon-cache 1:4.20.2-3
gtk3 1:3.24.51-1
guile 3.0.10-1
gzip 1.14-2
harfbuzz 12.1.0-1
hicolor-icon-theme 0.18-1
hidapi 0.15.0-1
highway 1.3.0-1
hunspell 1.7.2-2
hwdata 0.400-1
hwloc 2.12.2-1
i2c-tools 4.4-2
iana-etc 20250612-1
icu 76.1-1
imath 3.2.2-1
iproute2 6.17.0-1
iptables 1:1.8.11-2
iputils 20250605-1
iso-codes 4.18.0-1
jansson 2.14.1-1
jasper 4.2.8-1
jbigkit 2.1-8
json-c 0.18-2
json-glib 1.10.8-1
jsoncpp 1.9.6-3
kaccounts-integration 25.08.2-1
kactivitymanagerd 6.4.5-1
karchive 6.19.0-1
kauth 6.19.0-1
kbd 2.9.0-1
kbookmarks 6.19.0-1
kcmutils 6.19.0-1
kcodecs 6.19.0-1
kcolorscheme 6.19.0-1
kcompletion 6.19.0-1
kconfig 6.19.0-1
kconfigwidgets 6.19.0-1
kcoreaddons 6.19.0-1
kcrash 6.19.0-1
kdbusaddons 6.19.0-1
kde-cli-tools 6.4.5-1
kde-gtk-config 6.4.5-2
kdeclarative 6.19.0-1
kdecoration 6.4.5-1
kded 6.19.0-1
kdeplasma-addons 6.4.5-1
kdesu 6.19.0-1
kdnssd 6.19.0-1
kdsoap-qt6 2.2.0-1
kdsoap-ws-discovery-client 0.4.0-1
keyutils 1.6.3-3
kfilemetadata 6.19.0-1
kglobalaccel 6.19.0-1
kglobalacceld 6.4.5-1
kguiaddons 6.19.0-1
kholidays 1:6.19.0-1
ki18n 6.19.0-1
kiconthemes 6.19.0-1
kidletime 6.19.0-1
kinfocenter 6.4.5-1
kio 6.19.0-1
kio-extras 25.08.2-1
kio-fuse 5.1.0-5
kirigami 6.19.0-1
kirigami-addons 1.10.0-1
kitemmodels 6.19.0-1
kitemviews 6.19.0-1
kjobwidgets 6.19.0-1
kmenuedit 6.4.5-1
kmod 34.2-1
knewstuff 6.19.0-1
knotifications 6.19.0-1
knotifyconfig 6.19.0-1
kpackage 6.19.0-1
kparts 6.19.0-1
kpipewire 6.4.5-2
kpty 6.19.0-1
kquickcharts 6.19.0-1
krb5 1.21.3-2
krdp 6.4.5-2
krunner 6.19.0-1
kscreen 6.4.5-2
kscreenlocker 6.4.5-1
kservice 6.19.0-1
ksshaskpass 6.4.5-1
kstatusnotifieritem 6.19.0-1
ksvg 6.19.0-1
ksystemstats 6.4.5-1
ktexteditor 6.19.0-1
ktextwidgets 6.19.0-1
kunitconversion 6.19.0-1
kuserfeedback 6.19.0-1
kwallet 6.19.0-1
kwallet-pam 6.4.5-1
kwayland 6.4.5-2
kwidgetsaddons 6.19.0-1
kwin 6.4.5-4
kwindowsystem 6.19.0-1
kwrited 6.4.5-1
kxmlgui 6.19.0-1
l-smash 2.14.5-4
lame 3.100-6
lapack 3.12.1-2
layer-shell-qt 6.4.5-4
lcms2 2.17-1
ldb 2:4.23.1-1
leancrypto 1.5.1-1
libaccounts-glib 1.27-3
libaccounts-qt 1.17-1
libarchive 3.8.1-1
libass 0.17.4-1
libassuan 3.0.0-1
libasyncns 1:0.8+r3+g68cd5af-3
libatasmart 0.19-7
libavc1394 0.5.4-7
libb2 0.98.1-3
libblockdev 3.3.1-1
libblockdev-crypto 3.3.1-1
libblockdev-fs 3.3.1-1
libblockdev-loop 3.3.1-1
libblockdev-mdraid 3.3.1-1
libblockdev-nvme 3.3.1-1
libblockdev-part 3.3.1-1
libblockdev-swap 3.3.1-1
libbluray 1.4.0-2
libbpf 1.5.1-1
libbs2b 3.1.0-9
libbsd 0.12.2-2
libbytesize 2.11-1
libcanberra 1:0.30+r2+gc0620e4-4
libcap 2.76-1
libcap-ng 0.8.5-3
libcloudproviders 0.3.6-2
libcolord 1.4.8-1
libcups 2:2.4.14-1
libdaemon 0.14-6
libdatrie 0.2.13-4
libdc1394 2.2.7-1
libdecor 0.2.3-1
libdeflate 1.24-1
libdisplay-info 0.3.0-1
libdmtx 0.7.8-1
libdovi 3.3.2-1
libdrm 2.4.126-1
libdvdnav 6.1.1-2
libdvdread 6.1.3-2
libebur128 1.2.6-2
libedit 20250104_3.1-1
libei 1.5.0-1
libelf 0.193-5
libepoxy 1.5.10-3
libevdev 1.13.4-1
libevent 2.1.12-4
libfdk-aac 2.0.3-1
libffi 3.5.2-1
libfontenc 1.1.8-1
libfreeaptx 0.2.2-1
libfyaml 0.9-1
libgcrypt 1.11.2-1
libglvnd 1.7.0-3
libgpg-error 1.56-1
libgudev 238-3
libice 1.1.2-1
libidn2 2.3.7-1
libiec61883 1.2.0-9
libimobiledevice 1.3.0-17
libimobiledevice-glue 1.3.2-1
libinih 61-1
libinput 1.29.1-1
libisl 0.27-1
libjpeg-turbo 3.1.2-1
libjxl 0.11.1-4
libkexiv2 25.08.2-1
libksba 1.6.7-2
libkscreen 6.4.5-2
libksysguard 6.4.5-1
liblc3 1.1.3-1
libldac 2.0.2.3-2
libldap 2.6.10-2
libmbim 1.32.0-1
libmd 1.1.0-2
libmm-glib 1.24.2-1
libmng 2.0.3-4
libmnl 1.0.5-2
libmodplug 0.8.9.0-6
libmpc 1.3.1-2
libmtp 1.1.22-1
libmysofa 1.3.3-1
libndp 1.9-1
libnetfilter_conntrack 1.0.9-2
libnewt 0.52.25-1
libnfnetlink 1.0.2-2
libnftnl 1.3.0-1
libnghttp2 1.67.1-1
libnghttp3 1.12.0-1
libnl 3.11.0-1
libnm 1.54.1-1
libnotify 0.8.7-1
libnsl 2.0.1-1
libnvme 1.15-1
libogg 1.3.6-1
libopenmpt 0.8.3-1
libp11-kit 0.25.10-2
libpcap 1.10.5-3
libpciaccess 0.18.1-2
libpgm 5.3.128-3
libpipewire 1:1.4.9-1
libplacebo 7.351.0-3
libplasma 6.4.5-2
libplist 2.7.0-1
libpng 1.6.50-1
libproxy 0.5.11-1
libpsl 0.21.5-2
libpulse 17.0+r43+g3e2bb8a1e-1
libqaccessibilityclient-qt6 0.6.0-1
libqalculate 5.7.0-1
libqmi 1.36.0-1
libqrtr-glib 1.2.2-4
libraw1394 2.1.2-4
librsvg 2:2.61.1-1
libsamplerate 0.2.2-3
libsasl 2.1.28-5
libseccomp 2.5.6-1
libsecret 0.21.7-1
libsm 1.2.6-1
libsndfile 1.2.2-3
libsodium 1.0.20-1
libsoup3 3.6.5-1
libsoxr 0.1.3-4
libssh 0.11.3-1
libssh2 1.11.1-1
libstemmer 3.0.1-1
libsysprof-capture 49.0-1
libtasn1 4.20.0-1
libteam 1.32-2
libthai 0.1.29-3
libtheora 1.2.0-1
libtiff 4.7.1-1
libtirpc 1.3.7-1
libtommath 1.3.0-1
libtool 2.6.0-1
libunibreak 6.1-1
libunistring 1.3-1
libunwind 1.8.2-1
liburing 2.12-1
libusb 1.0.29-1
libusbmuxd 2.1.1-1
libutempter 1.2.3-1
libva 2.22.0-1
libvdpau 1.5-3
libverto 0.3.2-5
libvorbis 1.3.7-4
libvpl 2.15.0-1
libvpx 1.15.2-2
libwacom 2.16.1-1
libwbclient 2:4.23.1-1
libwebp 1.6.0-2
libwireplumber 0.5.12-1
libx11 1.8.12-1
libxau 1.0.12-1
libxaw 1.0.16-1
libxcb 1.17.0-1
libxcomposite 0.4.6-2
libxcrypt 4.4.38-1
libxcursor 1.2.3-1
libxcvt 0.1.3-1
libxdamage 1.1.6-2
libxdmcp 1.1.5-1
libxext 1.3.6-1
libxfixes 6.0.2-1
libxfont2 2.0.7-1
libxft 2.3.9-1
libxi 1.8.2-1
libxinerama 1.1.5-2
libxkbcommon 1.11.0-1
libxkbcommon-x11 1.11.0-1
libxkbfile 1.1.3-1
libxml2 2.15.0-1
libxmlb 0.3.24-1
libxmu 1.2.1-1
libxpm 3.5.17-2
libxrandr 1.5.4-1
libxrender 0.9.12-1
libxshmfence 1.3.3-1
libxslt 1.1.43-2
libxt 1.3.1-1
libxtst 1.2.5-1
libxv 1.0.13-1
libxxf86vm 1.1.6-1
libzip 1.11.4-1
licenses 20240728-1
lilv 0.24.26-1
linux-api-headers 6.16-2
linux-firmware 20251011-1
linux-firmware-amdgpu 20251011-1
linux-firmware-atheros 20251011-1
linux-firmware-broadcom 20251011-1
linux-firmware-cirrus 20251011-1
linux-firmware-intel 20251011-1
linux-firmware-mediatek 20251011-1
linux-firmware-nvidia 20251011-1
linux-firmware-other 20251011-1
linux-firmware-radeon 20251011-1
linux-firmware-realtek 20251011-1
linux-firmware-whence 20251011-1
linux-zen 6.17.1.zen1-1
llvm-libs 20.1.8-1
lm_sensors 1:3.6.2-1
lmdb 0.9.33-1
lua 5.4.8-2
lv2 1.18.10-1
lz4 1:1.10.0-2
lzo 2.10-5
m4 1.4.20-1
make 4.4.1-2
md4c 0.5.2-1
mdadm 4.4-2
media-player-info 26-1
mesa 1:25.2.4-2
mesa-utils 9.0.0-7
milou 6.4.5-1
minizip 1:1.3.1-2
mkinitcpio 39.2-5
mkinitcpio-busybox 1.36.1-1
mobile-broadband-provider-info 20250613-1
modemmanager 1.24.2-1
modemmanager-qt 6.19.0-1
mpdecimal 4.0.1-1
mpfr 4.2.2-1
mpg123 1.33.2-1
mtdev 1.1.7-1
ncurses 6.5-4
nettle 3.10.2-1
networkmanager 1.54.1-1
networkmanager-qt 6.19.0-1
noto-fonts 1:2025.10.01-1
noto-fonts-emoji 1:2.051-1
npth 1.8-1
nspr 4.37-1
nss 3.117-1
ocean-sound-theme 6.4.5-1
ocl-icd 2.3.3-1
onetbb 2022.2.0-1
opencore-amr 0.1.6-2
opencv 4.12.0-11
openexr 3.4.1-1
openjpeg2 2.5.4-1
openssh 10.2p1-1
openssl 3.6.0-1
openxr 1.1.50-1
opus 1.5.2-1
orc 0.4.41-1
oxygen 6.4.5-1
oxygen-sounds 6.4.5-1
p11-kit 0.25.10-2
pacman 7.0.0.r6.gc685ae6-6
pacman-mirrorlist 20251003-1
pam 1.7.1-1
pambase 20250719-1
pango 1:1.57.0-2
parted 3.6-2
paru 2.1.0-1
patch 2.8-1
pciutils 3.14.0-1
pcre 8.45-4
pcre2 10.46-1
pcsclite 2.3.3-1
perl 5.42.0-1
perl-error 0.17030-2
perl-mailtools 2.22-2
perl-timedate 2.33-8
pinentry 1.3.2-2
pipewire 1:1.4.9-1
pipewire-audio 1:1.4.9-1
pipewire-jack 1:1.4.9-1
pipewire-pulse 1:1.4.9-1
pipewire-session-manager 1:1.4.9-1
pixman 0.46.4-1
pkgconf 2.5.1-1
plasma-activities 6.4.5-1
plasma-activities-stats 6.4.5-1
plasma-browser-integration 6.4.5-1
plasma-desktop 6.4.5-4
plasma-disks 6.4.5-1
plasma-firewall 6.4.5-1
plasma-integration 6.4.5-4
plasma-meta 6.4-4
plasma-nm 6.4.5-1
plasma-pa 6.4.5-1
plasma-systemmonitor 6.4.5-1
plasma-thunderbolt 6.4.5-1
plasma-vault 6.4.5-1
plasma-welcome 6.4.5-1
plasma-workspace 6.4.5-3
plasma-workspace-wallpapers 6.4.5-1
plasma5support 6.4.5-1
polkit 126-2
polkit-kde-agent 6.4.5-1
polkit-qt6 0.200.0-1
poppler 25.09.1-1
poppler-qt6 25.09.1-1
popt 1.19-2
portaudio 1:19.7.0-3
powerdevil 6.4.5-2
ppp 2.5.2-1
print-manager 1:6.4.5-1
prison 6.19.0-1
procps-ng 4.0.5-3
protobuf 32.1-1
psmisc 23.7-1
pulse-native-provider 1:1.4.9-1
pulseaudio-qt 1.7.0-1
purpose 6.19.0-1
python 3.13.7-1
python-certifi 2025.10.05-1
python-psutil 7.1.0-1
python-pygdbmi 0.11.0.0-5
python-sentry_sdk 2.41.0-1
python-urllib3 2.5.0-1
qca-qt6 2.3.10-3
qcoro 0.12.0-1
qqc2-breeze-style 6.4.5-1
qqc2-desktop-style 6.19.0-1
qrencode 4.1.1-4
qt6-5compat 6.10.0-1
qt6-base 6.10.0-1
qt6-declarative 6.10.0-1
qt6-imageformats 6.10.0-1
qt6-location 6.10.0-1
qt6-multimedia 6.10.0-1
qt6-multimedia-ffmpeg 6.10.0-1
qt6-positioning 6.10.0-1
qt6-quick3d 6.10.0-1
qt6-quicktimeline 6.10.0-1
qt6-sensors 6.10.0-1
qt6-shadertools 6.10.0-1
qt6-speech 6.10.0-1
qt6-svg 6.10.0-1
qt6-tools 6.10.0-1
qt6-translations 6.10.0-1
qt6-virtualkeyboard 6.10.0-1
qt6-webchannel 6.10.0-1
qt6-webengine 6.10.0-1
qt6-websockets 6.10.0-1
qt6-webview 6.10.0-1
qtkeychain-qt6 0.15.0-3
rav1e 0.8.1-2
re2 1:20240702-7
readline 8.3.001-1
ripgrep 14.1.1-1
ripgrep-all 0.10.9-1
rtkit 0.13-3
rubberband 4.0.0-1
sbc 2.1-1
sddm 0.21.0-6
sddm-kcm 6.4.5-1
sdl2-compat 2.32.56-2
sdl2_ttf 2.24.0-2
sdl3 3.2.24-1
sed 4.9-3
serd 0.32.4-1
shaderc 2025.4-2
shadow 4.18.0-1
shared-mime-info 2.4-2
signon-kwallet-extension 25.08.2-1
signon-plugin-oauth2 0.25-3
signon-ui 0.17+20231016-3
signond 8.61-3
slang 2.3.3-4
smartmontools 7.5-1
smbclient 2:4.23.1-1
snappy 1.2.2-2
socat 1.8.0.3-2
solid 6.19.0-1
sonnet 6.19.0-1
sord 0.16.18-1
sound-theme-freedesktop 0.8-6
source-highlight 3.1.9-15
spectacle 1:6.4.5-2
speex 1.2.1-2
speexdsp 1.2.1-2
spirv-tools 1:1.4.328.1-1
sqlite 3.50.4-2
sratom 0.6.18-1
srt 1.5.4-1
sudo 1.9.17.p1-1
svt-av1 3.1.2-1
syndication 6.19.0-1
syntax-highlighting 6.19.0-1
systemd 258-4
systemd-libs 258-4
systemd-sysvcompat 258-4
systemsettings 6.4.5-1
taglib 2.1.1-1
talloc 2.4.3-1
tar 1.35-2
tdb 1.4.14-1
tevent 1:0.17.1-1
texinfo 7.2-1
tinysparql 3.10.0-1
tpm2-tss 4.1.3-1
tslib 1.23-1
ttf-hack 3.003-7
tzdata 2025b-1
udisks2 2.10.2-1
upower 1.90.10-1
util-linux 2.41.2-1
util-linux-libs 2.41.2-1
v4l-utils 1.30.1-1
vapoursynth 72-1
verdict 1.4.4-1
vid.stab 1.1.1-2
vim 9.1.1841-1
vim-runtime 9.1.1841-1
vmaf 3.0.0-1
volume_key 0.3.12-11
vulkan-icd-loader 1.4.328.1-1
vulkan-tools 1.4.328.1-1
wayland 1.24.0-1
wayland-utils 1.2.0-2
webrtc-audio-processing-1 1.3-5
which 2.23-1
wireplumber 0.5.12-1
wpa_supplicant 2:2.11-3
x264 3:0.165.r3222.b35605a-2
x265 4.1-1
xcb-proto 1.17.0-3
xcb-util 0.4.1-2
xcb-util-cursor 0.1.6-1
xcb-util-image 0.4.1-3
xcb-util-keysyms 0.4.1-5
xcb-util-renderutil 0.3.10-2
xcb-util-wm 0.4.2-2
xdg-desktop-portal 1.20.3-2
xdg-desktop-portal-gtk 1.15.3-1
xdg-desktop-portal-kde 6.4.5-2
xdg-user-dirs 0.19-2
xdg-utils 1.2.1-1
xf86-input-libinput 1.5.0-1
xkeyboard-config 2.46-1
xorg-fonts-encodings 1.1.0-1
xorg-server 21.1.18-2
xorg-server-common 21.1.18-2
xorg-setxkbmap 1.3.4-2
xorg-xauth 1.1.4-1
xorg-xdpyinfo 1.4.0-1
xorg-xkbcomp 1.4.7-1
xorg-xmessage 1.0.7-1
xorg-xprop 1.2.8-1
xorg-xrdb 1.2.2-2
xorg-xset 1.2.5-2
xorg-xwayland 24.1.8-1
xorgproto 2024.1-2
xsettingsd 1.0.2-3
xvidcore 1.3.7-3
xxhash 0.8.3-1
xz 5.8.1-1
yyjson 0.12.0-1
zeromq 4.3.5-2
zimg 3.0.5-1
zix 0.6.2-1
zlib 1:1.3.1-2
zlib-ng 2.2.5-1
zram-generator 1.2.1-1
zstd 1.5.7-2
zxing-cpp 2.3.0-5
1.配置网络代理
paru -S steamcommunity302 # 或者使用yay
先通过aur安装
paru -S clash-verge
再安装clash,由于DankMaterialShell使用的框架quickshell-git需要google-breakpad依赖,必须通过代理连接chromium.googlesource.com
。
clash的使用不详细赘述。
由于clash和s302同时运行时可能出现问题,建议先开启clash提前安装google-breakpad和quickshell-git。
2.官方脚本一键安装
DankMaterialShell的仓库如下:
使用官方提供的一键安装脚本并根据引导选择:
curl -fsSL https://install.danklinux.com | sh
窗口管理器
选择niri
终端
推荐使用kitty或者ghostty,alacritty没有动态主题。我使用的是wezterm,因为支持自定义的字体回落,可惜部分动画有bug不能正确触发。这里以kitty为例。
依赖列表
全部安装即可
sudo验证
输入管理员权限密码
等待安装
手动安装依赖
在网络出现问题时可以手动安装依赖
sudo pacman -S kitty git niri xdg-desktop-portal-gtk mate-polkit xwayland-satellite cliphist wl-clipboard inter-font ttf-firacode-nerd
paru -S quickshell-git matugen-bin dgop ttf-material-symbols-variable-git
3.安装后配置
如果刚才顺利安装好,那么在你注销后选择niri会话登陆,那么就能看到这个界面了。
本地化
首先确保已生成中文的locale
sudo vim /etc/locale.gen
# 取消文件中英文和中文的注释
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
# 重新生成locale
sudo locale-gen
为了不影响tty中的编码,只对用户设置locale,不修改/etc/locale.conf
echo "LANG=zh_CN.UTF-8" > ~/.config/locale.conf
注销后重新登陆locale展示为zh_CN
[ldsr@archlinux ~]$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
dms也跟随locale自动加载了中文的翻译文件,部分属于由于还未抽取i18n所以展示为翻译。
输入法问题
niri只支持v3的wayland-ime,所以输入法问题参考以下对于linuxqq
包的配置
paru -Qs linuxqq
local/linuxqq 5:3.2.19_39038-1
New Linux QQ based on Electron
# 复制到用户目录
cp /usr/share/applications/qq.desktop ~/.local/share/applications/
vim ~/.local/share/applications/qq.desktop
[Desktop Entry]
Name=QQ
Exec=linuxqq --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-version=3 %U # 必须带v3的参数才能够使用
Terminal=false
Type=Application
Icon=qq
StartupWMClass=QQ
Categories=Network;
Comment=QQ
保存后可能需要dms restart
或者注销重新登陆或者重启来让niri或者dms重新读取配置。
自定义niri配置
这里主要修改屏幕和快捷键的配置来适合自己的习惯。
在221行开始的binds块中修改快捷键。
比如添加Mod+B的快捷键打开浏览器
Mod+B hotkey-overlay-title="Open Browser" { spawn "firefox"; }
你可以使用Mod+Shift+/来随时查看重要的快捷键,其他的快捷键就只能自行查看配置文件了。dms的开发者后续有想法开发一个图形化的设置快捷键的界面,期待中。。。
屏幕配置主要是配置分辨率刷新率、逻辑位置以及缩放。
这是我的配置,显示器的名称可以在终端中使用niri msg outputs,输出信息的括号中就是显示器的名字。
我配置笔记本屏幕eDP-1为基准,2倍缩放;外接屏幕HDMI-A-1的位置在笔记本屏幕上方,缩放1.2。进入niri会话时光标默认聚焦在内屏。
// You can configure outputs by their name, which you can find
// by running `niri msg outputs` while inside a niri instance.
// The built-in laptop monitor is usually called "eDP-1".
// Find more information on the wiki:
// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
// Remember to uncomment the node by removing "/-"!
output "eDP-1" {
mode "2880x1800@120.003"
position x=0 y=0
scale 2
variable-refresh-rate
focus-at-startup
}
output "HDMI-A-1"{
mode "1920x1080@60.000"
position x=0 y=-900
scale 1.2
variable-refresh-rate
}
Quickshell
dms默认将quickshell的界面代码安装在/etc/xdg/quickshell/dms下,我推荐在~/.config/quickshell/dms自行克隆一份DankMaterialShell来体验最新的开发特性。你也可以通过安装以下包来手工管理dms版本,配合手动pull拉取qml的开发,能够对自己的桌面环境有一个更好的掌握。
paru -S dms-shell-bin dms-shell-git dms-shell-niri-git
评论区