mirror of
https://gitee.com/amber-ce/amber-ce-bookworm.git
synced 2025-12-16 03:52:05 +08:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6246cf3c98 | |||
| f169fee3ac | |||
| 1b2eaddb4d | |||
| 9071dbf2ff | |||
| 05c5b4a2b9 | |||
| 26dcf96d87 | |||
| 05e00b41f9 | |||
| e99d4b5e58 |
4
debian/changelog
vendored
4
debian/changelog
vendored
@@ -1,7 +1,9 @@
|
||||
amber-ce-bookworm (12.7.5) UNRELEASED; urgency=low
|
||||
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
|
||||
|
||||
|
||||
@@ -19,16 +19,16 @@ fi
|
||||
/opt/apps/$PACKAGE_NAME/files/bin/ace-init
|
||||
|
||||
|
||||
if [ "${PACKAGE_NAME}" = "amber-ce-bookworm" ];then
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable amber-ce-bookworm-auto-upgrade
|
||||
systemctl start amber-ce-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-bookworm.conf ];then
|
||||
sysctl -p /usr/lib/sysctl.d/amber-ce-bookworm.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 amber-ce-bookworm-auto-upgrade
|
||||
systemctl disable amber-ce-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
|
||||
|
||||
@@ -38,50 +38,61 @@ function log.warn() { log.log "warn" $@; }
|
||||
function log.info() { log.log "info" $@; }
|
||||
function log.debug() { log.log "debug" $@; }
|
||||
|
||||
|
||||
|
||||
function do_integrate(){
|
||||
local file=$1
|
||||
local file=$1
|
||||
if [ -f "$file" ]; then
|
||||
exec_line=$(grep "^Exec=" "$file")
|
||||
# 检查是否是@EXEC_NAME@
|
||||
if [[ $exec_line != Exec="@EXEC_NAME@ "* ]]; then
|
||||
echo "$file is detected. Processing host system integration..."
|
||||
sed -i 's|^Exec=\(.*\)|Exec=@EXEC_NAME@ \1|' "$file"
|
||||
sed -i '/^TryExec=/d' "$file"
|
||||
sed -i '/^Name=/ s/$/ (@PRETTY_NAME@)/' "$file"
|
||||
sed -i "/^Name\[${LANGUAGE}\]=/ s/\$/ (@PRETTY_NAME@)/" "$file"
|
||||
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
|
||||
# 获取文件名(不带.desktop后缀)作为X-AMBER-CE-DESKTOP-NAME的值
|
||||
local desktop_name=$(basename "$file" .desktop)
|
||||
|
||||
fi
|
||||
# 检查是否已经处理过(通过检查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
|
||||
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
|
||||
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"
|
||||
log.error "DO NOT run me on host OS"
|
||||
fi
|
||||
@@ -22,8 +22,20 @@ 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(){
|
||||
@@ -74,8 +86,8 @@ 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/ / \
|
||||
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 /amber-ce-tools/bin-override:$PATH \
|
||||
--setenv IS_ACE_ENV "1" \
|
||||
|
||||
Reference in New Issue
Block a user