1212source ` dirname ${BASH_SOURCE[0]} ` /nspawn-polkit.sh
1313
1414
15+ # 必备软件包
16+ [ -f /bin/apt ] && [ ! -f /bin/machinectl ] && apt install -y systemd-container
17+ [ -f /bin/dnf ] && [ ! -f /bin/machinectl ] && dnf install -y systemd-container
18+ if [[ ` loginctl show-session $( loginctl | grep $SUDO_USER | awk ' {print $1}' ) -p Type` != * wayland* ]]; then
19+ [ -f /bin/pacman ] && [ ! -f /bin/xhost ] && pacman -S xorg-xhost --noconfirm --needed
20+ [ -f /bin/apt ] && [ ! -f /bin/xhost ] && apt install -y x11-xserver-utils
21+ [ -f /bin/dnf ] && [ ! -f /bin/xhost ] && dnf install -y xhost
22+ fi
23+
24+
1525# 初始化配置
26+ [ -f /bin/pacman ] && [ ! -f /bin/xhost ] && pacman -S xorg-xhost --noconfirm --needed
1627ln -sf /home/$SUDO_USER /.machines/deepin /var/lib/machines
1728rm -f /bin/deepin-*
1829
@@ -24,15 +35,7 @@ source `dirname ${BASH_SOURCE[0]}`/user-dirs.sh
2435# 配置容器
2536[[ $( machinectl list) =~ deepin ]] && machinectl stop deepin
2637mkdir -p /home/share && chmod 777 /home/share
27- if [[ ` loginctl show-session $( loginctl | grep $SUDO_USER | awk ' {print $1}' ) -p Type` != * wayland* ]]; then
28- [[ ! -f /etc/X11/xorg.conf || ! $( cat /etc/X11/xorg.conf | grep MIT-SHM) ]] && echo -e ' Section "Extensions"
29- Option "MIT-SHM" "Disable"
30- EndSection' >> /etc/X11/xorg.conf
31- fi
3238cat > /var/lib/machines/deepin/config.sh << EOF
33- echo -e 'Section "Extensions"
34- Option "MIT-SHM" "Disable"
35- EndSection' > /etc/X11/xorg.conf
3639[[ ! \$ (cat /etc/hosts | grep \$ HOSTNAME) ]] && echo "127.0.0.1 \$ HOSTNAME" >> /etc/hosts
3740/bin/sed -i 's/# en_US.UTF-8/en_US.UTF-8/g' /etc/locale.gen
3841/bin/sed -i 's/# zh_CN.UTF-8/zh_CN.UTF-8/g' /etc/locale.gen
5558chroot /var/lib/machines/deepin/ /bin/bash /config.sh
5659
5760
61+ # 禁用MIT-SHM
62+ source ` dirname ${BASH_SOURCE[0]} ` /xnoshm.sh deepin
63+
64+
5865# 配置启动环境变量
5966DESKTOP_ENVIRONMENT=
6067X11_BIND_AND_CONFIG=
@@ -78,9 +85,7 @@ cat > /bin/deepin-start <<EOF
7885$( echo " $DESKTOP_ENVIRONMENT " )
7986export XDG_RUNTIME_DIR=/run/user/\$ UID
8087export PULSE_SERVER=unix:\$ XDG_RUNTIME_DIR/pulse/native
81- export QT_X11_NO_MITSHM=1
82- export _X11_NO_MITSHM=1
83- export _MITSHM=0
88+ $( echo " $DISABLE_MITSHM " )
8489dex \$ @
8590EOF
8691
@@ -111,10 +116,11 @@ cat > /etc/systemd/system/systemd-nspawn@deepin.service.d/override.conf <<EOF
111116[Service]
112117ExecStartPost=systemd-nspawn-debug
113118ExecStart=
114- ExecStart=systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth -U --settings=override --machine=%i --drop-capability=CAP_IPC_OWNER -- setenv=LANGUAGE=zh_CN:zh --property=DeviceAllow='/dev/dri rw' --property=DeviceAllow='char-drm rwm' --property=DeviceAllow='char-input r'
119+ ExecStart=systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth -U --settings=override --machine=%i --setenv=LANGUAGE=zh_CN:zh --property=DeviceAllow='/dev/dri rw' --property=DeviceAllow='char-drm rwm' --property=DeviceAllow='/dev/shm rw ' --property=DeviceAllow='char-input r'
115120# GPU
116121DeviceAllow=/dev/dri rw
117122DeviceAllow=char-drm rwm
123+ DeviceAllow=/dev/shm rw
118124# Controller
119125DeviceAllow=char-input r
120126EOF
@@ -132,11 +138,10 @@ NVIDIA_BIND=$(bash -c 'echo -e "
132138Bind = /dev/nvidia0
133139Bind = /dev/nvidiactl
134140# OpenCL 与 CUDA
135- Bind = /dev/nvidia-uvm
136- Bind = /dev/nvidia-uvm-tools
141+ $([[ $(lsmod | grep nvidia_uvm) ]] && echo Bind = /dev/nvidia-uvm)
142+ $([[ $(lsmod | grep nvidia_uvm) ]] && echo Bind = /dev/nvidia-uvm-tools)
137143# Vulkan
138144Bind = /dev/nvidia-modeset
139- Bind = /dev/shm
140145 "' )
141146
142147
@@ -147,11 +152,10 @@ cat >> /etc/systemd/system/systemd-nspawn@deepin.service.d/override.conf <<EOF
147152DeviceAllow=/dev/nvidiactl rw
148153DeviceAllow=/dev/nvidia0 rw
149154# OpenCL 需要
150- DeviceAllow=/dev/nvidia-uvm rw
151- DeviceAllow=/dev/nvidia-uvm-tools rw
155+ $( [[ $( lsmod | grep nvidia_uvm ) ]] && echo DeviceAllow=/dev/nvidia-uvm rw)
156+ $( [[ $( lsmod | grep nvidia_uvm ) ]] && echo DeviceAllow=/dev/nvidia-uvm-tools rw)
152157# Vulkan 需要
153158DeviceAllow=/dev/nvidia-modeset rw
154- DeviceAllow=/dev/shm rw
155159EOF
156160fi
157161
@@ -170,6 +174,7 @@ BindReadOnly = /tmp/.X11-unix
170174
171175# GPU
172176Bind = /dev/dri
177+ Bind = /dev/shm
173178$( echo " $NVIDIA_BIND " )
174179# Controller
175180Bind = /dev/input
@@ -239,7 +244,7 @@ $(echo "$X11_BIND_AND_CONFIG")
239244# 启动环境变量
240245RUN_ENVIRONMENT="LANG=\$ LANG DISPLAY=\$ DISPLAY GTK_IM_MODULE=\$ GTK_IM_MODULE XMODIFIERS=\$ XMODIFIERS QT_IM_MODULE=\$ QT_IM_MODULE"
241246if [[ \$ (loginctl show-session \$ (loginctl | grep \$ USER |awk '{print \$ 1}') -p Type) == *wayland* ]]; then
242- RUN_ENVIRONMENT="\$ RUN_ENVIRONMENT WAYLAND_DISPLAY= \$ WAYLAND_DISPLAY XAUTHORITY=\$ XAUTHORITY"
247+ RUN_ENVIRONMENT="\$ RUN_ENVIRONMENT XAUTHORITY=\$ XAUTHORITY"
243248fi
244249EOF
245250
@@ -249,7 +254,11 @@ cat /bin/deepin-config
249254
250255# 查询应用
251256cat > /bin/deepin-query << EOF
252- machinectl shell deepin /bin/bash -c "ls /usr/share/applications"
257+ machinectl shell deepin /bin/su - u\$ UID -c "ls /usr/share/applications \
258+ && find /opt -name "*.desktop" \
259+ && echo && echo query inode/directory && xdg-mime query default inode/directory \
260+ && echo && echo query video/mp4 && xdg-mime query default video/mp4 \
261+ && echo && echo query audio/flac && xdg-mime query default audio/flac"
253262EOF
254263
255264chmod 755 /bin/deepin-query
@@ -383,7 +392,8 @@ chmod 755 /bin/deepin-ecloud
383392
384393# 安装文件管理器
385394cat > /bin/deepin-install-thunar << EOF
386- machinectl shell deepin /usr/bin/bash -c "apt update && apt install -y thunar catfish dbus-x11 --no-install-recommends && apt autopurge -y"
395+ machinectl shell deepin /usr/bin/bash -c "apt update && apt install -y thunar catfish dbus-x11 xdg-utils --no-install-recommends && apt autopurge -y"
396+ machinectl shell deepin /bin/su - u\$ UID -c "xdg-mime default Thunar.desktop inode/directory"
387397EOF
388398
389399chmod 755 /bin/deepin-install-thunar
@@ -449,4 +459,29 @@ source /bin/deepin-config
449459machinectl shell deepin /bin/su - u\$ UID -c "\$ RUN_ENVIRONMENT start /opt/apps/com.xunlei.download/entries/applications/com.xunlei.download.desktop"
450460EOF
451461
452- chmod 755 /bin/deepin-xunlei
462+ chmod 755 /bin/deepin-xunlei
463+
464+
465+
466+ # 安装MPV
467+ cat > /bin/deepin-install-mpv << EOF
468+ machinectl shell deepin /usr/bin/bash -c "apt update && apt install -y mpv --no-install-recommends && apt autopurge -y"
469+ EOF
470+
471+ chmod 755 /bin/deepin-install-mpv
472+
473+ # 启动MPV
474+ cat > /bin/deepin-mpv << EOF
475+ #!/bin/bash
476+ source /bin/deepin-config
477+ machinectl shell deepin /bin/su - u\$ UID -c "\$ RUN_ENVIRONMENT start /usr/share/applications/mpv.desktop"
478+ EOF
479+
480+ chmod 755 /bin/deepin-mpv
481+
482+
483+
484+ # 添加启动器
485+ machinectl start deepin && sleep 0.3
486+ [[ $( deepin-query | grep com.qq.im.deepin.desktop) ]] && [ ! -f /usr/share/applications/deepin-qq.desktop ] && deepin-install-qq
487+ [[ $( deepin-query | grep com.qq.weixin.deepin.desktop) ]] && [ ! -f /usr/share/applications/deepin-weixin.desktop ] && deepin-install-weixin
0 commit comments