wsl2配置桌面环境-kde
上一级页面:index-wsl
什么是KDE?
KDE 是一套由 Plasma 桌面环境、一系列的库、框架(KDE Frameworks)和一些应用组成的软件项目。KDE 上游有一份维护良好的 UserBase Wiki,在此可以找到大多数 KDE 应用的详细信息。
详见KDE (简体中文) - ArchWiki (archlinux.org)
安装依赖
sudo apt update
sudo apt -y upgrade
安装依赖
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
sudo apt-mark auto $(apt-cache depends kubuntu-desktop | grep -Po 'Depends:\s+\K[^ ]+$' | tr '\n' ' ')
你的终端显示的是zh_CN.UTF-8
sudo apt-mark auto $(apt-cache depends kubuntu-desktop | grep -Po '依赖:\s+\K[^ ]+$' | tr '\n' ' ')
这个命令的作用是将kubuntu-desktop包含的依赖全部标记为自动安装,这样可以用autoremove卸载
同理,标记其他的kde包
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的依赖为自动安装
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的依赖
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
添加源
sudo add-apt-repository ppa:kubuntu-ppa/backports
sudo apt-get update
安装kde-plasma-desktop
sudo apt-get install kde-plasma-desktop
Windows端启动 X Server,见:wsl2配置使用gui
安装过程中,可能会弹出窗口,要求配置显示管理器。选择“SDDM”选项。按下“Enter”键
如果选错了,可以输入下列命令重新进入选择界面:
切换显示管理器:
sudo dpkg-reconfigure <Default_Display_Manager>
例如:
sudo dpkg-reconfigure gdm3
或
sudo dpkg-reconfigure lightdm
或
sudo dpkg-reconfigure sddm
选择你的显示器管理器。选择“sddm”选项。按下“Enter”键
更换之后更新依赖
sudo apt update
sudo apt upgrade
处理依赖(自动卸载)
此时更新依赖会提示你有大量的包可以自动卸载
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 缓存等。
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
再更新一次依赖,确定其他的包都不需要了
sudo apt update
sudo apt upgrade
剩余的包可以进行卸载
sudo apt autoremove
卸载一些包
kde自带了一些小游戏和其他的一些包,可以按需卸载
# 小游戏
sudo apt-mark auto kmines kpat ksudoku kmahjongg
# wacom数位板扫描工具
sudo apt-mark auto kde-config-tablet
# elisa音乐播放器
sudo apt-mark auto elisa
修改默认运行级别为图形方式
查看开机默认运行级别:
systemctl get-default
修改默认运行级别为图形方式:
systemctl set-default graphical.target
- 注:如果不想用桌面了,记得卸载后切换会多用户方式
systemctl set-default multi-user.target
配置Dbus
sudo dpkg-reconfigure dbus
设置自动登录
SDDM 通过它的配置文件来支持自动登录,例如:
sudo mkdir /etc/sddm.conf.d/
# /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 自动启动时激活屏幕保护程序以作为一个解决方案:
#!/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进行登入
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,终端中运行命令:
export DESKTOP_SESSION=plasma
exec startplasma-x11
补丁修复,使得开机正常运行KDE
找到当前用户的配置文件,将下列命令写在配置文件中
- 在zsh中是
$ZDOTDIR/.zshenv
,具体的路径见zsh的环境变量的加载-zprofile-zlogin-zshrc-zshenv
export DESKTOP_SESSION=plasma
找到当前用户的配置文件,在启动脚本处编写下列的脚本
- 在zsh中是
$ZDOTDIR/zprofile
,具体的路径见zsh的环境变量的加载-zprofile-zlogin-zshrc-zshenv
# start plasma on x11
sh $OH_MY_CONF/start-kde
新增一个脚本$OH_MY_CONF/start-kde
,这里的$OH_MY_CONF
是用户自己定义的
# OH_MY_CONF,为了设置兼容
export OH_MY_CONF=$ZDOTDIR
sudo vim $OH_MY_CONF/start-kde
#!/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)
创建目录
sudo mkdir ~/.config/plasma-workspace
sudo mkdir ~/.config/plasma-workspace/shutdown
新增一个脚本在~/.config/plasma-workspace/shutdown
文件夹中
sudo vim ~/.config/plasma-workspace/shutdown/shutdown-plasma-kde
#!/bin/bash
# 手动关机
sudo shutdown -h now
解决一些问题
参考Linux系统的抢救和维护(桌面篇) | 止息的博客 (zhangjk98.xyz)
禁用KDE自带的文件搜索baloo
balooctl disable
禁用桌面混成器
混成器(compositer)有OpenGL2、OpenGL3.1、xrender三个选项,混成器和显卡驱动设置不当经常会出一些小问题,比如Kwin屏幕撕裂、黑屏、卡死。如果你的鼠标卡住动不了了,可以在重启plasma之前禁用混成试试(默认的快捷键是Alt+Shift+F12)
对于混成器感兴趣可以看看fc老师的这篇博客:桌面系统的混成器简史,不过现在2021年了,wayland还是不建议日用
禁用自动启动上次会话
在kde的系统设置中搜索会话(开机和关机-> 桌面会话)
卸载之前的一些桌面配置工具
kde自带了实现这些功能的工具,见Uniform look for Qt and GTK applications (简体中文) - ArchWiki (archlinux.org)和GTK (简体中文) - ArchWiki (archlinux.org)
所以可以卸载下面这些工具了
sudo apt remove lxappearance
sudo apt remove qt5ct
sudo apt remove font-manger
桌面美化
以后再写
如何卸载KDE
卸载KDE
sudo apt remove kubuntu-desktop
自动卸载不必要的软件
sudo apt autoremove
系统清理
sudo apt clean
修复缺少的包
sudo apt -f install
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
# ===========设置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)