Skip to content
Scott Busche edited this page Jun 21, 2025 · 6 revisions

Freelens development

Nightly builds

You can download the nightly builds of the current main branch.

Build from the source

You can build the application using this repository.

Prerequisites

Install a compiler and Python setuptools, for example:

# Debian/Ubuntu
apt install build-essential python3-setuptools libnss3 
# MacOS
brew install bash python3-setuptools
# Windows
winget install Microsoft.VisualStudio.2022.Community Python.Python.3.13
& 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe'
# then install required components

Use NVM or mise-en-place or windows-nvm to install the required Node.js version.

From the root of this repository:

nvm install
# or
mise install
# or
winget install CoreyButler.NVMforWindows
nvm install 22.14.0
nvm use 22.14.0

Install Pnpm:

corepack install
# or
curl -fsSL https://get.pnpm.io/install.sh | sh -
# or
winget install pnpm.pnpm

Build app

pnpm i
pnpm build
pnpm build:app dir
# note: on Windows build:app must be ran in elevated mode

Run it from the directory:

pnpm start

Cross compilation

You can build arm64 binary on Linux amd64 or amd64 binary on MacOS arm64.

On Linux, install cross-compiler (macOS includes this by default):

# Debian/Ubuntu
apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

Then set the environment with support for other architectures:

# Debian/Ubuntu
export CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
export DOWNLOAD_ALL_ARCHITECTURES=true
# MacOS
export DOWNLOAD_ALL_ARCHITECTURES=true

And rebuild binary packages for the foreign architecture:

# Debian/Ubuntu
pnpm electron-rebuild -a arm64
# MacOS
pnpm electron-rebuild -a x64

Finally, generate binary packages:

# Debian/Ubuntu
pnpm build:app AppImage deb --arm64
# MacOS
pnpm build:app dmg pkg --x64

Run app

To run the app in developer mode:

pnpm dev

Additional components

This application uses additional components hosted in separate repositories:

It bundles binaries for:

The Renovate bot keeps the versions up-to-date.

The Automated kubectl versions workflow updates the list of the latest kubectl patch versions for each minor version.

Distribution

Additional repositories for distributing packages:

Releasing

The Automated npm version workflow prepares a new PR for semantic versioning. After the PR is merged, the Release workflow handles the release process:

  1. Prepares a new draft release.
  2. Builds and notarizes binaries for each supported OS and architecture.
  3. Finalizes the new release.
  4. Publishes NPM packages.
  5. Adds the indexes for APT repository.
Clone this wiki locally