# bilibili-linux: A Linux Desktop Client with Roaming and AppImage Support

> bilibili-linux is an open source Electron-based Linux port of the official Bilibili client, with roaming, external-region search, update checks and optional VA-API video decoding. Its source is available under the MIT License, but the README also places responsibility for account and regional-use risks on the user.

**msojocs/bilibili-linux** — 基于哔哩哔哩官方客户端移植的Linux版本 支持漫游

- Repository: https://github.com/msojocs/bilibili-linux
- Website: https://www.jysafe.cn/
- Stars: 1,349 · Forks: 77
- Language: TypeScript
- License: MIT
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/msojocs-bilibili-linux

## What bilibili-linux Changes for Linux Users

bilibili-linux addresses the absence of a conventional native Linux build of the official Bilibili desktop client. The project presents itself as a Linux version of that client and adds features that are especially relevant to Linux desktop use, including a frameless title bar, support for full-screen playback on small displays, an application menu with an exit command, update checks and roaming. It also documents external-region search and a danmaku sharing feature.

The intended audience is not limited to developers. The README points ordinary users to release downloads, an AUR package, AppImageLauncher and a Gentoo overlay, while also documenting manual building for people who want to inspect or modify the source. The project is written primarily in TypeScript and uses Electron, so users who prefer a lightweight native application may find this architecture less suitable.

The roaming feature is the project's clearest product distinction. The documentation also acknowledges that regional use can carry account-related consequences, including the possibility of suspension or theft, although those risks are not defined technically in the README. The license covers the project code, not the resulting service behavior or the Bilibili client rights. The repository identifies the Bilibili client copyright as belonging to Shanghai Kuayou Digital Technology Co., Ltd.

## Electron Architecture and Feature Integration

Based on the repository layout and package configuration, the application is built as an Electron desktop application. The `package.json` defines Linux packaging through `electron-builder`, with x64 and arm64 targets, and provides a separate `pkg-loongarch` build command for LoongArch systems. The normal build pipeline runs TypeScript compilation through `tsc -b` and then invokes `vite build`, which indicates that the interface and application code are assembled through a Vite-based frontend build.

The project does not present itself as a replacement for Bilibili's server protocols with a separately documented native client stack. Instead, the README describes the work as porting the official client and lists deobfuscation, debugging and reverse engineering among the techniques used. That makes the architecture relevant to users evaluating source transparency, but it also means the README does not explain every injection point or service boundary.

Several features are implemented through changes around the Electron application rather than a standalone Linux package. The README documents the F12 developer panel, proxy handling for `bilipc.bilibili.com`, GPU feature flags, a language setting inside “其它设定” and an optional “空降助手” that depends on Python tooling. The project also links documentation for AI transcription under `docs/AiTranscribe.MD`.

## Installing bilibili-linux and Starting a First Build

The README gives two installation paths. For an existing binary, it directs users to the GitHub Release page, while the AppImage route uses AppImageLauncher. The project also publishes an AUR package named `bilibili-bin` and a Gentoo overlay entry. For a source installation, the documented sequence is to clone the repository, run the setup script and launch the generated binary.

For a source build, begin by cloning the repository:

```bash
git clone https://github.com/msojocs/bilibili-linux.git
cd bilibili-linux
```

The README then identifies `tools/setup-bilibili.sh` as the installation step. It does not provide its command-line flags or explain which system dependencies it installs, so the script should be reviewed before execution rather than treated as a transparent package-manager recipe.

After setup, start the application with:

```bash
bin/bilibili
```

The package file defines a `pkg-linux` script for building the Linux package.

The README does not give a separate dependency installation command for a manual build. For end users who do not need to modify the source, downloading a release artifact or using the documented AppImageLauncher route is the clearer path.

## Electron 43 and VA-API Hardware Decoding

The README gives unusually specific video decoding instructions. It recommends Electron `43.1.1` and states that NVIDIA hardware video decoding requires Electron 43 or later, corresponding to Chromium 130 or later in the project’s explanation. The feature set includes `AcceleratedVideoDecodeLinuxGL`, `AcceleratedVideoDecodeLinuxZeroCopyGL`, `VaapiOnNvidiaGPUs`, `VaapiIgnoreDriverChecks` and `PlatformHEVCDecoderSupport`.

For NVIDIA systems, the documented driver installation differs by distribution. Arch Linux uses `pacman`, while Debian and Ubuntu use `apt`. The required environment variable is:

```bash
export LIBVA_DRIVER_NAME=nvidia
```

The flags belong in `~/.config/bilibili/bilibili-flags.conf`:

