デスクトップの自動化を無料で出来る「OpenWork」

AIエージェントのOpenClawやClaude Coworkが話題になりましたが、動作させるためにはAIモデルのAPI利用料が必要になります。無料で気軽に試してみたいなら一度「OpenWork」を試してみては。性能は比べ物になりませんが、雰囲気は掴めるかも。

VMにセットアップ

今回はVM上のUbuntu 24.04デスクトップ環境にセットアップします。下記コードを端末にコピペします。

#!/usr/bin/env bash
# =============================================================================
#  OpenWork — Ubuntu 24.04 ワンクリック セットアップスクリプト
# =============================================================================
set -euo pipefail

RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
CYAN='\033[0;36m'; BOLD='\033[1m'; RESET='\033[0m'

info()    { echo -e "${CYAN}[INFO]${RESET}  $*" >&2; }
success() { echo -e "${GREEN}[OK]${RESET}    $*" >&2; }
warn()    { echo -e "${YELLOW}[WARN]${RESET}  $*" >&2; }
error()   { echo -e "${RED}[ERROR]${RESET} $*" >&2; exit 1; }

echo -e "${BOLD}"
cat << 'BANNER'
  ___                 __        __         _
 / _ \ _ __   ___ _ _\ \      / /__  _ __| | __
| | | | '_ \ / _ \ '_ \ \ /\ / / _ \| '__| |/ /
| |_| | |_) |  __/ | | \ V  V / (_) | |  |   <
 \___/| .__/ \___|_| |_|\_/\_/ \___/|_|  |_|\_\
      |_|
  Ubuntu 24.04 — ワンクリック インストーラー
BANNER
echo -e "${RESET}"

APP_DIR="$HOME/.local/share/openwork"
DESKTOP_FILE="$HOME/.local/share/applications/openwork.desktop"
REPO="different-ai/openwork"
TMPINFO=$(mktemp)

