This project repackages the official Devin Desktop Linux .deb for Arch Linux and derivatives like Manjaro.
Latest Version Available: 3.10.48
Devin Desktop is the successor to Windsurf. The package name is now devin-desktop-bin, but it still provides a compatibility windsurf command symlink for existing shell scripts and workflows.
curl -sSL https://raw.githubusercontent.com/BOTOOM/devin-bin-arch/main/install_windsurf | bashWhat this does:
- Clones this repository to a temporary directory.
- Prompts you to choose between Standard and Electron versions.
- Builds and installs the selected package using
makepkg. - Replaces an installed
windsurf-binpackage if present. - Cleans up temporary files.
Environment Variable:
Set DEVIN_INSTALL_CHOICE to skip the prompt:
DEVIN_INSTALL_CHOICE=standardfordevin-desktop-binDEVIN_INSTALL_CHOICE=electronfordevin-desktop-bin-electron-latest
The old WINDSURF_INSTALL_CHOICE variable is still accepted for compatibility.
DEVIN_INSTALL_CHOICE=standard curl -sSL https://raw.githubusercontent.com/BOTOOM/devin-bin-arch/main/install_windsurf | bashUse this when you want to check the upstream Devin Desktop changelog yourself and rebuild locally.
Prerequisites:
- Docker
base-develpackage group
Usage:
git clone https://github.com/BOTOOM/devin-bin-arch.git
cd devin-bin-arch
./check_and_update_local.shWhat this does:
- Builds a minimal Docker image.
- Reads the Devin Desktop changelog and finds the newest Linux x64
.debURL. - Downloads the
.debto calculate the SHA256 hash. - Updates
package/PKGBUILDwith the version, checksum, and full upstream URL. - Compares the package version with your installed version.
- Asks if you want to build and install the update.
The installed system files move from /usr/share/windsurf to /usr/share/devin-desktop, and the main command becomes devin-desktop. This package also installs /usr/bin/windsurf as a compatibility symlink.
According to the official Devin Desktop FAQ, Linux user data is migrated automatically on first launch:
| Data | Legacy path read by Devin | New path written by Devin |
|---|---|---|
| IDE settings, keybindings, snippets, workspaces, global storage | ~/.config/Windsurf/ |
~/.config/Devin/ |
| Extensions | ~/.windsurf/extensions/ |
~/.devin/extensions/ |
| System-level rules, workflows, skills | /etc/windsurf/ |
/etc/devin/ |
| Codeium/Windsurf user settings, MCP config, global workflows, global skills, CLI binaries | ~/.codeium/ |
unchanged |
During the transition, Devin Desktop reads both legacy Windsurf paths and new Devin paths. New IDE and extension data is written to the Devin paths, while ~/.codeium/ intentionally keeps its existing structure, including subdirectories such as ~/.codeium/windsurf/global_workflows/, ~/.codeium/windsurf/skills/, and ~/.codeium/windsurf/bin/. Do not rename or move ~/.codeium/windsurf to a Devin path.
Before migrating, close Windsurf and make a backup:
mkdir -p "$HOME/windsurf-migration-backup"
cp -a "$HOME/.config/Windsurf" "$HOME/.windsurf" "$HOME/.windsurf-server" "$HOME/.codeium" "$HOME/windsurf-migration-backup/" 2>/dev/null || trueThen install Devin Desktop and launch it once:
devin-desktopDo not pre-seed the new directories before the first launch. Let Devin Desktop do the official migration first. If extensions, settings, keybindings, snippets, or agent state are still missing after first launch, close Devin Desktop and copy only missing data:
mkdir -p "$HOME/.config/Devin" "$HOME/.devin" "$HOME/.devin-server"
rsync -a --ignore-existing "$HOME/.config/Windsurf/User/" "$HOME/.config/Devin/User/" 2>/dev/null || true
rsync -a --ignore-existing "$HOME/.config/Windsurf/globalStorage/" "$HOME/.config/Devin/globalStorage/" 2>/dev/null || true
rsync -a --ignore-existing "$HOME/.config/Windsurf/Workspaces/" "$HOME/.config/Devin/Workspaces/" 2>/dev/null || true
rsync -a --ignore-existing "$HOME/.windsurf/extensions/" "$HOME/.devin/extensions/" 2>/dev/null || true
rsync -a --ignore-existing "$HOME/.windsurf-server/" "$HOME/.devin-server/" 2>/dev/null || trueKeep the backup and old Windsurf folders until you confirm that extensions, login state, workspaces, rules, workflows, skills, and agent memories are present in Devin Desktop. Do not delete ~/.windsurf, ~/.devin, or ~/.codeium during the transition; the FAQ says legacy Windsurf paths remain readable and the ~/.codeium directory structure remains unchanged in this release.
install_windsurf: Standalone installation script used by the curl command.check_and_update_local.sh: Local maintenance script that orchestrates the Docker check and update process._install_local.sh: Internal script used bycheck_and_update_local.shto perform local installation.update.sh: Runs Docker and updatespackage/PKGBUILDfrom upstream Devin Desktop release data.Dockerfile: Docker configuration for the version checker container.package/PKGBUILD: Arch Linux package build description..github/workflows/update.yml: GitHub Action that updates thePKGBUILDautomatically.scripts/check-windsurf-version.sh: Version checker that reads the Devin Desktop changelog.
git clone https://github.com/BOTOOM/devin-bin-arch.git
cd devin-bin-arch/package
makepkg -sf
sudo pacman -U devin-desktop-bin-3.0.12-1-x86_64.pkg.tar.*For the Electron package variant:
sudo pacman -U devin-desktop-bin-electron-latest-3.0.12-1-x86_64.pkg.tar.*The update workflow runs on a schedule, checks the Devin Desktop changelog, and opens an automated PR when a newer Linux .deb is available.
This PKGBUILD conflicts with old Windsurf packages because both own overlapping commands and desktop integrations. It provides windsurf and windsurf-bin for compatibility while installing Devin Desktop under its new upstream name.
This is an unofficial package. Devin Desktop and Windsurf are trademarks of their respective owners. This package repackages the official .deb file distributed by Cognition/Devin.
The packaging scripts are licensed under MIT, while Devin Desktop itself has its own license terms.