Avoid duplicate Codex desktop launches

This commit is contained in:
2026-05-30 11:00:10 -07:00
parent 4188a6c0d8
commit 7c1185fa6e

View File

@@ -76,6 +76,31 @@ find_running_app() {
return 1
}
activate_status_notifier_item() {
local pid="$1"
local qdbus_cmd
local service
local path
qdbus_cmd="$(command -v qdbus || command -v qdbus6 || true)"
[ -n "$qdbus_cmd" ] || return 1
while IFS= read -r service; do
[ -n "$service" ] || continue
while IFS= read -r path; do
case "$path" in
*/StatusNotifierItem)
if "$qdbus_cmd" "$service" "$path" org.kde.StatusNotifierItem.Activate 0 0 >/dev/null 2>&1; then
return 0
fi
;;
esac
done < <("$qdbus_cmd" "$service" 2>/dev/null || true)
done < <("$qdbus_cmd" 2>/dev/null | grep -E "^org\\.kde\\.StatusNotifierItem-${pid}-" || true)
return 1
}
running_app_is_alive() {
local pid
@@ -117,10 +142,12 @@ 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" "$@"
send_launch_action "$@" && exit 0
activate_status_notifier_item "$running_pid" && exit 0
notify-send "Codex is already running" "No warm-start socket or tray activation path was available." >/dev/null 2>&1 || true
exit 0
fi
exec codex-desktop "$@"