wsl2配置桌面环境-kde

上一级页面:index-wsl

什么是KDE?

KDE 是一套由 Plasma 桌面环境、一系列的库、框架(KDE Frameworks)和一些应用组成的软件项目。KDE 上游有一份维护良好的 UserBase Wiki,在此可以找到大多数 KDE 应用的详细信息。

详见KDE (简体中文) - ArchWiki (archlinux.org)

安装依赖

1
2
sudo apt update
sudo apt -y upgrade

安装依赖

1
2
sudo apt install xserver-xorg 

安装 KDE

见官方的帮助wiki,如果你是kubuntu发行版,那么直接安装kubuntu-desktop,

kubuntu-desktop和kde-full等的区别,可以看这篇ubuntu20.04安装kde桌面环境 · 学校笔记 · 看云 (kancloud.cn)

参照wiki安装KDE - 社区帮助维基 (ubuntu.com)

kde-full 是 kde-standard 的超集,kubuntu-full 是 kubuntu-desktop 的超集,

但是 kubuntu-desktop 确实与 kde-standard 是分开的

kubuntu-desktop 与 kde-standard的区别是,

  • kubuntu最小补全了所有办公用的包,例如多了一个libreoffice,
  • kubuntu-desktop 包含一堆 ubuntu 特定的包,包括cups(打印机标准)和大量的打印机驱动以及其他硬件驱动(它们是ubuntu特有的)
  • kubuntu多了一套特有的全局主题(kubuntu-theme)

那么到底应该安装哪个呢?参考隔壁血统纯正的Arch,Arch上的kde分成了plasma和kde-applications两部分,后者是给kde的死忠粉准备的,包括kde的mail,calc等等

所以事情就很明朗了,正常情况下,不需要安装kde-applications(包括kde的mail,calc等),所以选择最小化安装,安装kde-plasma-desktop

标记依赖,准备卸载gnome

你的终端显示的是en_US.UTF-8

1
sudo apt-mark auto $(apt-cache depends kubuntu-desktop | grep -Po 'Depends:\s+\K[^ ]+$' | tr '\n' ' ')

你的终端显示的是zh_CN.UTF-8