```text
--ignore-gpu-blocklist
--enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,VaapiOnNvidiaGPUs,VaapiIgnoreDriverChecks,PlatformHEVCDecoderSupport
--enable-gpu-rasterization
--enable-zero-copy
--disable-gpu-sandbox
```

Intel and AMD systems use the same general flag file but replace the NVIDIA-specific feature with `VaapiVideoDecoder`. The README says Mesa VA-API does not require an additional environment variable for those vendors. Users should be aware that `--disable-gpu-sandbox` is explicitly part of the project’s suggested configuration, so adopting it changes the runtime security posture of the application.

## Verifying Decoding and Handling Proxy Failures

The project provides a concrete way to check whether playback is using the GPU decoder. After video playback starts, inspect the process file descriptors for a DRM video-engine entry:

```bash
cat /proc/$(pgrep -f "type=gpu-process.*bilibili")/fdinfo/* | grep drm-engine-video
```

According to the README, a non-zero value indicates that the GPU decoding engine is working. The same section also points users to `chrome://gpu` and the “Video Decode” status. These checks matter because installing a VA-API driver or adding Chromium flags does not by itself confirm that a particular desktop session is using hardware decoding.

The README identifies a separate failure mode involving proxies. A system proxy such as Clash can prevent resolution of `bilipc.bilibili.com`, which may result in a white screen. It states that Electron 43 and later include proxy bypass handling. The documentation does not specify the exact proxy bypass semantics, so users should diagnose the domain and Electron version before assuming that every proxy setup is covered.

For Wayland sessions, the README warns against `--use-gl=angle --use-angle=gl` because those settings may cause VA-API to fail in some Linux desktop environments. Its recommendation is to retain Electron’s default EGL or GLX backend.

## Limitations, Alternatives and Upgrade Cost

The largest limitation is not a missing feature but the dependency on an unofficial Linux client built from the official client. The README warns that account suspension or theft may result from use, and its disclaimer says the maintainer is not responsible for those outcomes. It also states that the MIT License applies to the project, not its artifacts or Bilibili’s service rights. Users must separately assess the service terms and the legal status of distribution in their jurisdiction.

A real alternative is the ordinary web client accessed in a browser. The browser approach does not install an Electron application, does not require this project’s GPU flag file and avoids maintaining a separate desktop build. It also does not provide the documented roaming and external-region search features. Another alternative is using the official client in a supported operating system through a virtual machine or remote desktop, which preserves the official application but changes where the graphical session runs.

Upgrades involve several project-specific layers. The repository has release artifacts, a `continuous` release tag, an AUR package and a source build. The `CHANGELOG.md` is the documented place for release changes, while the README records recent releases including `v1.19.0-3`, published on 2026-09-29. The last push was on 2026-09-30, so the repository is not archived and its activity is recent relative to the project’s release history. Even so, each upgrade should be checked against the documented Electron version and the GPU flags, because the feature configuration is tied to Chromium and driver behavior.

## Conclusion

bilibili-linux fits Linux users who want a Bilibili desktop client, roaming features and an AppImage or source-based installation, but it is not a suitable replacement for a fully supported official Linux release. Buyers and maintainers should first inspect the account and regional restrictions, verify the available Electron version, and test video decoding on their specific GPU and desktop session before adoption.

## FAQ

### How do I install bilibili-linux on Linux?

The README offers release downloads, an AppImage through AppImageLauncher, an AUR package and a Gentoo overlay. For a manual source path, clone the repository, run `tools/setup-bilibili.sh`, and start it with `bin/bilibili`.

### Does bilibili-linux support hardware video decoding?

The README documents VA-API configuration for Intel, AMD and NVIDIA GPUs. It recommends Electron `43.1.1`, provides vendor-specific flags and suggests checking `/proc` file descriptors for `drm-engine-video` after playback begins.

### What are the main risks of using bilibili-linux?

The project is a Linux port of the official Bilibili client and documents roaming and external-region search. Its disclaimer warns about possible account suspension or theft, while the MIT License applies to the project code rather than its artifacts or Bilibili’s client rights.

## Sources

- [License: MIT](https://github.com/msojocs/bilibili-linux/blob/master/LICENSE)
- [msojocs/bilibili-linux on GitHub](https://github.com/msojocs/bilibili-linux)
- [Project website](https://www.jysafe.cn/)
- [README](https://github.com/msojocs/bilibili-linux/blob/master/README.md)
- [Releases](https://github.com/msojocs/bilibili-linux/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/msojocs-bilibili-linux
