summarylogtreecommitdiffstats
path: root/codex-desktop-linux.install
blob: 52292580da5ff076b7fd7462535a01f00599ebe7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
_refresh_desktop() {
    if command -v update-desktop-database >/dev/null 2>&1; then
        update-desktop-database -q /usr/share/applications >/dev/null 2>&1 || true
    fi
    if command -v gtk-update-icon-cache >/dev/null 2>&1; then
        gtk-update-icon-cache -qtf /usr/share/icons/hicolor >/dev/null 2>&1 || true
    fi
}

post_install() {
    _refresh_desktop
    cat <<'EOF'

==> Codex Desktop (distsystem soft-fork). The in-app auto-updater is OFF;
    update with:  sudo pacman -Syu

==> Computer Use lets the Codex agent control your desktop. The MCP backend and
    in-app UI are enabled in this build, but accessibility (a11y) and input need
    a one-time, opt-in setup:

      1. Install the runtime bits:
           sudo pacman -S ydotool xdg-desktop-portal-wlr   # niri/sway/wlroots
           #            ... or xdg-desktop-portal-gnome for GNOME/Mutter

      2. Allow synthetic input (access to /dev/uinput):
           sudo usermod -aG input "$USER"                  # then log out / back in
           systemctl --user enable --now ydotool.service   # or run ydotoold manually

      3. Enable the AT-SPI accessibility bus (read the apps' a11y tree):
           gsettings set org.gnome.desktop.interface toolkit-accessibility true
           # non-GNOME alternative:
           busctl --user set-property org.a11y.Bus /org/a11y/bus org.a11y.Status \
                  IsEnabled b true
           # restart the target app afterwards so its a11y tree populates

      4. Verify from the app's Computer Use panel (Doctor), or run the bundled
         backend directly:
           "$(find /opt/codex-desktop -name codex-computer-use-linux 2>/dev/null | head -1)" doctor

    On niri, window list/focus works out of the box via niri IPC — no extra setup.

==> Read Aloud (TTS) is opt-in: enable it in app settings, then the Kokoro voice
    model downloads on first use (needs python-pip or uv, plus alsa-utils).
    The remote-mobile-control feature is experimental; OpenAI may still reject
    Linux host registration server-side.
EOF
}

post_upgrade() {
    _refresh_desktop
}

post_remove() {
    _refresh_desktop
}