参考
https://www.cnblogs.com/blauendonau/p/14166062.html
配置脚本
bash
#!/bin/bash
# 安装xfce4并配置为systemd服务的脚本
# 适用于Ubuntu/WSL环境
echo "========================================"
echo "安装xfce4并配置为systemd服务脚本"
echo "========================================"
# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
echo "错误:请使用root用户运行此脚本"
echo "使用: sudo $0"
exit 1
fi
# 1. 更新包列表
echo "1. 更新包列表..."
apt update -y
if [ $? -ne 0 ]; then
echo "错误:更新包列表失败"
exit 1
fi
# 2. 安装xfce4和相关组件
echo "2. 安装xfce4和相关组件..."
apt install -y xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
if [ $? -ne 0 ]; then
echo "错误:安装xfce4失败"
exit 1
fi
# 3. 配置DISPLAY环境变量
echo "3. 配置DISPLAY环境变量..."
# 检查当前用户
CURRENT_USER=$(logname 2>/dev/null || echo "$SUDO_USER")
if [ -z "$CURRENT_USER" ]; then
CURRENT_USER="vin" # 默认用户
fi
# 配置DISPLAY环境变量到用户的.bashrc
DISPLAY_VAR="export DISPLAY=localhost:0.0"
if ! grep -q "$DISPLAY_VAR" /home/$CURRENT_USER/.bashrc; then
echo "$DISPLAY_VAR" >> /home/$CURRENT_USER/.bashrc
echo "已添加DISPLAY环境变量到 /home/$CURRENT_USER/.bashrc"
else
echo "DISPLAY环境变量已存在"
fi
# 4. 创建systemd服务文件
echo "4. 创建systemd服务文件..."
cat > /etc/systemd/system/xfce4.service << EOF
[Unit]
Description=Xfce4 Desktop Environment
After=network.target
[Service]
Type=simple
User=$CURRENT_USER
Environment=DISPLAY=localhost:0.0
ExecStart=/usr/bin/startxfce4
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
if [ $? -ne 0 ]; then
echo "错误:创建systemd服务文件失败"
exit 1
fi
# 5. 重新加载systemd配置
echo "5. 重新加载systemd配置..."
systemctl daemon-reload
# 6. 启用并启动xfce4服务
echo "6. 启用并启动xfce4服务..."
systemctl enable xfce4
systemctl start xfce4
# 7. 验证安装和配置
echo "7. 验证安装和配置..."
echo ""
echo "=== 验证结果 ==="
echo "- xfce4版本: $(xfwm4 --version | head -1)"
echo "- 服务状态: $(systemctl is-active xfce4)"
echo "- 服务启用状态: $(systemctl is-enabled xfce4)"
echo "- DISPLAY环境变量: $(grep -E '^export DISPLAY' /home/$CURRENT_USER/.bashrc)"
echo ""
# 8. 显示使用说明
echo "========================================"
echo "安装完成!"
echo "========================================"
echo "使用说明:"
echo "1. 启动xfce4服务:sudo systemctl start xfce4"
echo "2. 停止xfce4服务:sudo systemctl stop xfce4"
echo "3. 查看服务状态:sudo systemctl status xfce4"
echo "4. 直接运行xfce4:startxfce4"
echo ""
echo "注意:在WSL环境中,需要确保Windows宿主机已安装并运行X11服务器(如VcXsrv)"
echo "或者使用WSLg的RDP功能连接:mstsc /v:localhost:3390"
echo "========================================"
xfce4 无法显示 terminal ,配置默认程序 xfce terminal
Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: Timeout was reached

注意事项
xfce4 使用非root 账号
xfce4 使用非root 账号
xfce4 使用非root 账号
User=$CURRENT_USER
Environment=DISPLAY=localhost:0.0
指定窗口大小避免黑窗口问题