# ── 依存パッケージ ────────────────────────────────────────────────────────────
install_deps() {
    info "依存パッケージを確認中..."
    local pkgs=(curl wget jq libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1)
    local missing=()
    for pkg in "${pkgs[@]}"; do
        dpkg -s "$pkg" &>/dev/null || missing+=("$pkg")
    done
    if [[ ${#missing[@]} -gt 0 ]]; then
        info "インストール中: ${missing[*]}"
        sudo apt-get update -qq
        sudo apt-get install -y "${missing[@]}"
    fi
    success "依存パッケージOK"
}

# ── GitHub API でリリース情報取得 ─────────────────────────────────────────────
fetch_release_info() {
    info "GitHub API で最新リリースを検索中..."

    local api_response
    api_response=$(curl -fsSL \
        -H "Accept: application/vnd.github+json" \
        -H "X-GitHub-Api-Version: 2022-11-28" \
        "https://api.github.com/repos/${REPO}/releases/latest")

    local version
    version=$(echo "$api_response" | jq -r '.tag_name // "不明"')
    info "最新バージョン: $version"

    local all_urls
    all_urls=$(echo "$api_response" | jq -r '.assets[].browser_download_url')

    local found
    found=$(echo "$all_urls" | grep -iE '\.AppImage$' | grep -iE 'x86_64|amd64' | head -1 || true)
    if [[ -n "$found" ]]; then
        printf 'appimage\n%s\n' "$found" > "$TMPINFO"
        return
    fi

    found=$(echo "$all_urls" | grep -iE '\.deb$' | grep -iE 'amd64|x86_64' | head -1 || true)
    if [[ -n "$found" ]]; then
        printf 'deb\n%s\n' "$found" > "$TMPINFO"
        return
    fi

    echo "$all_urls" | sed 's/^/  /' >&2
    error "Linux向けバイナリが見つかりません。https://github.com/${REPO}/releases を確認してください。"
}

# ── インストール後の実行コマンドを特定 ────────────────────────────────────────
find_launch_cmd() {
    # .deb がインストールするバイナリ名は変わる可能性があるため動的に探す
    local candidates=(OpenWork OpenWork-Dev openwork open-work)
    for cmd in "${candidates[@]}"; do
        if command -v "$cmd" &>/dev/null; then
            echo "$cmd"
            return
        fi
    done
    # fallback: /usr/bin 以下を検索
    local found
    found=$(find /usr/bin -maxdepth 1 -iname 'openwork*' -o -iname 'open-work*' 2>/dev/null \
        | grep -v -E 'server|orchestrator|router|mcp|versions' | head -1)
    if [[ -n "$found" ]]; then
        echo "$found"
        return
    fi
    echo "OpenWork-Dev"  # 現在の既知コマンド名
}

# ── AppImage インストール ──────────────────────────────────────────────────────
install_appimage() {
    local url="$1"
    local dest="$APP_DIR/openwork.AppImage"
    mkdir -p "$APP_DIR"
    info "ダウンロード中: $(basename "$url")"
    wget --progress=bar:force -O "$dest" "$url"
    chmod +x "$dest"

    mkdir -p "$HOME/.local/bin"
    cat > "$HOME/.local/bin/openwork" <<EOF
#!/usr/bin/env bash
export WEBKIT_DISABLE_DMABUF_RENDERER=1
exec "$dest" "\$@"
EOF
    chmod +x "$HOME/.local/bin/openwork"
    success "AppImage インストール完了"
}

# ── .deb インストール ─────────────────────────────────────────────────────────
install_deb() {
    local url="$1"
    local tmp="/tmp/openwork_install.deb"
    info "ダウンロード中: $(basename "$url")"
    wget --progress=bar:force -O "$tmp" "$url"
    sudo dpkg -i "$tmp" || sudo apt-get install -f -y
    rm -f "$tmp"
    success ".deb インストール完了"
}

# ── デスクトップ登録 ──────────────────────────────────────────────────────────
create_desktop_entry() {
    local launch_cmd="$1"
    mkdir -p "$(dirname "$DESKTOP_FILE")" "$APP_DIR"
    cat > "$DESKTOP_FILE" <<EOF
[Desktop Entry]
Name=OpenWork
Comment=Open-source alternative to Claude Cowork, powered by OpenCode
Exec=env WEBKIT_DISABLE_DMABUF_RENDERER=1 $launch_cmd %U
Icon=$APP_DIR/openwork.png
Terminal=false
Type=Application
Categories=Development;Utility;
StartupWMClass=openwork
Keywords=AI;agentic;workflow;opencode;
EOF
    chmod +x "$DESKTOP_FILE"
    update-desktop-database "$HOME/.local/share/applications/" 2>/dev/null || true

    curl -fsSL -o "$APP_DIR/openwork.png" \
        "https://raw.githubusercontent.com/${REPO}/dev/.github/openwork-icon.png" 2>/dev/null \
        && success "アイコン取得OK" || warn "アイコン取得失敗(動作には影響なし)"

    success ".desktop エントリ作成完了"
}

# ── PATH 追加 ─────────────────────────────────────────────────────────────────
ensure_path() {
    local dir="$1"
    if [[ ":$PATH:" != *":$dir:"* ]]; then
        local rc
        rc=$([ -f "$HOME/.zshrc" ] && echo "$HOME/.zshrc" || echo "$HOME/.bashrc")
        echo "export PATH=\"$dir:\$PATH\"" >> "$rc"
        export PATH="$dir:$PATH"
        warn "$dir を PATH に追加しました。"
    fi
}

# ── メイン ────────────────────────────────────────────────────────────────────
main() {
    echo -e "${BOLD}Ubuntu 24.04 VM 向け OpenWork インストール開始${RESET}\n"
    sudo -v 2>/dev/null || error "sudo 権限が必要です。"

    install_deps
    fetch_release_info

    local install_type url
    install_type=$(sed -n '1p' "$TMPINFO")
    url=$(sed -n '2p' "$TMPINFO")
    rm -f "$TMPINFO"

    info "インストール種別: $install_type"
    info "URL: $url"

    if [[ "$install_type" == "deb" ]]; then
        install_deb "$url"
        ensure_path "/usr/bin"
    else
        install_appimage "$url"
        ensure_path "$HOME/.local/bin"
    fi

    # インストール後に実際のコマンド名を動的に特定
    local launch_cmd
    launch_cmd=$(find_launch_cmd)
    info "起動コマンド: $launch_cmd"

    create_desktop_entry "$launch_cmd"

    echo ""
    echo -e "${GREEN}${BOLD}╔══════════════════════════════════════════╗${RESET}"
    echo -e "${GREEN}${BOLD}║  ✅  インストール完了!                 ║${RESET}"
    echo -e "${GREEN}${BOLD}╚══════════════════════════════════════════╝${RESET}"
    echo ""
    echo -e "  ${BOLD}起動方法:${RESET}"
    echo -e "  • アプリメニュー → 「OpenWork」を検索"
    echo -e "  • ターミナル: ${CYAN}WEBKIT_DISABLE_DMABUF_RENDERER=1 ${launch_cmd}${RESET}"
    echo ""
    echo -e "  ${BOLD}毎回の起動が面倒な場合、エイリアスを設定:${RESET}"
    echo -e "  ${CYAN}echo \"alias openwork='WEBKIT_DISABLE_DMABUF_RENDERER=1 ${launch_cmd}'\" >> ~/.bashrc && source ~/.bashrc${RESET}"
    echo -e "  以降は ${CYAN}openwork${RESET} だけで起動できます"
    echo ""
    echo -e "  ${BOLD}APIキー不要で即使える!${RESET}"
    echo -e "  デフォルトの ${CYAN}OpenCode Zen${RESET} モデルはそのまま無料で利用可能"
    echo ""

    read -r -p "今すぐ起動しますか? [y/N]: " launch
    if [[ "${launch,,}" == "y" ]]; then
        WEBKIT_DISABLE_DMABUF_RENDERER=1 "$launch_cmd" &
        disown
        success "起動しました"
    fi
}

main "$@"

起動方法

インストールが完了したら「y」を押せばすぐ起動します。
起動したらピン留めしておきましょう。次からはここからすぐに起動出来ます。

また次のコマンドでも起動できます。

WEBKIT_DISABLE_DMABUF_RENDERER=1 OpenWork-Dev

毎回このコマンドを打つのは面倒なので、エイリアスを設定してもよいですね。

echo "alias openwork='WEBKIT_DISABLE_DMABUF_RENDERER=1 OpenWork-Dev'" >> ~/.bashrc && source ~/.bashrc

以降は openwork だけで起動できます。またアプリメニュー(GNOMEのアクティビティ)からも「OpenWork」で検索して起動できるはずです。

日本語化して使用

起動したら、右下の⚙️マークから設定画面を開き、「Appearance」項目で「日本語」を選択して日本語化します。

日本語で依頼すればOKです。

日本語の「デスクトップ」フォルダは認識されず「desktop」フォルダが作成されたり、テキストファイルが保存されていなかったりしましたが、確認することで無事に作成されたようです。

Screenshot
タイトルとURLをコピーしました