1
sudo apt-mark auto $(apt-cache depends kubuntu-desktop | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')

这个命令的作用是将kubuntu-desktop包含的依赖全部标记为自动安装,这样可以用autoremove卸载

同理,标记其他的kde包

1
2
3
4
sudo apt-mark auto $(apt-cache depends kubuntu-desktop | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends kde-full | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends kde-standard | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends kde-plasma-desktop | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')

同理可以这样做,标记ubuntu-desktop的依赖为自动安装

1
2
sudo apt-mark auto $(apt-cache depends ubuntu-desktop | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')

继续处理gnome的依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

sudo apt-mark auto $(apt-cache depends gnome-core | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends desktop-base | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends network-manager-gnome | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends libproxy1-plugin-networkmanager | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends cheese | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends file-roller | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-calendar | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-clocks | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-color-manager | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-documents | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-getting-started-docs | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-maps | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-music | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends shotwell | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-photos | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-screenshot | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-todo | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-weather | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends orca | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends rygel-playbin | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends rygel-tracker | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends simple-scan | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends vino | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends avahi-daemon | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends evolution | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-sound-recorder | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-tweaks | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends libreoffice-gnome | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends libreoffice-writer | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends libreoffice-calc | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends libreoffice-impress | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends libgsf-bin | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends nautilus-sendto | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends rhythmbox | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends seahorse | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends vinagre | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends xdg-user-dirs-gtk | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends cups-pk-helper | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends evolution-plugins | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gedit-plugins | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gstreamer1.0-libav | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gstreamer1.0-plugins-ugly | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends rhythmbox-plugins | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends rhythmbox-plugin-cdrecorder | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends totem-plugins | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends nautilus-extension-brasero | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends gnome-games | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
sudo apt-mark auto $(apt-cache depends transmission-gtk | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')

在依赖管理上,若非必要,请勿卸载。替代方案是,尽量标记为自动安装

安装kde

添加源

1
2
sudo add-apt-repository ppa:kubuntu-ppa/backports
sudo apt-get update

安装kde-plasma-desktop

1
2
sudo apt-get install kde-plasma-desktop

Windows端启动 X Server,见:wsl2配置使用gui

安装过程中,可能会弹出窗口,要求配置显示管理器。选择“SDDM”选项。按下“Enter”键

Pasted%20image%2020220716153454.png

如果选错了,可以输入下列命令重新进入选择界面:

切换显示管理器:

1
sudo dpkg-reconfigure <Default_Display_Manager>

例如:

1
2
3
4
5
sudo dpkg-reconfigure gdm3

sudo dpkg-reconfigure lightdm

sudo dpkg-reconfigure sddm

选择你的显示器管理器。选择“sddm”选项。按下“Enter”键

更换之后更新依赖

1
2
sudo apt update
sudo apt upgrade

处理依赖(自动卸载)

此时更新依赖会提示你有大量的包可以自动卸载

1
2
sudo apt update
sudo apt upgrade

首先标记其中需要的包,例如

  • firefox需要保留,gwenview(图片查看器)需要保留
  • p7zip压缩软件,ark压缩文件管理器
  • konsole 终端模拟器和 dolphin 文件管理器
  • discover软件中心(packagekit、appstream )
  • ntfs-3g ,使系统可以识别 NTFS 格式的硬盘
  • discover支持snap,plasma-discover-snap-backend
  • Sweeper 可以清理系统中的用户使用记录,例如 Cookies 缓存等。
1
2
3
4
5
6
7
8
9
10
11
12
sudo apt install firefox 
sudo apt install gwenview
sudo apt install ark
sudo apt install ntfs-3g
sudo apt install dolphin
sudo apt install sweeper
#======
sudo apt install p7zip
sudo apt install konsole
sudo apt install packagekit appstream
sudo apt install plasma-discover-snap-backend

再更新一次依赖,确定其他的包都不需要了

1
2
sudo apt update
sudo apt upgrade

剩余的包可以进行卸载

1
sudo apt autoremove

卸载一些包

kde自带了一些小游戏和其他的一些包,可以按需卸载

1
2
3
4
5
6
# 小游戏
sudo apt-mark auto kmines kpat ksudoku kmahjongg
# wacom数位板扫描工具
sudo apt-mark auto kde-config-tablet
# elisa音乐播放器
sudo apt-mark auto elisa

修改默认运行级别为图形方式

查看开机默认运行级别:

1
systemctl get-default  

修改默认运行级别为图形方式:

1
systemctl set-default graphical.target
  • 注:如果不想用桌面了,记得卸载后切换会多用户方式
    1
    systemctl set-default multi-user.target

配置Dbus

1
sudo dpkg-reconfigure dbus

设置自动登录

SDDM 通过它的配置文件来支持自动登录,例如:

1
sudo mkdir /etc/sddm.conf.d/
1
2
3
4
5
# /etc/sddm.conf.d/autologin.conf

[Autologin]
User=john
Session=plasma.desktop

此配置使得在系统启动后自动以用户 john 开启一个 KDE Plasma 会话。X 的会话类型位于 /usr/share/xsessions/, wayland 的会话类型位于 /usr/share/wayland-sessions/

目前尚不支持自动登录 KDE Plasma 的同时锁定会话

你可以添加一个脚本,在 KDE 自动启动时激活屏幕保护程序以作为一个解决方案:

1
2
#!/bin/sh
/usr/bin/dbus-send --session --type=method_call --dest=org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock &

X-window 配置文件

详见:xprofile (简体中文) - ArchWiki (archlinux.org)

非常感谢原作者

Xsession ~/.xsession ~/.xsessionrc

  • 一些登入管理器会使用Xsession进行登入
1
2
3
4
GDM - /etc/gdm/Xsession
LightDM - /etc/lightdm/Xsession
LXDM - /etc/lxdm/Xsession
SDDM - /usr/share/sddm/scripts/Xsession
  • 有一些登录管理器像XDM就默认不使用Xsession而是使用 ~/.xsession 来进行登入的设置, 具体可以看这里
  • ~/.xsessionrc 只有debian分支才会使用的一个配置文件而且好像还要使用debian默认的登入管理器才会用到, 具体可以看看debian官方说明论坛介绍

有时候会用到Xsession,先记录下来。

启动 KDE

因为我们是在WSL2中运行,ssdm配置systemd后可以正常运行在后台,但是开机并不能正常弹出登录窗口。

我们改用使用控制台登录的方式,并且打一些补丁,步骤参考:KDE (简体中文) - ArchWiki (archlinux.org)

首先测试一下能否正常的运行kde,终端中运行命令:

1
2
export DESKTOP_SESSION=plasma
exec startplasma-x11

补丁修复,使得开机正常运行KDE

找到当前用户的配置文件,将下列命令写在配置文件中

1
export DESKTOP_SESSION=plasma

找到当前用户的配置文件,在启动脚本处编写下列的脚本

1
2
# start plasma on x11
sh $OH_MY_CONF/start-kde

新增一个脚本$OH_MY_CONF/start-kde,这里的$OH_MY_CONF是用户自己定义的

1
2
# OH_MY_CONF,为了设置兼容
export OH_MY_CONF=$ZDOTDIR
1
sudo vim $OH_MY_CONF/start-kde
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

pid_cnts=$(ps -ef | grep plasma | grep -v grep | awk '{print $2}' | wc -l)

if [ $pid_cnts -eq 0 ];then
exec startplasma-x11
else
# echo "count = $pid_cnts."
echo "kde(plasma) is running."
fi

此脚本的作用是让开机能够自动启动KDE

补丁修复,使得KDE的关机功能正常使用

参考KDE (简体中文) - ArchWiki (archlinux.org)

创建目录

1
2
sudo mkdir ~/.config/plasma-workspace
sudo mkdir ~/.config/plasma-workspace/shutdown

新增一个脚本在~/.config/plasma-workspace/shutdown文件夹中

1
sudo vim ~/.config/plasma-workspace/shutdown/shutdown-plasma-kde
1
2
3
4
#!/bin/bash

# 手动关机
sudo shutdown -h now

解决一些问题

参考Linux系统的抢救和维护(桌面篇) | 止息的博客 (zhangjk98.xyz)

禁用KDE自带的文件搜索baloo

1
balooctl disable

禁用桌面混成器

混成器(compositer)有OpenGL2、OpenGL3.1、xrender三个选项,混成器和显卡驱动设置不当经常会出一些小问题,比如Kwin屏幕撕裂、黑屏、卡死。如果你的鼠标卡住动不了了,可以在重启plasma之前禁用混成试试(默认的快捷键是Alt+Shift+F12)

对于混成器感兴趣可以看看fc老师的这篇博客:桌面系统的混成器简史,不过现在2021年了,wayland还是不建议日用

禁用自动启动上次会话

在kde的系统设置中搜索会话(开机和关机-> 桌面会话)

Pasted%20image%2020220716172653.png

卸载之前的一些桌面配置工具

kde自带了实现这些功能的工具,见Uniform look for Qt and GTK applications (简体中文) - ArchWiki (archlinux.org)GTK (简体中文) - ArchWiki (archlinux.org)

所以可以卸载下面这些工具了

1
2
3
sudo apt remove lxappearance
sudo apt remove qt5ct
sudo apt remove font-manger

桌面美化

以后再写

如何卸载KDE

卸载KDE

1
sudo apt remove kubuntu-desktop

自动卸载不必要的软件

1
sudo apt autoremove

系统清理

1
sudo apt clean

修复缺少的包

1
sudo apt -f install
1
sudo apt --fix-broken install

解决无法使用输入法

因为wsl2的x server在Windows端,并不在Linux端,所以有许多的配置问题,

首先需要设置DBUS_SESSION,与X server通信,以使用输入法

然后需要设置x server/x term/dpi

并且设置fcitx自启动

并且这些设置都应当所有用户有效并且shell非shell都有效

如果你使用zsh,详情见zsh的环境变量的加载-zprofile-zlogin-zshrc-zshenv

wsl2 xclient(注意 xserver在 windows端)并不只是包含 shell,它还要应用在图形界面,所以不能放在 sh rc文件里

并且可能会出现切换一个新的shell,然后运行x server,就是说它的配置不能只在login时生效一次,所以不能放在profile

所以只能放在/etc/zsh/.zshenv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ===========设置x server==============
# 由于wsl2的x server在Windows端,
# x server并不只是包含 shell,它还要应用在图形界面,所以不能放在 sh rc文件里
# 并且可能会出现切换一个新的shell,然后运行x server,就是说它的配置不能只在login时生效一次,所以不能放在profile
# 所以只能放在`/etc/zsh/.zshenv`
# =================================

# 设置DBUS_SESSION,与X server通信,以使用输入法
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
eval `dbus-launch --sh-syntax`
fi

# x server/x term/dpi
if [ -f $OH_MY_CONF/.Xresources ]; then
xrdb -merge -I$HOME $OH_MY_CONF/.Xresources
fi

# 设置fcitx自启动
fcitx-autostart &>/dev/null

参考、引用、致谢

(24条消息) Windows 10 WSL2 安装Linux Xfce图形界面_大鱼天的博客-CSDN博客_wsl2 xfce

https://autoize.com/xfce4-desktop-environment-and-x-server-for-ubuntu-on-wsl-2/

https://token2shell.com/howto/x410/customizing-xfce-desktop-for-ubuntu-wsl/

Xfce (简体中文) - ArchWiki (archlinux.org)

KDE (简体中文) - ArchWiki (archlinux.org)

Ubunu安装KDE桌面 - 知乎 (zhihu.com)

Linux7修改开机默认运行target级别_osalien的博客-CSDN博客_default.target