Photocrea

0
cd ~
sudo nano install-photocrea.sh
sudo bash install-photocrea.sh
#!/usr/bin/env bash
# Photocrea (Photopeaラッパー) を antiX26 (runit) にインストール
# https://github.com/vikdevelop/photopea_app
set -eu

APP="photocrea"
REPO="vikdevelop/photopea_app"
INSTALL_DIR="/opt/${APP}"
BIN_LINK="/usr/local/bin/${APP}"
DESKTOP_FILE="/usr/share/applications/${APP}.desktop"
ICON_DIR="/usr/share/pixmaps"
ICON_URL="https://raw.githubusercontent.com/${REPO}/refs/heads/js/data/icons/com.github.vikdevelop.photopea_app.png"

echo "==> 依存パッケージを確認・インストール中..."
sudo apt-get update -qq
# Electronアプリの実行に必要な最低限のライブラリ群(既にあればスキップされる)
sudo apt-get install -y curl tar \
  libgtk-3-0 libnss3 libnotify4 libxss1 libxtst6 \
  libsecret-1-0 libuuid1 libatspi2.0-0 xdg-utils || true

echo "==> 最新リリースのダウンロードURLを取得中..."
URL=$(curl -Ls "https://api.github.com/repos/${REPO}/releases" \
  | sed 's/[()",{} ]/\n/g' \
  | grep -oi 'https.*' \
  | grep -vi 'i386\|i686\|aarch64\|arm64\|armv7l' \
  | grep -i 'photopea.*tar\.xz$' \
  | head -1)

if [ -z "$URL" ]; then
  echo "エラー: ダウンロードURLを取得できませんでした。ネットワーク接続を確認してください。" >&2
  exit 1
fi
echo "    -> $URL"

TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT

echo "==> ダウンロード中..."
curl -Ls "$URL" -o "$TMP/photocrea.tar.xz"

echo "==> 展開中..."
mkdir -p "$TMP/extract"
tar xf "$TMP/photocrea.tar.xz" -C "$TMP/extract"

# アーカイブ内が単一ディレクトリの場合は中身だけを採用する
SRC="$TMP/extract"
ENTRIES=$(find "$SRC" -mindepth 1 -maxdepth 1)
if [ "$(echo "$ENTRIES" | wc -l)" -eq 1 ] && [ -d "$ENTRIES" ]; then
  SRC="$ENTRIES"
fi

echo "==> インストール中 (${INSTALL_DIR})..."
sudo rm -rf "$INSTALL_DIR"
sudo mkdir -p "$INSTALL_DIR"
sudo cp -r "$SRC"/. "$INSTALL_DIR"/

# 実行ファイルを検出(main/photopea のようにサブディレクトリにあるケースに対応)
# .so / chrome-sandbox / crashpad ハンドラは除外して本体バイナリのみを拾う
BIN_PATH=$(find "$INSTALL_DIR" -type f -executable \
  ! -name "*.so" ! -name "*.so.*" \
  ! -name "chrome-sandbox" ! -name "chrome_crashpad_handler" \
  | head -1)
if [ -z "$BIN_PATH" ]; then
  echo "エラー: 実行ファイルが見つかりませんでした。$INSTALL_DIR の中身を確認してください。" >&2
  exit 1
fi
sudo chmod +x "$BIN_PATH"

# Electronのサンドボックス用ヘルパーにsetuidを付与(なくても動くが警告が出るため)
SANDBOX_PATH=$(find "$INSTALL_DIR" -maxdepth 3 -type f -name "chrome-sandbox" | head -1)
if [ -n "$SANDBOX_PATH" ]; then
  sudo chown root:root "$SANDBOX_PATH"
  sudo chmod 4755 "$SANDBOX_PATH"
fi

echo "==> シンボリックリンクを作成中..."
sudo ln -sf "$BIN_PATH" "$BIN_LINK"

echo "==> アイコンを取得中..."
sudo curl -Ls "$ICON_URL" -o "${ICON_DIR}/${APP}.png" || true

echo "==> デスクトップエントリを作成中..."
sudo tee "$DESKTOP_FILE" > /dev/null <<EOF
[Desktop Entry]
Type=Application
Name=Photocrea
Comment=Photopea desktop wrapper (unofficial)
Exec=${BIN_LINK}
Icon=${ICON_DIR}/${APP}.png
Categories=Graphics;2DGraphics;RasterGraphics;
Terminal=false
EOF

echo "==> 完了しました。'${APP}' コマンド、またはアプリメニューの Graphics カテゴリから起動できます。"
タイトルとURLをコピーしました