diff --git a/bin/startgxde_android b/bin/startgxde_android index 0054fe275a3092c6375f56b363dc61d66aa1cd4e..2cb715d9f50015dae7588ee821cc3d910dc01870 100755 --- a/bin/startgxde_android +++ b/bin/startgxde_android @@ -1,9 +1,6 @@ #!/bin/bash set -e -# 如果没有正确启动 system session 则尝试启动 -if [[ ! -e /var/run/dbus/system_bus_socket ]]; then - pkexec /usr/libexec/gxde-daemon/gxde-dbus-launch.sh -fi +pkexec /usr/libexec/gxde-daemon/gxde-root-launch.sh # 引入环境变量 export $(dbus-launch) # 启动 GXDE diff --git a/debian/changelog b/debian/changelog index 10c3b94f812c3aa2524d7baff9190f081564f19a..6c4ee59ffe06f595d44db1adc8d2800807a21db0 100755 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,9 @@ -gxde-daemon (1.1.1) UNRELEASED; urgency=medium +gxde-daemon (1.2.0) UNRELEASED; urgency=medium * Add Wayland Support * fix: now we use all archi * 支持设置热区 * 修复热区dbus的一些问题 + * Add depends: GXDE-K9 -- gfdgd_xi <3025613752@qq.com> Sun, 24 Nov 2024 12:33:43 +0800 diff --git a/debian/control b/debian/control index c0013ae3e15b2cd19e0885feaf732131837c343c..a4b1a22319f3eee358622aac0e33ea0214484098 100755 --- a/debian/control +++ b/debian/control @@ -16,4 +16,6 @@ Depends: ${misc:Depends}, python3-pydbus, kwin-wayland, + gxde-k9(>=1.4.0), + policykit-1 | pkexec | polkit-1 | polkit, Description: GXDE Daemon diff --git a/debian/install b/debian/install index a94e5871bc9ed76e747455887880b01a7e30eb16..644b6705aa88cfa96e913b23c498a98c910cba11 100644 --- a/debian/install +++ b/debian/install @@ -5,4 +5,5 @@ libexec/gxde-daemon usr/libexec gxde-daemon usr/libexec dbus/services usr/share/dbus-1 dbus/system-services usr/share/dbus-1 -dbus/system.d etc/dbus-1 \ No newline at end of file +dbus/system.d etc/dbus-1 +k9/* /usr/share/gxde-k9/system/ \ No newline at end of file diff --git a/k9/slimy/polkitd.slimy b/k9/slimy/polkitd.slimy new file mode 100755 index 0000000000000000000000000000000000000000..2ea2e8e9d18559208397473470bd518ff8792289 --- /dev/null +++ b/k9/slimy/polkitd.slimy @@ -0,0 +1,80 @@ +#!/bin/bash + + +if [ -d /run/systemd/system ]; then +exit +# We don't need K9 to take over systemd work +fi +# ============ 可配置变量 ============ + +# 目标程序路径(需要运行的可执行文件或命令) +TARGET_PROCESS="/usr/lib/polkit-1/polkitd" + +# ====== 若无特殊需求,以下请默认 ======= + +# PID 文件目录(从环境变量 PID_DIR 获取,默认为用户配置目录) +PID_DIR="${PID_DIR:-/tmp/GXDE/gxde-k9/}" + +# 自动生成 PROCESS_NAME 为当前 .slimy 文件名(去掉扩展名) +PROCESS_NAME=$(basename "$0" .slimy) + +# ============ 脚本逻辑 ============ + +# 检查目标程序路径是否存在且可执行 +if [[ -x "$TARGET_PROCESS" ]]; then + # 如果是有效的可执行文件,使用 realpath 获取绝对路径 + TARGET_PROCESS=$(realpath "$TARGET_PROCESS" 2>/dev/null || echo "$TARGET_PROCESS") +else + # 如果不是文件,认为是启动指令 +# echo "[$PROCESS_NAME] 未找到文件,将使用命令:$TARGET_PROCESS" + true +fi + +# 确保 PID 文件目录存在 +mkdir -p "$PID_DIR" || { + echo "[$PROCESS_NAME] 错误:无法创建 PID 文件目录 $PID_DIR!" + exit 1 +} + +# 生成 PID 文件路径 +PID_FILE="$PID_DIR/$PROCESS_NAME.pid" + +# 检查 PID 文件是否存在且有效 +if [[ -f "$PID_FILE" ]]; then + PID=$(cat "$PID_FILE" 2>/dev/null) + if [[ -n "$PID" && -e "/proc/$PID" ]]; then + # 检查进程路径是否匹配 + if [[ -x "$TARGET_PROCESS" ]]; then + # 如果是可执行文件,通过 /proc/$PID/exe 检查路径 + PROCESS_PATH=$(readlink -f "/proc/$PID/exe" 2>/dev/null) + if [[ "$PROCESS_PATH" == "$TARGET_PROCESS" ]]; then + # echo "[$PROCESS_NAME] 目标进程正在运行,PID: $PID" + exit 0 + else + echo "[$PROCESS_NAME] 无效的 PID 文件,进程路径不匹配。" + echo "[$PROCESS_NAME] 文件记录的路径: $PROCESS_PATH" + echo "[$PROCESS_NAME] 目标路径: $TARGET_PROCESS" + rm -f "$PID_FILE" + fi + else + # 如果是命令,简单校验 PID 是否存活 +# echo "[$PROCESS_NAME] 检测到命令进程,PID: $PID 正在运行。" + exit 0 + fi + else + echo "[$PROCESS_NAME] 无效的 PID 文件,清理:$PID_FILE" + rm -f "$PID_FILE" + fi +fi + +# 如果 PID 文件不存在或无效,启动目标进程 +echo "[$PROCESS_NAME] 目标进程未运行,正在启动:$TARGET_PROCESS" +"$TARGET_PROCESS" & +NEW_PID=$! +if [[ -n "$NEW_PID" && -e "/proc/$NEW_PID" ]]; then + echo "$NEW_PID" > "$PID_FILE" + echo "[$PROCESS_NAME] 目标进程启动成功,PID: $NEW_PID" +else + echo "[$PROCESS_NAME] 错误:目标进程启动失败!" + exit 1 +fi diff --git a/libexec/gxde-daemon/gxde-dbus-launch.sh b/libexec/gxde-daemon/gxde-dbus-launch.sh deleted file mode 100755 index 4dc4cd6e7373c09dcaff9acae2910328bcff204c..0000000000000000000000000000000000000000 --- a/libexec/gxde-daemon/gxde-dbus-launch.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -dbus-daemon --system -# 开启 pkexec 授权服务 -setsid /usr/lib/polkit-1/polkitd & diff --git a/libexec/gxde-daemon/gxde-dbus-launch.sh b/libexec/gxde-daemon/gxde-dbus-launch.sh new file mode 120000 index 0000000000000000000000000000000000000000..c1499f066424b110e1fbda5fcd3bfeb081eaef0e --- /dev/null +++ b/libexec/gxde-daemon/gxde-dbus-launch.sh @@ -0,0 +1 @@ +./gxde-root-launch.sh \ No newline at end of file diff --git a/libexec/gxde-daemon/gxde-root-launch.sh b/libexec/gxde-daemon/gxde-root-launch.sh new file mode 100755 index 0000000000000000000000000000000000000000..c0624627546fa5292182e424835fed0cb6cfbb4a --- /dev/null +++ b/libexec/gxde-daemon/gxde-root-launch.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if [[ ! -e /var/run/dbus/system_bus_socket ]]; then +dbus-daemon --system +fi +# 开启 gxde-k9 +setsid /usr/bin/gxde-k9 & diff --git a/misc/polkit-1/actions/top.gxde.gxde-daemon.gxde-dbus-launch.policy b/misc/polkit-1/actions/org.gxde.gxde-daemon.gxde-root-launch.policy similarity index 87% rename from misc/polkit-1/actions/top.gxde.gxde-daemon.gxde-dbus-launch.policy rename to misc/polkit-1/actions/org.gxde.gxde-daemon.gxde-root-launch.policy index 32fa7efe86286a343538a82fce71291bf7491933..fe377cfbaeeff83e04ef5f6994b7adb4d550d6f2 100755 --- a/misc/polkit-1/actions/top.gxde.gxde-daemon.gxde-dbus-launch.policy +++ b/misc/polkit-1/actions/org.gxde.gxde-daemon.gxde-root-launch.policy @@ -4,7 +4,7 @@ gxde-app-upgrader x-package-repository - + 运行 GXDE 需要权限 要使用 GXDE 需要权限 @@ -12,7 +12,7 @@ yes yes - /usr/libexec/gxde-daemon/gxde-dbus-launch.sh + /usr/libexec/gxde-daemon/gxde-root-launch.sh true