Fix Codex scratchpad warm start
This commit is contained in:
@@ -17,6 +17,65 @@ pid_is_alive() {
|
|||||||
[ -e "/proc/$pid/exe" ]
|
[ -e "/proc/$pid/exe" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pid_is_current_user() {
|
||||||
|
local pid="${1:-}"
|
||||||
|
local uid
|
||||||
|
|
||||||
|
uid="$(stat -c %u "/proc/$pid" 2>/dev/null || true)"
|
||||||
|
[ -n "$uid" ] && [ "$uid" = "$(id -u)" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
pid_cmdline() {
|
||||||
|
local pid="$1"
|
||||||
|
|
||||||
|
tr '\0' ' ' < "/proc/$pid/cmdline" 2>/dev/null || true
|
||||||
|
}
|
||||||
|
|
||||||
|
pid_is_main_codex_desktop() {
|
||||||
|
local pid="$1"
|
||||||
|
local exe
|
||||||
|
local cmdline
|
||||||
|
|
||||||
|
pid_is_alive "$pid" || return 1
|
||||||
|
pid_is_current_user "$pid" || return 1
|
||||||
|
exe="$(readlink -f "/proc/$pid/exe" 2>/dev/null || true)"
|
||||||
|
[ -n "$exe" ] || return 1
|
||||||
|
[ "$(basename "$exe")" = "electron" ] || return 1
|
||||||
|
[ -x "$(dirname "$exe")/start.sh" ] || return 1
|
||||||
|
|
||||||
|
cmdline="$(pid_cmdline "$pid")"
|
||||||
|
case " $cmdline " in
|
||||||
|
*" --class=$app_id "*) ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
case " $cmdline " in
|
||||||
|
*" --app-id=$app_id "*) ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
case " $cmdline " in
|
||||||
|
*" --type="*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
find_running_app() {
|
||||||
|
local proc_exe
|
||||||
|
local pid
|
||||||
|
local exe
|
||||||
|
|
||||||
|
for proc_exe in /proc/[0-9]*/exe; do
|
||||||
|
[ -e "$proc_exe" ] || continue
|
||||||
|
pid="${proc_exe#/proc/}"
|
||||||
|
pid="${pid%/exe}"
|
||||||
|
if pid_is_main_codex_desktop "$pid"; then
|
||||||
|
exe="$(readlink -f "$proc_exe" 2>/dev/null || true)"
|
||||||
|
printf '%s\t%s\n' "$pid" "$(dirname "$exe")"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
running_app_is_alive() {
|
running_app_is_alive() {
|
||||||
local pid
|
local pid
|
||||||
|
|
||||||
@@ -56,4 +115,12 @@ if send_launch_action "$@"; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if running_app="$(find_running_app)"; then
|
||||||
|
running_pid="${running_app%% *}"
|
||||||
|
running_app_dir="${running_app#* }"
|
||||||
|
mkdir -p "$state_dir"
|
||||||
|
printf '%s\n' "$running_pid" > "$pid_file"
|
||||||
|
exec "$running_app_dir/start.sh" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
exec codex-desktop "$@"
|
exec codex-desktop "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user