Skip to content

Linux Support for CLI #15

@Mujtaba0150

Description

@Mujtaba0150

I've been recently using the CLI tool on Fedora and I noticed that the CLI doesn't support Linux, and it seems to just fallback to MacOS for compatibility, leading to errors like this because Linux does not support the open binary:

$ beeper targets start desktop
55 |             ALLOW_MULTIPLE_INSTANCES: 'true',
56 |             BEEPER_PROFILE: target.profile ?? target.id,
57 |             BEEPER_USER_DATA_DIR: target.dataDir,
58 |         }
59 |         : process.env;
60 |     spawn('open', args, { detached: true, stdio: 'ignore', env }).unref();
         ^
error: Executable not found in $PATH: "open"
      path: "open",
     errno: -2,
   syscall: "spawn open",
 spawnargs: [ "-n", "/usr/local/bin/beeper", "--args", "--no-enforce-app-location" ],
      code: "ENOENT"

      at spawn (node:child_process:667:35)
      at spawn (node:child_process:14:39)
      at launchDesktopApp (/home/mujtaba0150/.cache/beeper-cli/binary/7a07d52834cdc701/dist/lib/profiles.js:60:5)
      at async run (/home/mujtaba0150/.cache/beeper-cli/binary/7a07d52834cdc701/dist/commands/targets/start.js:16:34)
      at async _run (/home/mujtaba0150/.cache/beeper-cli/binary/7a07d52834cdc701/node_modules/@oclif/core/lib/command.js:183:33)

Bun v1.3.14 (Linux x64)

There is no code that checks for Linux in profiles.js:

export async function findDesktopAppPath() {
    const installations = await readInstallations().catch(() => ({ desktop: undefined }));
    if (installations.desktop?.path && await isBeeperDesktopApp(installations.desktop.path))
        return installations.desktop.path;
    if (process.platform === 'darwin') {
        for (const path of [
            '/Applications/Beeper.app',
            '/Applications/Beeper Nightly.app',
        ]) {
            if (await isBeeperDesktopApp(path))
                return path;
        }
    }
    if (process.platform === 'win32') {
        const localAppData = process.env.LOCALAPPDATA ?? join(homedir(), 'AppData', 'Local');
        const candidates = [
            join(localAppData, 'Programs', 'Beeper', 'Beeper.exe'),
            join(localAppData, 'Programs', 'Beeper Nightly', 'Beeper Nightly.exe'),

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions