diff --git a/src/var/lib/apm/apm/files/ace-run b/src/var/lib/apm/apm/files/ace-run index 977de58..bbf518d 100755 --- a/src/var/lib/apm/apm/files/ace-run +++ b/src/var/lib/apm/apm/files/ace-run @@ -129,11 +129,12 @@ BASE_BIND_DIRS=( "--ro-bind-try /usr/share/fonts /usr/local/share/fonts" "--dev-bind-try /etc/resolv.conf /etc/resolv.conf" "--dev-bind-try /home /home" - "--dev-bind-try $HOME/.apm/${APM_PKG_NAME}/ $HOME/" + "--dev-bind-try $HOME/.apm/${APM_PKG_NAME}/.deepinwine $HOME/.deepinwine" ) # 沙盒模式下的额外绑定目录 SANDBOX_BIND_DIRS=( + "--dev-bind-try $HOME/.apm/${APM_PKG_NAME}/ $HOME/" "--dev-bind-try $(xdg-user-dir DESKTOP) $(xdg-user-dir DESKTOP)" "--dev-bind-try $(xdg-user-dir DOCUMENTS) $(xdg-user-dir DOCUMENTS)" "--dev-bind-try $(xdg-user-dir PICTURES) $(xdg-user-dir PICTURES)" diff --git a/src/var/lib/apm/apm/files/ace-run-bwrap b/src/var/lib/apm/apm/files/ace-run-bwrap deleted file mode 100755 index 166ec1a..0000000 --- a/src/var/lib/apm/apm/files/ace-run-bwrap +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/bash - -function bash(){ -/usr/bin/bash --rcfile <(cat ~/.bashrc; echo "PS1=\"\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@Amber-PM \[\e[36;40m\]\w\[\e[0m\]]\\\$ \"") $@ -} -export -f bash -function ensure_dir() { - local dir="$1" - - # 检查目录是否为空 - if [ -z "$dir" ]; then - echo "错误: 目录路径不能为空" - return 1 - fi - - # 检查目录是否存在 - if [ ! -d "$dir" ]; then - echo "目录 '$dir' 不存在,正在创建..." - if mkdir -p "$dir"; then - echo "成功创建目录 '$dir'" - return 0 - else - echo "错误: 无法创建目录 '$dir'" - return 1 - fi - else - return 0 - fi -} -chrootEnvPath="${chrootEnvPath:-$(pwd)/ace-env}" - -APM_PKG_NAME="${APM_PKG_NAME:-apm-general}" - -non_root_user=$(who | awk '{print $1}' | head -n 1) -uid=$(id -u $non_root_user) -ensure_dir $HOME/.apm/${APM_PKG_NAME}/.deepinwine - - - - -#### This part is for args pharm -if [ "$1" = "" ];then -container_command="bash" -else -container_command="$1" -shift -for arg in "$@"; do - arg="$(echo "${arg}x" | sed 's|'\''|'\'\\\\\'\''|g')" - arg="${arg%x}" - container_command="${container_command} '${arg}'" -done -fi -######################################################################################### -##########合成bwrap 1. 基础函数配置段 -# 初始化 EXEC_COMMAND 为 bwrap 基础指令 -EXEC_COMMAND="bwrap --dev-bind / / bwrap" - -# add_command 函数定义 -function add_command() { - # 参数拼接,考虑到转义和空格的处理 - for arg in "$@"; do - EXEC_COMMAND="${EXEC_COMMAND} ${arg}" - done -} - -function add_env_var() { - local var_name="${1}" - local var_value="${2}" - if [ "$var_value" != "" ]; then - add_command "--setenv $var_name $var_value" - - fi -} -##########合成bwrap 2. 特殊需求函数配置段 -function cursor_theme_dir_integration() { - -local directory="" -if [ "$(id -u)" = "0" ]; then #####We don't want bother root to install themes,but will try to fix the unwriteable issue - mkdir -p $chrootEnvPath/usr/share/icons - chmod 777 -R $chrootEnvPath/usr/share/icons - return -fi - -for directory in "/usr/share/icons"/*; do - # 检查是否为目录 - if [ -d "$directory" ]; then - # 检查目录中是否存在 cursors 文件 - if [ -d "$directory/cursors" ]; then - if [ -w $chrootEnvPath/usr/share/icons ];then - add_command "--ro-bind-try $directory $directory" - fi - fi - fi -done - - - - - - - -} -##########合成bwrap 3. 环境变量和目录绑定配置段 -# 添加环境变量和其他初始设置 -ENV_VARS=( - "FAKEROOTDONTTRYCHOWN 1" - "PULSE_SERVER /run/user/\$uid/pulse/native" - "PATH /amber-ce-tools/bin-override:\$PATH" - "IS_ACE_ENV 1" - "GTK_USE_PORTAL 1" - "XDG_DATA_DIRS /amber-ce-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS" -) - -BIND_DIRS=( - "--dev-bind $chrootEnvPath/ /" - "--dev-bind-try /media /media" - "--dev-bind-try /mnt /mnt" - "--dev-bind-try /tmp /tmp" - "--dev-bind-try /data /data" - "--dev-bind-try /dev /dev" - "--proc /proc" - "--dev-bind /sys /sys" - "--dev-bind /run /run" - "--dev-bind-try /run/user/\$uid/pulse /run/user/\$uid/pulse" - "--dev-bind / /host" - "--ro-bind-try /usr/share/themes /usr/local/share/themes" - "--ro-bind-try /usr/share/icons /usr/share/icons" - "--ro-bind-try /usr/share/fonts /usr/local/share/fonts" - "--dev-bind-try /etc/resolv.conf /etc/resolv.conf" - "--dev-bind-try /home /home" - "--dev-bind-try $HOME/.apm/${APM_PKG_NAME}/.deepinwine $HOME/.deepinwine" -) -EXTRA_ARGS=( - "--cap-add CAP_SYS_ADMIN" -) - -EXTRA_SCRIPTS=( -# cursor_theme_dir_integration -) - -##########合成bwrap 4. 合成并执行指令 -# 逐一添加到 EXEC_COMMAND -for var in "${ENV_VARS[@]}"; do - add_env_var $var -done - -for var in "${BIND_DIRS[@]}"; do - add_command "$var" -done - -for var in "${EXTRA_ARGS[@]}"; do - add_command "$var" -done - -for var in "${EXTRA_SCRIPTS[@]}"; do - $var -done - -# 添加最终的 bash 命令 -add_command "bash -c \"${container_command}\"" - -# 输出完整的 EXEC_COMMAND 以查看 -# echo "${EXEC_COMMAND}" - -# 注意: 实际执行时,请确保所有变量(如 $uid, $chrootEnvPath 等)都已正确定义 -eval ${EXEC_COMMAND} - - diff --git a/src/var/lib/apm/apm/files/ace-run-pkg b/src/var/lib/apm/apm/files/ace-run-pkg deleted file mode 100755 index 84d3f53..0000000 --- a/src/var/lib/apm/apm/files/ace-run-pkg +++ /dev/null @@ -1,143 +0,0 @@ -#!/bin/bash - -bash(){ -/usr/bin/bash --rcfile <(cat ~/.bashrc; echo "PS1=\"\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@Amber-PM \[\e[36;40m\]\w\[\e[0m\]]\\\$ \"") $@ -} -export -f bash - -chrootEnvPath="${chrootEnvPath:-$(pwd)/ace-env}" - - - -non_root_user=$(who | awk '{print $1}' | head -n 1) -uid=$(id -u $non_root_user) - - -#### This part is for args pharm -if [ "$1" = "" ];then -container_command="bash" -else -container_command="$1" -shift -for arg in "$@"; do - arg="$(echo "${arg}x" | sed 's|'\''|'\'\\\\\'\''|g')" - arg="${arg%x}" - container_command="${container_command} '${arg}'" -done -fi -######################################################################################### -##########合成bwrap 1. 基础函数配置段 -# 初始化 EXEC_COMMAND 为 bwrap 基础指令 -EXEC_COMMAND="bwrap --dev-bind / / bwrap" - -# add_command 函数定义 -function add_command() { - # 参数拼接,考虑到转义和空格的处理 - for arg in "$@"; do - EXEC_COMMAND="${EXEC_COMMAND} ${arg}" - done -} - -function add_env_var() { - local var_name="${1}" - local var_value="${2}" - if [ "$var_value" != "" ]; then - add_command "--setenv $var_name $var_value" - - fi -} -##########合成bwrap 2. 特殊需求函数配置段 -function cursor_theme_dir_integration() { - -local directory="" -if [ "$(id -u)" = "0" ]; then #####We don't want bother root to install themes,but will try to fix the unwriteable issue - mkdir -p $chrootEnvPath/usr/share/icons - chmod 777 -R $chrootEnvPath/usr/share/icons - return -fi - -for directory in "/usr/share/icons"/*; do - # 检查是否为目录 - if [ -d "$directory" ]; then - # 检查目录中是否存在 cursors 文件 - if [ -d "$directory/cursors" ]; then - if [ -w $chrootEnvPath/usr/share/icons ];then - add_command "--ro-bind-try $directory $directory" - fi - fi - fi -done - - - - - - - -} -##########合成bwrap 3. 环境变量和目录绑定配置段 -# 添加环境变量和其他初始设置 -ENV_VARS=( - "FAKEROOTDONTTRYCHOWN 1" - "PULSE_SERVER /run/user/\$uid/pulse/native" - "PATH /amber-ce-tools/bin-override:\$PATH" - "IS_ACE_ENV 1" - "GTK_USE_PORTAL 1" - "XDG_DATA_DIRS /amber-ce-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS" -) - -BIND_DIRS=( - "--dev-bind $chrootEnvPath/ /" - "--dev-bind-try /media /media" - "--dev-bind-try /root /root" - "--dev-bind-try /www /www" - "--dev-bind-try /mnt /mnt" - "--dev-bind-try /tmp /tmp" - "--dev-bind-try /data /data" - "--dev-bind-try /dev /dev" - "--proc /proc" - "--dev-bind /sys /sys" - "--dev-bind /run /run" - "--dev-bind-try /run/user/\$uid/pulse /run/user/\$uid/pulse" - "--dev-bind / /host" - "--dev-bind-try /etc/resolv.conf /etc/resolv.conf" - "--dev-bind-try /home /home" -) -EXTRA_ARGS=( - "--hostname Amber-PM" - "--unshare-uts" - "--cap-add CAP_SYS_ADMIN" -) - -EXTRA_SCRIPTS=( -# cursor_theme_dir_integration -) - -##########合成bwrap 4. 合成并执行指令 -# 逐一添加到 EXEC_COMMAND -for var in "${ENV_VARS[@]}"; do - add_env_var $var -done - -for var in "${BIND_DIRS[@]}"; do - add_command "$var" -done - -for var in "${EXTRA_ARGS[@]}"; do - add_command "$var" -done - -for var in "${EXTRA_SCRIPTS[@]}"; do - $var -done - -# 添加最终的 bash 命令 -add_command "bash -c \"${container_command}\"" - -# 输出完整的 EXEC_COMMAND 以查看 -# echo "${EXEC_COMMAND}" - -# 注意: 实际执行时,请确保所有变量(如 $uid, $chrootEnvPath 等)都已正确定义 -eval ${EXEC_COMMAND} - -