mirror of
https://gitee.com/amber-ce/amber-ce-bookworm.git
synced 2025-06-04 22:29:53 +08:00
Compare commits
45 Commits
Author | SHA1 | Date | |
---|---|---|---|
6246cf3c98 | |||
f169fee3ac | |||
1b2eaddb4d | |||
9071dbf2ff | |||
05c5b4a2b9 | |||
26dcf96d87 | |||
05e00b41f9 | |||
e99d4b5e58 | |||
5986f2d076 | |||
9eb23aa93f | |||
6b3ad3cc43 | |||
7c76c95dc4 | |||
8b7bc7f52a | |||
cae9256bdd | |||
3d88f051ce | |||
8eca27e209 | |||
d2c952a145 | |||
0f517db7db | |||
5ca843947e | |||
2a9cb4ea36 | |||
756373ad14 | |||
b3e870b610 | |||
a3ed194251 | |||
457a2a3f00 | |||
d2a53bb69c | |||
5b935202c9 | |||
67c2b1fc9e | |||
557fa8ed38 | |||
b0aa469684 | |||
905a642811 | |||
97fffcddd5 | |||
7b1a0d53ca | |||
f2605fb5a4 | |||
b9758bf888 | |||
745edd0c12 | |||
de34703e51 | |||
407a67fdeb | |||
c58ef6ac72 | |||
ce6feba217 | |||
90bf57d884 | |||
6ee00a33b2 | |||
ab64e78fa5 | |||
6162040d09 | |||
bfcd224c08 | |||
290623e263 |
README.mdREADME.zh.mdace-base.configbuild-pkg.sh
debian
changelogcn.flamescion.bookworm-compatibility-mode.postinstcn.flamescion.bookworm-compatibility-mode.postrmcontrolinstallrules
linker.shreplacer.shsrc
etc
X11/Xsession.d
profile.d
xdg/autostart
opt/apps
@PKG_NAME@
ACE logo.pngACE-transparent.pngACE-uninstaller-orig.png
files
amber-ce-tools
ace-host-integration
DEBIAN
etc/environment.d
opt/ace-host-integration
ace-upgrader
additional-data-dir-in-container
bin-override
@EXEC_NAME@README.mdbwrapgiohost-spawn-aarch64host-spawn-loongarch64host-spawn-x86_64pkexecsudoxdg-open
container-init
data-dir
bin
ace-gxde-fixerace-initace-runace-run-bwrapace-uninstall-helperace-uninstall-helper-guiamber-ce-configure-nvidia
build-container.shamber-ce-bookworm
usr
12
README.md
12
README.md
@ -24,6 +24,18 @@ Ubuntu 18.04 Need install https://packages.debian.org/buster/bubblewrap
|
||||
|
||||
Arch: `yay -S amber-ce-bookworm`
|
||||
|
||||
Usage: Run `bookworm-run` in host OS. You can also add command direct after `bookworm-run`
|
||||
|
||||
|
||||
## ACE x86
|
||||
|
||||
Only capable with ABI2 Distros(deepin/debian/AOSC OS)
|
||||
|
||||
Run an amd64 Debian Bookworm container via LATX
|
||||
|
||||
Command: bookworm-run-x86
|
||||
|
||||
https://share.spark-app.store/index.php?share/folder&user=1&sid=GnktisUQ
|
||||
|
||||
---
|
||||
|
||||
|
19
README.zh.md
19
README.zh.md
@ -20,11 +20,25 @@ Ubuntu 18.04 需要安装 https://packages.debian.org/buster/bubblewrap
|
||||
|
||||
Arch:`yay -S amber-ce-bookworm`
|
||||
|
||||
使用方法:在宿主机使用 bookworm-run 进入环境,亦可直接在 bookworm-run 后添加要执行的指令
|
||||
|
||||
## ACE x86
|
||||
|
||||
仅适用于龙芯新世界发行版(deepin/debian/AOSC OS)
|
||||
|
||||
安装后可在龙芯上依赖 LATX 运行一个 amd64 Debian Bookworm
|
||||
|
||||
使用方法: bookworm-run-x86
|
||||
|
||||
https://share.spark-app.store/index.php?share/folder&user=1&sid=GnktisUQ
|
||||
|
||||
---
|
||||
|
||||
|
||||
## 从源代码构建指南
|
||||
|
||||
|
||||
|
||||
### Debian
|
||||
|
||||
```
|
||||
@ -41,3 +55,8 @@ dpkg-buildpackage -us -uc -b
|
||||
`yay -S amber-ce-bookworm`
|
||||
|
||||
---
|
||||
|
||||
Single Build:
|
||||
|
||||
cp -r src/ pkg/
|
||||
./build-pkg.sh pkg/
|
4
ace-base.config
Normal file
4
ace-base.config
Normal file
@ -0,0 +1,4 @@
|
||||
@PKG_NAME@=amber-ce-bookworm
|
||||
@HOST_NAME@=Amber-CE-Bookworm
|
||||
@EXEC_NAME@=bookworm-run
|
||||
@PRETTY_NAME@=Bookworm
|
42
build-pkg.sh
Executable file
42
build-pkg.sh
Executable file
@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
# 安全读取配置文件的推荐方式
|
||||
read_config() {
|
||||
local config_file="$1"
|
||||
|
||||
# 检查文件是否存在
|
||||
if [ ! -f "$config_file" ]; then
|
||||
echo "Error: Config file $config_file not found" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 处理并加载配置
|
||||
source <(
|
||||
sed -nE '
|
||||
# 跳过注释和空行
|
||||
/^[[:space:]]*#/d # 删除注释行
|
||||
/^[[:space:]]*$/d # 删除空行
|
||||
# 转换 @VAR@=value 格式
|
||||
s/^@([^@]+)@=(.*)$/\1=\2/p
|
||||
' "$config_file"
|
||||
)
|
||||
}
|
||||
|
||||
pushd $(dirname $(realpath $0))
|
||||
read_config "ace-base.config"
|
||||
|
||||
# 访问变量
|
||||
echo "Package Name: $PKG_NAME"
|
||||
echo "Host Name: $HOST_NAME"
|
||||
echo "Executable Name: $EXEC_NAME"
|
||||
echo "Pretty Name: $PRETTY_NAME"
|
||||
|
||||
if [[ -z "$1" ]];then
|
||||
echo "Need TARGET DIR"
|
||||
exit
|
||||
fi
|
||||
target_dir="${1}" # 要处理的目标目录
|
||||
|
||||
bash replacer.sh ${target_dir}/
|
||||
bash linker.sh ${target_dir}/
|
||||
cd ${target_dir}/opt/apps/$PKG_NAME/files && bash build-container.sh $(uname -m)
|
||||
popd
|
17
debian/changelog
vendored
17
debian/changelog
vendored
@ -1,3 +1,20 @@
|
||||
amber-ce-bookworm (12.8.2) UNRELEASED; urgency=low
|
||||
* 通用 ACE 构建,现不再需要单独使用构建脚本
|
||||
* 更方便地更改成其他ACE
|
||||
* 现可在容器内使用 dpkg-buildpackage
|
||||
* 支持 Ubuntu 25 等 systemd 不再提供 utmp 的情景下获取当前用户名
|
||||
* 自动添加 X-AMBER-CE-DESKTOP-NAME
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Wed, 25 Sep 2024 23:15:49 +0800
|
||||
|
||||
amber-ce-bookworm (12.6.5) UNRELEASED; urgency=low
|
||||
* 修复 Arch 下无法在容器中使用 Bwrap
|
||||
* 修复 bwrap 下无法使用N卡加速
|
||||
* 修复 无法启动自动更新
|
||||
* 修复 绝对路径图标路径检查出错
|
||||
-- shenmo <shenmo@spark-app.store> Wed, 25 Sep 2024 23:15:49 +0800
|
||||
|
||||
|
||||
amber-ce-bookworm (12.6.2) UNRELEASED; urgency=low
|
||||
* fix: Can't pass args via bwrap
|
||||
* fix: Auto upgrade service always pop up upgradable notifier
|
||||
|
@ -19,16 +19,16 @@ fi
|
||||
/opt/apps/$PACKAGE_NAME/files/bin/ace-init
|
||||
|
||||
|
||||
if [ "${PACKAGE_NAME}" = "cn.flamescion.bookworm-compatibility-mode" ];then
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable ace-bookworm-auto-upgrade
|
||||
systemctl start ace-bookworm-auto-upgrade
|
||||
systemctl enable $PACKAGE_NAME-auto-upgrade
|
||||
systemctl start $PACKAGE_NAME-auto-upgrade
|
||||
# enable kernel.unprivileged_userns_clone
|
||||
# disable kernel.apparmor_restrict_unprivileged_unconfined and kernel.apparmor_restrict_unprivileged_userns
|
||||
if [ -f /usr/lib/sysctl.d/amber-ce.conf ];then
|
||||
sysctl -p /usr/lib/sysctl.d/amber-ce.conf
|
||||
if [ -f /usr/lib/sysctl.d/$PACKAGE_NAME.conf ];then
|
||||
sysctl -p /usr/lib/sysctl.d/$PACKAGE_NAME.conf
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
true
|
||||
|
@ -3,8 +3,8 @@ PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE"
|
||||
|
||||
if [ "${PACKAGE_NAME}" = "cn.flamescion.bookworm-compatibility-mode" ];then
|
||||
PACKAGE_NAME=amber-ce-bookworm # 为了后面正确清理
|
||||
systemctl stop ace-bookworm-auto-upgrade
|
||||
systemctl disable ace-bookworm-auto-upgrade
|
||||
systemctl stop $PACKAGE_NAME-auto-upgrade
|
||||
systemctl disable $PACKAGE_NAME-auto-upgrade
|
||||
fi
|
||||
|
||||
|
||||
|
1
debian/control
vendored
1
debian/control
vendored
@ -13,4 +13,5 @@ Package: cn.flamescion.bookworm-compatibility-mode
|
||||
Architecture: any
|
||||
Multi-Arch: foreign
|
||||
Depends: ${misc:Depends},bubblewrap,flatpak,zenity,policykit-1 | pkexec | polkit-1 | polkit,systemd,procps
|
||||
Conflicts: ace-host-integration
|
||||
Description: bwrap wrapper for install and running debs inside a bookworm container
|
||||
|
2
debian/install
vendored
2
debian/install
vendored
@ -1 +1 @@
|
||||
src/* /
|
||||
pkg/* /
|
9
debian/rules
vendored
9
debian/rules
vendored
@ -6,8 +6,13 @@
|
||||
dh $@
|
||||
|
||||
override_dh_auto_configure:
|
||||
cd src/opt/apps/amber-ce-bookworm/files && bash build-container.sh $(shell uname -m)
|
||||
rm -vfr pkg/
|
||||
cp -r src/ pkg/
|
||||
bash build-pkg.sh pkg/
|
||||
|
||||
override_dh_dwz:
|
||||
|
||||
override_dh_strip:
|
||||
override_dh_strip:
|
||||
|
||||
override_dh_clean:
|
||||
rm -vfr pkg/ && dh_clean
|
||||
|
35
linker.sh
Executable file
35
linker.sh
Executable file
@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
# 安全读取配置文件的推荐方式
|
||||
read_config() {
|
||||
local config_file="$1"
|
||||
|
||||
# 检查文件是否存在
|
||||
if [ ! -f "$config_file" ]; then
|
||||
echo "Error: Config file $config_file not found" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 处理并加载配置
|
||||
source <(
|
||||
sed -nE '
|
||||
# 跳过注释和空行
|
||||
/^[[:space:]]*#/d # 删除注释行
|
||||
/^[[:space:]]*$/d # 删除空行
|
||||
# 转换 @VAR@=value 格式
|
||||
s/^@([^@]+)@=(.*)$/\1=\2/p
|
||||
' "$config_file"
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
read_config "ace-base.config"
|
||||
|
||||
# 访问变量
|
||||
echo "Package Name: $PKG_NAME"
|
||||
echo "Host Name: $HOST_NAME"
|
||||
echo "Executable Name: $EXEC_NAME"
|
||||
echo "Pretty Name: $PRETTY_NAME"
|
||||
target_dir="${1}"
|
||||
mkdir ${target_dir}/usr/bin
|
||||
ln -vfs ../../opt/apps/$PKG_NAME/files/bin/ace-run ${target_dir}/usr/bin/$EXEC_NAME
|
||||
ln -vfs ../../opt/apps/$PKG_NAME/files/bin/amber-ce-configure-nvidia ${target_dir}/usr/bin/$PKG_NAME-configure-nvidia
|
92
replacer.sh
Normal file
92
replacer.sh
Normal file
@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
########################################
|
||||
# 配置部分
|
||||
########################################
|
||||
config_file="ace-base.config" # 配置文件路径
|
||||
if [[ -z "$1" ]];then
|
||||
echo "Need TARGET DIR"
|
||||
exit
|
||||
fi
|
||||
target_dir="${1}" # 要处理的目标目录
|
||||
|
||||
########################################
|
||||
# 读取 ace-base.config 生成替换字典
|
||||
########################################
|
||||
declare -A replacements
|
||||
|
||||
while IFS= read -r line; do
|
||||
# 跳过空行
|
||||
[[ -z "$line" ]] && continue
|
||||
|
||||
# 匹配类似 @PKG_NAME@=amber-ce-bookworm 的格式
|
||||
if [[ "$line" =~ ^@(.*)@=(.*)$ ]]; then
|
||||
key="${BASH_REMATCH[1]}"
|
||||
val="${BASH_REMATCH[2]}"
|
||||
replacements["$key"]="$val"
|
||||
fi
|
||||
done < "$config_file"
|
||||
|
||||
########################################
|
||||
# 第一步:文本文件内容替换
|
||||
########################################
|
||||
# 定义一个函数来判断文件是否是文本文件(示例仅供参考)
|
||||
is_text_file() {
|
||||
local f="$1"
|
||||
file --mime-type "$f" | grep -q "text/"
|
||||
}
|
||||
|
||||
# 查找所有文件,逐一判断是否文本类型,如果是则进行内容替换
|
||||
find "$target_dir" -type f -print0 | while IFS= read -r -d '' file; do
|
||||
if is_text_file "$file"; then
|
||||
for key in "${!replacements[@]}"; do
|
||||
# 用 sed 对文件内容进行替换
|
||||
sed -i "s|@$key@|${replacements[$key]}|g" "$file"
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
########################################
|
||||
# 第二步:先重命名文件
|
||||
########################################
|
||||
find "$target_dir" -type f -print0 | while IFS= read -r -d '' file; do
|
||||
# 拆分目录和文件名
|
||||
dir_path="$(dirname "$file")"
|
||||
filename="$(basename "$file")"
|
||||
|
||||
newfilename="$filename"
|
||||
for key in "${!replacements[@]}"; do
|
||||
newfilename="${newfilename//@$key@/${replacements[$key]}}"
|
||||
done
|
||||
|
||||
# 如果新文件名和原文件名不同,则执行重命名
|
||||
if [[ "$newfilename" != "$filename" ]]; then
|
||||
mv -v "$file" "$dir_path/$newfilename"
|
||||
fi
|
||||
done
|
||||
|
||||
########################################
|
||||
# 第三步:再重命名目录(由浅到深)
|
||||
########################################
|
||||
# 先按目录层级进行排序(层数少的先处理)
|
||||
# awk -F/ '{print NF, $0}' 会将路径按 / 分割并统计层数,然后 sort -n 升序,层数越小越先处理
|
||||
find "$target_dir" -type d | awk -F/ '{print NF, $0}' | sort -n | cut -d' ' -f2- | while IFS= read -r dir; do
|
||||
# 如果要连同最顶层目录一起改名,可以保留;若不需要改最顶层,可以加条件跳过
|
||||
# [ "$dir" = "$target_dir" ] && continue # 如需跳过顶层可取消注释
|
||||
|
||||
parent_path="$(dirname "$dir")"
|
||||
dirname_only="$(basename "$dir")"
|
||||
|
||||
newdirname="$dirname_only"
|
||||
for key in "${!replacements[@]}"; do
|
||||
newdirname="${newdirname//@$key@/${replacements[$key]}}"
|
||||
done
|
||||
|
||||
# 需要改名则执行
|
||||
if [[ "$newdirname" != "$dirname_only" ]]; then
|
||||
mv -v "$dir" "$parent_path/$newdirname"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
echo "处理完成!"
|
@ -10,7 +10,7 @@ fi
|
||||
|
||||
# Desktop files (used by desktop environments within both X11 and Wayland) are
|
||||
# looked for in XDG_DATA_DIRS; make sure it includes the relevant directory for ACE
|
||||
ACE_path="/opt/apps/amber-ce-bookworm/files/ace-env/flamescion-container-tools/data-dir/"
|
||||
ACE_path="/opt/apps/@PKG_NAME@/files/ace-env/amber-ce-tools/data-dir/"
|
||||
if [ -n "${XDG_DATA_DIRS##*${ACE_path}}" ] && [ -n "${XDG_DATA_DIRS##*${ACE_path}:*}" ]; then
|
||||
export XDG_DATA_DIRS="${XDG_DATA_DIRS}:${ACE_path}"
|
||||
fi
|
@ -9,7 +9,7 @@ fi
|
||||
|
||||
# Desktop files (used by desktop environments within both X11 and Wayland) are
|
||||
# looked for in XDG_DATA_DIRS; make sure it includes the relevant directory for ACE
|
||||
ACE_path="/opt/apps/amber-ce-bookworm/files/ace-env/flamescion-container-tools/data-dir/"
|
||||
ACE_path="/opt/apps/@PKG_NAME@/files/ace-env/amber-ce-tools/data-dir/"
|
||||
if [ -n "${XDG_DATA_DIRS##*${ACE_path}}" ] && [ -n "${XDG_DATA_DIRS##*${ACE_path}:*}" ]; then
|
||||
export XDG_DATA_DIRS="${XDG_DATA_DIRS}:${ACE_path}"
|
||||
fi
|
11
src/etc/xdg/autostart/@PKG_NAME@.ace-gxde-fixer.desktop
Normal file
11
src/etc/xdg/autostart/@PKG_NAME@.ace-gxde-fixer.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=@PKG_NAME@.ace-gxde-fixer
|
||||
Name[zh_CN]=@PKG_NAME@.ace-gxde-fixer
|
||||
Comment=@PKG_NAME@.ace-gxde-fixer
|
||||
Type=Application
|
||||
Exec=/opt/apps/@PKG_NAME@/files/bin/ace-gxde-fixer
|
||||
Icon=@PKG_NAME@
|
||||
Categories=System
|
||||
|
||||
# Generated from the DesktopGenerater component of the z-Tools toolkit
|
@ -1,11 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=bookworm.ace-gxde-fixer
|
||||
Name[zh_CN]=bookworm.ace-gxde-fixer
|
||||
Comment=bookworm.ace-gxde-fixer
|
||||
Type=Application
|
||||
Exec=/opt/apps/amber-ce-bookworm/files/bin/bookworm.ace-gxde-fixer
|
||||
Icon=amber-ce-bookworm
|
||||
Categories=System
|
||||
|
||||
# Generated from the DesktopGenerater component of the z-Tools toolkit
|
Before ![]() (image error) Size: 196 KiB After ![]() (image error) Size: 196 KiB ![]() ![]() |
Before ![]() (image error) Size: 134 KiB After ![]() (image error) Size: 134 KiB ![]() ![]() |
Before ![]() (image error) Size: 118 KiB After ![]() (image error) Size: 118 KiB ![]() ![]() |
@ -5,4 +5,5 @@ Priority: optional
|
||||
Depends: bash
|
||||
Maintainer: shenmo <shenmo@spark-app.store>
|
||||
Architecture: all
|
||||
Conflicts: @PKG_NAME@
|
||||
Description: ace-host-integration
|
98
src/opt/apps/@PKG_NAME@/files/amber-ce-tools/ace-host-integration/opt/ace-host-integration/ace-host-integration
Executable file
98
src/opt/apps/@PKG_NAME@/files/amber-ce-tools/ace-host-integration/opt/ace-host-integration/ace-host-integration
Executable file
@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
# ===== Log =====
|
||||
# log.info xxx
|
||||
# log.warn xxx
|
||||
# log.info xxx
|
||||
# log.debug xxx
|
||||
# 带颜色的echo
|
||||
function log.color_output() {
|
||||
local color=$1
|
||||
shift 1
|
||||
|
||||
echo >&2 -e "\033[${color}m$@\033[0m"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Log is named without prefix "utils." for convenience
|
||||
# Usage: log.log <level> ...content
|
||||
function log.log() {
|
||||
if [[ $# < 2 ]]; then
|
||||
return -1
|
||||
fi
|
||||
|
||||
local level=$1
|
||||
shift 1
|
||||
|
||||
case $level in
|
||||
error) log.color_output "0;31" "[ERROR] $@" ;;
|
||||
warn) log.color_output "1;33" "[WARN] $@" ;;
|
||||
info) log.color_output "1;37" "[INFO] $@" ;;
|
||||
debug) log.color_output "1;30" "[DEBUG] $@" ;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function log.error() { log.log "error" "$@"; }
|
||||
function log.warn() { log.log "warn" $@; }
|
||||
function log.info() { log.log "info" $@; }
|
||||
function log.debug() { log.log "debug" $@; }
|
||||
|
||||
function do_integrate(){
|
||||
local file=$1
|
||||
if [ -f "$file" ]; then
|
||||
# 获取文件名(不带.desktop后缀)作为X-AMBER-CE-DESKTOP-NAME的值
|
||||
local desktop_name=$(basename "$file" .desktop)
|
||||
|
||||
# 检查是否已经处理过(通过检查X-AMBER-CE-DESKTOP-NAME字段)
|
||||
if ! grep -q "^X-AMBER-CE-DESKTOP-NAME=" "$file"; then
|
||||
echo "$file is detected. Processing host system integration..."
|
||||
|
||||
# 修改Exec行(如果尚未修改)
|
||||
if ! grep -q "^Exec=@EXEC_NAME@ " "$file"; then
|
||||
sed -i 's|^Exec=\(.*\)|Exec=@EXEC_NAME@ \1|' "$file"
|
||||
fi
|
||||
|
||||
# 删除TryExec行
|
||||
sed -i '/^TryExec=/d' "$file"
|
||||
|
||||
# 修改Name行(包括本地化Name)
|
||||
sed -i '/^Name=/ s/$/ (@PRETTY_NAME@)/' "$file"
|
||||
sed -i "/^Name\[${LANGUAGE}\]=/ s/\$/ (@PRETTY_NAME@)/" "$file"
|
||||
|
||||
# 修改GenericName行(包括本地化GenericName)
|
||||
sed -i '/^GenericName=/ s/$/ (@PRETTY_NAME@)/' "$file"
|
||||
sed -i "/^GenericName\[${LANGUAGE}\]=/ s/\$/ (@PRETTY_NAME@)/" "$file"
|
||||
|
||||
# 添加X-AMBER-CE-DESKTOP-NAME字段
|
||||
echo "X-AMBER-CE-DESKTOP-NAME=${desktop_name}" >> "$file"
|
||||
|
||||
# 处理Icon行
|
||||
icon_line=$(grep "^Icon=" "$file")
|
||||
if [[ "$icon_line" == "Icon=/"* ]]; then
|
||||
# 如果Icon=后面接的是/,则添加前缀
|
||||
sed -i 's|^Icon=/|Icon=/opt/apps/@PKG_NAME@/files/ace-env/|' "$file"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
chmod +x "$file"
|
||||
}
|
||||
|
||||
if [ "${IS_ACE_ENV}" != "" ]; then
|
||||
if [ -e /opt/apps/ ]; then
|
||||
for app_dir in $(ls /opt/apps/); do
|
||||
for file in /opt/apps/$app_dir/entries/applications/*.desktop; do
|
||||
do_integrate "$file"
|
||||
done
|
||||
done
|
||||
else
|
||||
log.warn "No /opt/apps directory. Skip..."
|
||||
fi
|
||||
|
||||
for file in /usr/share/applications/*.desktop; do
|
||||
do_integrate "$file"
|
||||
done
|
||||
find "/usr/share/applications/" -xtype l -delete
|
||||
else
|
||||
log.error "DO NOT run me on host OS"
|
||||
fi
|
@ -167,10 +167,10 @@ fi
|
||||
|
||||
user=$(who | awk '{print $1}' | head -n 1)
|
||||
|
||||
log.info "ACE Bookworm环境中有 $update_app_number 个软件包可升级,正在自动升级"
|
||||
notify-send -a amber-ce-bookworm "ACE兼容环境" "ACE环境中有${update_app_number}个软件包可升级,执行自动升级..."
|
||||
log.info "ACE @PRETTY_NAME@ 环境中有 $update_app_number 个软件包可升级,正在自动升级"
|
||||
notify-send -a @PKG_NAME@ "ACE @PRETTY_NAME@" "ACE @PRETTY_NAME@环境中有${update_app_number}个软件包可升级,执行自动升级..."
|
||||
|
||||
${APT_COMMAND} clean
|
||||
${APT_COMMAND} full-upgrade -y
|
||||
${APT_COMMAND} clean
|
||||
notify-send -a amber-ce-bookworm "ACE兼容环境" "自动升级结束"
|
||||
notify-send -a @PKG_NAME@ "ACE兼容环境" "自动升级结束"
|
2
src/opt/apps/@PKG_NAME@/files/amber-ce-tools/bin-override/bwrap
Executable file
2
src/opt/apps/@PKG_NAME@/files/amber-ce-tools/bin-override/bwrap
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
host-spawn /opt/apps/@PKG_NAME@/files/bin/ace-run-bwrap "$@"
|
@ -2,5 +2,5 @@
|
||||
if [ "$UID" = "0" ];then
|
||||
$@
|
||||
else
|
||||
host-spawn pkexec bookworm-run $@
|
||||
host-spawn pkexec @EXEC_NAME@ $@
|
||||
fi
|
6
src/opt/apps/@PKG_NAME@/files/amber-ce-tools/bin-override/sudo
Executable file
6
src/opt/apps/@PKG_NAME@/files/amber-ce-tools/bin-override/sudo
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
if [ "$UID" = "0" ];then
|
||||
/usr/bin/sudo $@
|
||||
else
|
||||
host-spawn sudo @EXEC_NAME@ sudo env IS_ACE_ENV="1" PATH="/amber-ce-tools/bin-override:$PATH" "$@"
|
||||
fi
|
@ -116,15 +116,19 @@ mkdir -p /usr/share/icons
|
||||
mkdir -p /usr/share/themes
|
||||
|
||||
## init host-spawn
|
||||
unlink /flamescion-container-tools/bin-override/host-spawn
|
||||
ln -sfv /flamescion-container-tools/bin-override/host-spawn-$(uname -m) /flamescion-container-tools/bin-override/host-spawn
|
||||
unlink /amber-ce-tools/bin-override/host-spawn
|
||||
ln -sfv /amber-ce-tools/bin-override/host-spawn-$(uname -m) /amber-ce-tools/bin-override/host-spawn
|
||||
|
||||
## install host-integration
|
||||
pushd /amber-ce-tools/ace-host-integration
|
||||
|
||||
apt install --reinstall /flamescion-container-tools/ace-host-integration.deb
|
||||
dpkg-deb -Z xz -b . ../ace-host-integration.deb
|
||||
|
||||
popd
|
||||
apt install --reinstall /amber-ce-tools/ace-host-integration.deb -y
|
||||
|
||||
|
||||
cd /flamescion-container-tools/data-dir/
|
||||
cd /amber-ce-tools/data-dir/
|
||||
ln -sfv ../../usr/share/applications/ .
|
||||
ln -sfv ../../usr/share/icons/ .
|
||||
#ln -svf ../../usr/share/mime .
|
7
src/opt/apps/@PKG_NAME@/files/bin/ace-gxde-fixer
Executable file
7
src/opt/apps/@PKG_NAME@/files/bin/ace-gxde-fixer
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
if [ "$UID" != "0" ];then
|
||||
pkexec $0
|
||||
exit
|
||||
fi
|
||||
|
||||
@EXEC_NAME@ /opt/ace-host-integration/ace-host-integration
|
@ -11,6 +11,7 @@ pparent_dir=`dirname $parent_dir`
|
||||
ppparent_dir=`dirname $pparent_dir`
|
||||
PKGNAME=`basename $ppparent_dir`
|
||||
else
|
||||
|
||||
PKGNAME=$PACKAGE_NAME
|
||||
fi
|
||||
chrootEnvPath=/opt/apps/$PKGNAME/files/ace-env
|
||||
@ -19,23 +20,28 @@ echo "Uncompress the env...."
|
||||
tar -xvf $chrootEnvPath.tar.xz -C /opt/apps/$PKGNAME/files/
|
||||
fi
|
||||
|
||||
HERE="$(dirname $(realpath $0))"
|
||||
|
||||
function get_current_user() {
|
||||
# 优先通过 who 命令获取用户
|
||||
local user
|
||||
user=$(get_current_user 2>/dev/null)
|
||||
|
||||
non_root_user=$(who | awk '{print $1}' | head -n 1)
|
||||
# 如果 who 无输出,则通过 loginctl 获取
|
||||
if [[ -z "$user" ]]; then
|
||||
user=$(loginctl list-sessions --no-legend 2>/dev/null | awk '{print $3}' | head -n 1)
|
||||
fi
|
||||
|
||||
# 返回最终结果(可能为空)
|
||||
echo "${user}"
|
||||
}
|
||||
non_root_user=$(get_current_user)
|
||||
uid=$(id -u $non_root_user)
|
||||
|
||||
function bookworm-run(){
|
||||
bwrap --dev-bind $chrootEnvPath/ / \
|
||||
--setenv LANG "$LANG" \
|
||||
--setenv LC_COLLATE "$LC_COLLATE" \
|
||||
--setenv LC_CTYPE "$LC_CTYPE" \
|
||||
--setenv LC_MONETARY "$LC_MONETARY" \
|
||||
--setenv LC_MESSAGES "$LC_MESSAGES" \
|
||||
--setenv LC_NUMERIC "$LC_NUMERIC" \
|
||||
--setenv LC_TIME "$LC_TIME" \
|
||||
--setenv LC_ALL "$LC_ALL" \
|
||||
--setenv PULSE_SERVER /run/user/$uid/pulse/native \
|
||||
--setenv PATH /flamescion-container-tools/bin-override:$PATH \
|
||||
--setenv PATH /amber-ce-tools/bin-override:$PATH \
|
||||
--setenv IS_ACE_ENV "1" \
|
||||
--dev-bind-try /media /media \
|
||||
--dev-bind-try /tmp /tmp \
|
||||
@ -49,7 +55,7 @@ bwrap --dev-bind $chrootEnvPath/ / \
|
||||
--bind-try /usr/share/themes /usr/local/share/themes \
|
||||
--bind-try /usr/share/icons /usr/local/share/icons \
|
||||
--bind-try /usr/share/fonts /usr/local/share/fonts \
|
||||
--hostname Amber-CE-Bookworm \
|
||||
--hostname @HOST_NAME@ \
|
||||
--unshare-uts \
|
||||
--dev-bind-try /etc/resolv.conf /etc/resolv.conf \
|
||||
--dev-bind-try /home /home \
|
||||
@ -59,7 +65,7 @@ bwrap --dev-bind $chrootEnvPath/ / \
|
||||
}
|
||||
|
||||
echo "Update the flamescion container tools"
|
||||
cp -r `dirname $chrootEnvPath`/flamescion-container-tools/ $chrootEnvPath
|
||||
cp -r `dirname $chrootEnvPath`/amber-ce-tools/ $chrootEnvPath
|
||||
|
||||
|
||||
export container_user_gid="$(sudo -u $non_root_user id -rg)"
|
||||
@ -73,25 +79,17 @@ export container_user_uid="$(sudo -u $non_root_user id -ru)"
|
||||
#####init
|
||||
|
||||
|
||||
bookworm-run bash /flamescion-container-tools/container-init/init.sh
|
||||
bookworm-run bash /amber-ce-tools/container-init/init.sh
|
||||
rm $chrootEnvPath/etc/localtime
|
||||
cp $(realpath /etc/localtime) $chrootEnvPath/etc/localtime
|
||||
chmod 777 $chrootEnvPath/etc/localtime
|
||||
bookworm-run cp /host/etc/locale.gen /etc/locale.gen && locale-gen
|
||||
bookworm-run touch /finish.flag
|
||||
bookworm-run apt clean
|
||||
bookworm-run chown -R $(who | awk '{print $1}' | head -n 1) /usr/lib/locale/
|
||||
sudo -u $(who | awk '{print $1}' | head -n 1) bwrap --dev-bind $chrootEnvPath/ / \
|
||||
--setenv LANG "$LANG" \
|
||||
--setenv LC_COLLATE "$LC_COLLATE" \
|
||||
--setenv LC_CTYPE "$LC_CTYPE" \
|
||||
--setenv LC_MONETARY "$LC_MONETARY" \
|
||||
--setenv LC_MESSAGES "$LC_MESSAGES" \
|
||||
--setenv LC_NUMERIC "$LC_NUMERIC" \
|
||||
--setenv LC_TIME "$LC_TIME" \
|
||||
--setenv LC_ALL "$LC_ALL" \
|
||||
bookworm-run chown -R $(get_current_user) /usr/lib/locale/
|
||||
sudo -u $(get_current_user) bwrap --dev-bind $chrootEnvPath/ / \
|
||||
--setenv PULSE_SERVER /run/user/$uid/pulse/native \
|
||||
--setenv PATH /flamescion-container-tools/bin-override:$PATH \
|
||||
--setenv PATH /amber-ce-tools/bin-override:$PATH \
|
||||
--setenv IS_ACE_ENV "1" \
|
||||
--dev-bind $chrootEnvPath/ / \
|
||||
--dev-bind-try /media /media \
|
||||
@ -106,7 +104,7 @@ sudo -u $(who | awk '{print $1}' | head -n 1) bwrap --dev-bind $chrootEnvPath/ /
|
||||
--bind-try /usr/share/themes /usr/local/share/themes \
|
||||
--bind-try /usr/share/icons /usr/local/share/icons \
|
||||
--bind-try /usr/share/fonts /usr/local/share/fonts \
|
||||
--hostname Amber-CE-Bookworm \
|
||||
--hostname @HOST_NAME@ \
|
||||
--unshare-uts \
|
||||
--dev-bind-try /etc/resolv.conf /etc/resolv.conf \
|
||||
--dev-bind-try /home /home \
|
||||
@ -114,4 +112,4 @@ sudo -u $(who | awk '{print $1}' | head -n 1) bwrap --dev-bind $chrootEnvPath/ /
|
||||
bookworm-run update-locale LANG=$LANG
|
||||
chown -R root $chrootEnvPath
|
||||
chmod 777 -R $chrootEnvPath/usr/share/icons
|
||||
amber-ce-bookworm-configure-nvidia || true
|
||||
${HERE}/amber-ce-configure-nvidia || true
|
16
src/opt/apps/amber-ce-bookworm/files/bin/bookworm-run → src/opt/apps/@PKG_NAME@/files/bin/ace-run
16
src/opt/apps/amber-ce-bookworm/files/bin/bookworm-run → src/opt/apps/@PKG_NAME@/files/bin/ace-run
@ -6,6 +6,7 @@ pparent_dir=`dirname $parent_dir`
|
||||
ppparent_dir=`dirname $pparent_dir`
|
||||
PKGNAME=`basename $ppparent_dir`
|
||||
export ACE_PACKAGE_NAME=$PKGNAME
|
||||
|
||||
chrootEnvPath=/opt/apps/$PKGNAME/files/ace-env
|
||||
|
||||
if [ ! -e $chrootEnvPath/finish.flag ];then
|
||||
@ -87,18 +88,11 @@ done
|
||||
##########合成bwrap 3. 环境变量和目录绑定配置段
|
||||
# 添加环境变量和其他初始设置
|
||||
ENV_VARS=(
|
||||
"LANG $LANG"
|
||||
"LC_COLLATE $LC_COLLATE"
|
||||
"LC_CTYPE $LC_CTYPE"
|
||||
"LC_MONETARY $LC_MONETARY"
|
||||
"LC_MESSAGES $LC_MESSAGES"
|
||||
"LC_NUMERIC $LC_NUMERIC"
|
||||
"LC_TIME $LC_TIME"
|
||||
"LC_ALL $LC_ALL"
|
||||
"FAKEROOTDONTTRYCHOWN 1"
|
||||
"PULSE_SERVER /run/user/\$uid/pulse/native"
|
||||
"PATH /flamescion-container-tools/bin-override:\$PATH"
|
||||
"PATH /amber-ce-tools/bin-override:\$PATH"
|
||||
"IS_ACE_ENV 1"
|
||||
"XDG_DATA_DIRS /flamescion-container-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS"
|
||||
"XDG_DATA_DIRS /amber-ce-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS"
|
||||
)
|
||||
|
||||
BIND_DIRS=(
|
||||
@ -120,7 +114,7 @@ BIND_DIRS=(
|
||||
"--dev-bind-try /home /home"
|
||||
)
|
||||
EXTRA_ARGS=(
|
||||
"--hostname Amber-CE-Bookworm"
|
||||
"--hostname @HOST_NAME@"
|
||||
"--unshare-uts"
|
||||
"--cap-add CAP_SYS_ADMIN"
|
||||
)
|
@ -6,6 +6,7 @@ pparent_dir=`dirname $parent_dir`
|
||||
ppparent_dir=`dirname $pparent_dir`
|
||||
PKGNAME=`basename $ppparent_dir`
|
||||
export ACE_PACKAGE_NAME=$PKGNAME
|
||||
|
||||
chrootEnvPath=/opt/apps/$PKGNAME/files/ace-env
|
||||
|
||||
if [ ! -e $chrootEnvPath/finish.flag ];then
|
||||
@ -87,27 +88,20 @@ done
|
||||
##########合成bwrap 3. 环境变量和目录绑定配置段
|
||||
# 添加环境变量和其他初始设置
|
||||
ENV_VARS=(
|
||||
"LANG $LANG"
|
||||
"LC_COLLATE $LC_COLLATE"
|
||||
"LC_CTYPE $LC_CTYPE"
|
||||
"LC_MONETARY $LC_MONETARY"
|
||||
"LC_MESSAGES $LC_MESSAGES"
|
||||
"LC_NUMERIC $LC_NUMERIC"
|
||||
"LC_TIME $LC_TIME"
|
||||
"LC_ALL $LC_ALL"
|
||||
"FAKEROOTDONTTRYCHOWN 1"
|
||||
"PULSE_SERVER /run/user/\$uid/pulse/native"
|
||||
"PATH /flamescion-container-tools/bin-override:\$PATH"
|
||||
"PATH /amber-ce-tools/bin-override:\$PATH"
|
||||
"IS_ACE_ENV 1"
|
||||
"XDG_DATA_DIRS /flamescion-container-tools/additional-data-dir-in-container:\$XDG_DATA_DIRS"
|
||||
"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 /dev"
|
||||
"--dev-bind-try /dev/dri /dev/dri"
|
||||
"--dev-bind-try /dev /dev"
|
||||
"--proc /proc"
|
||||
"--dev-bind /sys /sys"
|
||||
"--dev-bind /run /run"
|
||||
@ -116,13 +110,11 @@ BIND_DIRS=(
|
||||
"--ro-bind-try /usr/share/themes /usr/local/share/themes"
|
||||
"--ro-bind-try /usr/share/icons /usr/local/share/icons"
|
||||
"--ro-bind-try /usr/share/fonts /usr/local/share/fonts"
|
||||
"--ro-bind-try $(realpath /etc/localtime) /etc/localtime"
|
||||
"--dev-bind-try /etc/resolv.conf /etc/resolv.conf"
|
||||
"--dev-bind-try /home /home"
|
||||
|
||||
)
|
||||
EXTRA_ARGS=(
|
||||
"--hostname Amber-CE-Bookworm"
|
||||
"--hostname @HOST_NAME@"
|
||||
"--unshare-uts"
|
||||
# "--cap-add CAP_SYS_ADMIN"
|
||||
)
|
||||
@ -149,6 +141,8 @@ for var in "${EXTRA_SCRIPTS[@]}"; do
|
||||
$var
|
||||
done
|
||||
|
||||
|
||||
|
||||
# 添加最终的 bash 命令
|
||||
add_command "bash -c \"/usr/bin/bwrap ${container_command}\""
|
||||
|
@ -8,7 +8,7 @@ fi
|
||||
unset ABSOLUTE_PATH IN_CONTAINER_PATH PKGNAME_GUESS DPKG_LIST_FILE ACE_ENV_PATH
|
||||
|
||||
# 定义环境路径变量
|
||||
ACE_ENV_PATH="/opt/apps/amber-ce-bookworm/files/ace-env"
|
||||
ACE_ENV_PATH="/opt/apps/@PKG_NAME@/files/ace-env"
|
||||
|
||||
# 检查参数个数
|
||||
if [ "$#" -ne 1 ]; then
|
@ -4,8 +4,8 @@ pkexec $0
|
||||
exit
|
||||
fi
|
||||
# 定义应用列表文件路径
|
||||
ACE_dir="/opt/apps/amber-ce-bookworm/files/ace-env"
|
||||
|
||||
ACE_dir="/opt/apps/@PKG_NAME@/files/ace-env"
|
||||
HERE="$(dirname $(realpath $0))"
|
||||
# 读取所有.desktop文件,并构造应用列表
|
||||
app_list=()
|
||||
for file in "$ACE_dir"/usr/share/applications/*.desktop; do
|
||||
@ -44,10 +44,10 @@ selected_apps=$(zenity --list --title "应用列表" --column "是否卸载" --c
|
||||
if [ -n "$selected_apps" ]; then
|
||||
# 卸载选中的应用
|
||||
(for app_desktop_path in $selected_apps; do
|
||||
ace-bookworm-uninstall-helper "$app_desktop_path"
|
||||
${HERE}/ace-uninstall-helper "$app_desktop_path"
|
||||
ret=$?
|
||||
if [ "$ret" != "0" ];then
|
||||
zenity --error --width 768 --text "$app_desktop_path 卸载失败,中止操作\n请手动执行\nsudo ace-uninstall-helper $app_desktop_path \n查看报错!"
|
||||
zenity --error --width 768 --text "$app_desktop_path 卸载失败,中止操作\n请手动执行\nsudo $0 $app_desktop_path \n查看报错!"
|
||||
exit 1
|
||||
break
|
||||
fi
|
@ -17,10 +17,9 @@ if [ -z "$nvidia_version" ]; then
|
||||
fi
|
||||
|
||||
# 2\. 目标目录准备
|
||||
ACE_DIR="/opt/apps/amber-ce-bookworm/files/ace-env"
|
||||
ACE_DIR="/opt/apps/@PKG_NAME@/files/ace-env"
|
||||
if [[ ! -e "${ACE_DIR}" ]];then
|
||||
log.error "未检测到 ACE Bookworm 安装,请安装后再试 ACE Bookworm is not detected. Please try again after installation"
|
||||
spark-store spk://store/tools/cn.flamescion.bookworm-compatibility-mode &
|
||||
log.error "未检测到 @PKG_NAME@安装,请安装后再试 @PKG_NAME@ is not detected. Please try again after installation"
|
||||
log.info "请按回车关闭... Press Enter to close..."
|
||||
read
|
||||
exit 1
|
43
src/opt/apps/@PKG_NAME@/files/build-container.sh
Executable file
43
src/opt/apps/@PKG_NAME@/files/build-container.sh
Executable file
@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
if [ `which debootstrap` = "" ];then
|
||||
echo "Need to install debootstrap!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ `which systemd-nspawn` = "" ];then
|
||||
echo "Need to install systemd-container!"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if [ "$1" = "amd64" ] || [ "$1" = "x86_64" ];then
|
||||
ARCH="amd64"
|
||||
ARCH_ANOTHERWAY="x64"
|
||||
cd "`dirname $0`"
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./ace-env https://mirrors.ustc.edu.cn/debian/
|
||||
|
||||
elif [ "$1" = "arm64" ] || [ "$1" = "arm" ]|| [ "$1" = "aarch64" ];then
|
||||
ARCH="arm64"
|
||||
ARCH_ANOTHERWAY="arm64"
|
||||
|
||||
cd "`dirname $0`"
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./ace-env https://mirrors.ustc.edu.cn/debian/
|
||||
elif [ "$1" = "loongarch64" ] || [ "$1" = "loong64" ];then
|
||||
ARCH="loong64"
|
||||
ARCH_ANOTHERWAY="loong64"
|
||||
sudo debootstrap --no-check-gpg --include=libnotify-bin,debian-ports-archive-keyring,apt-utils,bash-completion,bc,curl,dialog,diffutils,gnupg,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libgl1-mesa-dri,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} --variant=buildd sid ./ace-env https://deb.debian.org/debian-ports/
|
||||
else
|
||||
echo "Need to point out architecture"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
sudo rm -rf ace-env/var/cache/apt/archives/*.deb
|
||||
|
||||
sudo tar -I 'xz -T0' -cvf ace-env.tar.xz ace-env/*
|
||||
sudo rm -rf ace-env
|
||||
|
||||
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=ACE Bookworm Software Uninstaller
|
||||
Name[zh_CN]=ACE Bookworm软件卸载器
|
||||
Comment=用于卸载ACE容器的应用
|
||||
Type=Application
|
||||
Exec=/opt/apps/amber-ce-bookworm/files/bin/ace-bookworm-uninstall-helper-gui
|
||||
Icon=ACE-bookworm-uninstaller
|
||||
Categories=System
|
||||
|
||||
# Generated from the DesktopGenerater component of the z-Tools toolkit
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
if [ "$UID" != "0" ];then
|
||||
pkexec $0
|
||||
exit
|
||||
fi
|
||||
|
||||
bookworm-run /opt/ace-host-integration/ace-host-integration
|
@ -1,47 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
if [ `which debootstrap` = "" ];then
|
||||
echo "Need to install debootstrap!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ `which systemd-nspawn` = "" ];then
|
||||
echo "Need to install systemd-container!"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if [ "$1" = "amd64" ] || [ "$1" = "x86_64" ];then
|
||||
ARCH="amd64"
|
||||
ARCH_ANOTHERWAY="x64"
|
||||
cd "`dirname $0`"
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,gnupg2,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./ace-env https://mirrors.ustc.edu.cn/debian/
|
||||
|
||||
elif [ "$1" = "arm64" ] || [ "$1" = "arm" ]|| [ "$1" = "aarch64" ];then
|
||||
ARCH="arm64"
|
||||
ARCH_ANOTHERWAY="arm64"
|
||||
|
||||
cd "`dirname $0`"
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,gnupg2,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./ace-env https://mirrors.ustc.edu.cn/debian/
|
||||
elif [ "$1" = "loong" ] || [ "$1" = "loong64" ];then
|
||||
ARCH="loong64"
|
||||
ARCH_ANOTHERWAY="loong64"
|
||||
sudo debootstrap --no-check-gpg --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,gnupg2,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libgl1-mesa-dri,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} --variant=buildd sid ./ace-env http://lauosc.cn:11232/debian
|
||||
else
|
||||
echo "Need to point out architecture"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
sudo rm -rf ace-env/var/cache/apt/archives/*.deb
|
||||
|
||||
sudo tar -I 'xz -T0' -cvf ace-env.tar.xz ace-env/*
|
||||
sudo rm -rf ace-env
|
||||
|
||||
pushd flamescion-container-tools/ace-host-integration
|
||||
|
||||
dpkg-deb -Z xz -b . ../ace-host-integration.deb
|
||||
|
||||
popd
|
||||
|
||||
|
@ -1,87 +0,0 @@
|
||||
#!/bin/bash
|
||||
# ===== Log =====
|
||||
# log.info xxx
|
||||
# log.warn xxx
|
||||
# log.info xxx
|
||||
# log.debug xxx
|
||||
# 带颜色的echo
|
||||
function log.color_output() {
|
||||
local color=$1
|
||||
shift 1
|
||||
|
||||
echo >&2 -e "\033[${color}m$@\033[0m"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Log is named without prefix "utils." for convenience
|
||||
# Usage: log.log <level> ...content
|
||||
function log.log() {
|
||||
if [[ $# < 2 ]]; then
|
||||
return -1
|
||||
fi
|
||||
|
||||
local level=$1
|
||||
shift 1
|
||||
|
||||
case $level in
|
||||
error) log.color_output "0;31" "[ERROR] $@" ;;
|
||||
warn) log.color_output "1;33" "[WARN] $@" ;;
|
||||
info) log.color_output "1;37" "[INFO] $@" ;;
|
||||
debug) log.color_output "1;30" "[DEBUG] $@" ;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function log.error() { log.log "error" "$@"; }
|
||||
function log.warn() { log.log "warn" $@; }
|
||||
function log.info() { log.log "info" $@; }
|
||||
function log.debug() { log.log "debug" $@; }
|
||||
|
||||
|
||||
|
||||
function do_integrate(){
|
||||
local file=$1
|
||||
if [ -f "$file" ]; then
|
||||
exec_line=$(grep "^Exec=" "$file")
|
||||
# 检查是否是bookworm-run
|
||||
if [[ $exec_line != Exec=bookworm-run* ]]; then
|
||||
echo "$file is detected. Processing host system integration..."
|
||||
sed -i 's|^Exec=\(.*\)|Exec=bookworm-run \1|' "$file"
|
||||
sed -i '/^TryExec=/d' "$file"
|
||||
sed -i '/^Name=/ s/$/ (Bookworm)/' "$file"
|
||||
sed -i "/^Name\[${LANGUAGE}\]=/ s/\$/ (Bookworm)/" "$file"
|
||||
icon_line=$(grep "^Icon=" "$file")
|
||||
if [[ "$icon_line" == "Icon=/"* ]]; then
|
||||
# 如果Icon=后面接的是/,则添加前缀
|
||||
sed -i 's|^Icon=/|Icon=/opt/apps/amber-ce-bookworm/files/bookworm-env/|' "$file"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
chmod +x $file
|
||||
}
|
||||
|
||||
if [ "${IS_ACE_ENV}" != "" ] ;then
|
||||
if [ -e /opt/apps/ ];then
|
||||
for app_dir in $(ls /opt/apps/); do
|
||||
for file in /opt/apps/$app_dir/entries/applications/*.desktop;do
|
||||
do_integrate $file
|
||||
|
||||
|
||||
done
|
||||
done
|
||||
else
|
||||
log.warn "No /opt/apps directory. Skip..."
|
||||
fi
|
||||
|
||||
for file in /usr/share/applications/*.desktop; do
|
||||
do_integrate $file
|
||||
done
|
||||
find "/usr/share/applications/" -xtype l -delete
|
||||
|
||||
else
|
||||
|
||||
log.error "DO NOT run me on host OS"
|
||||
fi
|
@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
host-spawn /opt/apps/amber-ce-bookworm/files/bin/bookworm-run-bwrap "$@"
|
@ -1,6 +0,0 @@
|
||||
#!/bin/bash
|
||||
if [ "$UID" = "0" ];then
|
||||
/usr/bin/sudo $@
|
||||
else
|
||||
host-spawn sudo bookworm-run sudo env IS_ACE_ENV="1" "$@"
|
||||
fi
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
"appid": "amber-ce-bookworm",
|
||||
"name": "cn.flamescion.bookworm-compatibility-mode",
|
||||
"version": "12.1.4",
|
||||
"arch": ["amd64"],
|
||||
"permissions": {
|
||||
"autostart": true,
|
||||
"notification": true,
|
||||
"trayicon": true,
|
||||
"clipboard": true,
|
||||
"account": true,
|
||||
"bluetooth": true,
|
||||
"camera": true,
|
||||
"audio_record": true,
|
||||
"installed_apps": true
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
../../opt/apps/amber-ce-bookworm/files/bin/ace-bookworm-uninstall-helper
|
@ -1 +0,0 @@
|
||||
../../opt/apps/amber-ce-bookworm/files/bin/ace-bookworm-uninstall-helper-gui
|
@ -1 +0,0 @@
|
||||
../../opt/apps/amber-ce-bookworm/files/bin/amber-ce-bookworm-configure-nvidia
|
@ -1 +0,0 @@
|
||||
../../opt/apps/amber-ce-bookworm/files/bin/bookworm-run
|
@ -1,12 +1,12 @@
|
||||
[Unit]
|
||||
Description=Amber CE Auto upgrade
|
||||
Description=Amber CE @PRETTY_NAME@ Auto upgrade
|
||||
After=apt-daily.service network.target network-online.target systemd-networkd.service NetworkManager.service connman.service
|
||||
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
RemainAfterExit=yes
|
||||
ExecStart=bookworm-run /flamescion-container-tools/ace-upgrader/ace-upgrader
|
||||
ExecStart=@EXEC_NAME@ /amber-ce-tools/ace-upgrader/ace-upgrader
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
@ -10,7 +10,7 @@ fi
|
||||
|
||||
# Desktop files (used by desktop environments within both X11 and Wayland) are
|
||||
# looked for in XDG_DATA_DIRS; make sure it includes the relevant directory for ACE
|
||||
ACE_path="/opt/apps/amber-ce-bookworm/files/ace-env/flamescion-container-tools/data-dir/"
|
||||
ACE_path="/opt/apps/@PKG_NAME@/files/ace-env/amber-ce-tools/data-dir/"
|
||||
if [ -n "${XDG_DATA_DIRS##*${ACE_path}}" ] && [ -n "${XDG_DATA_DIRS##*${ACE_path}:*}" ]; then
|
||||
export XDG_DATA_DIRS="${XDG_DATA_DIRS}:${ACE_path}"
|
||||
fi
|
11
src/usr/share/applications/@PKG_NAME@-uninstaller.desktop
Normal file
11
src/usr/share/applications/@PKG_NAME@-uninstaller.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=ACE @PRETTY_NAME@ Software Uninstaller
|
||||
Name[zh_CN]=ACE @PRETTY_NAME@ 软件卸载器
|
||||
Comment=用于卸载ACE容器的应用
|
||||
Type=Application
|
||||
Exec=/opt/apps/@PKG_NAME@/files/bin/ace-uninstall-helper-gui
|
||||
Icon=@PKG_NAME@-uninstaller
|
||||
Categories=System
|
||||
|
||||
# Generated from the DesktopGenerater component of the z-Tools toolkit
|
@ -1,9 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Categories=utils
|
||||
Exec=bookworm-run %U
|
||||
Icon=amber-ce-bookworm
|
||||
Name=Amber CE Bookworm
|
||||
Name[zh_CN]=ACE Bookworm兼容环境
|
||||
Exec=@EXEC_NAME@ %U
|
||||
Icon=@PKG_NAME@
|
||||
Name=Amber CE @PRETTY_NAME@
|
||||
Name[zh_CN]=ACE @PRETTY_NAME@兼容环境
|
||||
Keywords=BCM,ACE,ace,mode
|
||||
StartupNotify=true
|
||||
Type=Application
|
@ -1,11 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=ACE Bookworm Software Uninstaller
|
||||
Name[zh_CN]=ACE Bookworm软件卸载器
|
||||
Comment=用于卸载ACE容器的应用
|
||||
Type=Application
|
||||
Exec=/opt/apps/amber-ce-bookworm/files/bin/ace-bookworm-uninstall-helper-gui
|
||||
Icon=ACE-bookworm-uninstaller
|
||||
Categories=System
|
||||
|
||||
# Generated from the DesktopGenerater component of the z-Tools toolkit
|
@ -1,11 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Categories=utils
|
||||
Exec=bookworm-run %U
|
||||
Icon=amber-ce-bookworm
|
||||
Name=Amber CE Bookworm
|
||||
Name[zh_CN]=ACE Bookworm兼容环境
|
||||
Keywords=BCM,ACE,ace,mode
|
||||
StartupNotify=true
|
||||
Type=Application
|
||||
Terminal=true
|
||||
Categories=System
|
Before ![]() (image error) Size: 79 KiB After ![]() (image error) Size: 79 KiB ![]() ![]() |
Before ![]() (image error) Size: 93 KiB After ![]() (image error) Size: 93 KiB ![]() ![]() |
Binary file not shown.
Before ![]() (image error) Size: 79 KiB |
Binary file not shown.
Before ![]() (image error) Size: 93 KiB |
@ -2,17 +2,17 @@
|
||||
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
<vendor>bookworm.ace-gxde-fixer</vendor>
|
||||
<vendor>@PKG_NAME@.ace-gxde-fixer</vendor>
|
||||
<icon_name>x-package-repository</icon_name>
|
||||
<action id="bookworm.ace-gxde-fixer">
|
||||
<description>运行bookworm.ace-gxde-fixer需要权限</description>
|
||||
<message>要使用bookworm.ace-gxde-fixer需要权限</message>
|
||||
<action id="@PKG_NAME@.ace-gxde-fixer">
|
||||
<description>运行@PKG_NAME@.ace-gxde-fixer需要权限</description>
|
||||
<message>要使用@PKG_NAME@.ace-gxde-fixer需要权限</message>
|
||||
<defaults>
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/apps/amber-ce-bookworm/files/bin/bookworm.ace-gxde-fixer</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/apps/@PKG_NAME@/files/bin/ace-gxde-fixer</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
</action>
|
||||
</policyconfig>
|
@ -2,17 +2,17 @@
|
||||
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
<vendor>amber-ce-bookworm.ace-uninstaller</vendor>
|
||||
<vendor>@PKG_NAME@.ace-uninstaller</vendor>
|
||||
<icon_name>x-package-repository</icon_name>
|
||||
<action id="amber-ce-bookworm.ace-uninstaller">
|
||||
<description>运行amber-ce-bookworm.ace-uninstaller需要权限</description>
|
||||
<message>要使用amber-ce-bookworm.ace-uninstaller需要权限</message>
|
||||
<action id="@PKG_NAME@.ace-uninstaller">
|
||||
<description>运行@PKG_NAME@.ace-uninstaller需要权限</description>
|
||||
<message>要使用@PKG_NAME@.ace-uninstaller需要权限</message>
|
||||
<defaults>
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/apps/amber-ce-bookworm/files/bin/ace-bookworm-uninstall-helper-gui</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/apps/@PKG_NAME@/files/bin/ace-uninstall-helper-gui</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
</action>
|
||||
</policyconfig>
|
Loading…
x
Reference in New Issue
Block a user