OpenLogi

Installation

How to install OpenLogi on macOS, Linux, or Windows via Homebrew, package manager, or direct download.

macOS, Linux, and Windows are supported.

Quit Logi Options+ before installing or launching OpenLogi

The two applications fight over HID++ access and only one can own a receiver at a time. On Linux, the same applies to Solaar.

macOS

Requires macOS 13 or later.

brew install --cask openlogi

The official cask is the default path. To track the latest GitHub release instead:

brew tap aprilnea/tap
brew install --cask aprilnea/tap/openlogi@latest

Install either openlogi or openlogi@latest, not both.

Download the release

Download the signed, notarized DMG installer for Apple silicon or Intel.

Install the app

Open the DMG installer and drag OpenLogi.app to /Applications.

Launch and grant permissions

The packaged app starts its embedded OpenLogi Agent through macOS's registered Login Item service. This background helper owns HID access and the event tap; the GUI communicates with it over local IPC.

On first launch, follow the permission setup in the app. Grant Input Monitoring and Accessibility to OpenLogi Agent, not to the OpenLogi GUI. Input Monitoring lets the agent open devices, while Accessibility enables button remapping. Camera permission for webcam preview belongs to the OpenLogi GUI. Settings → Permissions reports the agent's current status.

Linux

Packages are published for both x86_64/amd64 and arm64/aarch64. Pre-built packages require GLIBC 2.35 or newer, with Ubuntu 22.04 as the baseline. NixOS users should use the NixOS module below.

Verified release installer

Install minisign through your distribution's package manager first. Run the installer as your normal user; do not run the whole script with sudo. Download the script over HTTPS, inspect it, then run it. Do not pipe the download into a shell:

curl --proto '=https' --proto-redir '=https' --tlsv1.2 \
  --fail --location --silent --show-error \
  --retry 3 --retry-connrefused \
  --output openlogi-install.sh \
  https://raw.githubusercontent.com/AprilNEA/OpenLogi/master/packaging/linux/install.sh
less openlogi-install.sh
sh openlogi-install.sh

The installer selects the latest GitHub release by default. It detects your architecture and apt, dnf, yum, zypper, rpm, or pacman, then downloads the matching package. Before invoking the package manager with sudo, it authenticates the package's detached signature against the minisign public key embedded in the script and verifies the package's entry in SHA256SUMS.

When systemd is available, the installer enables and starts openlogi-agent.service for your user. If the user service manager cannot be reached, the package stays installed and the installer reports that the agent could not start.

Add these options to sh openlogi-install.sh when needed:

OptionEffect
--version 0.8.11Install a specific release.
--package-manager zypperOverride package-manager detection.
--dry-runDownload and verify the package without installing or starting the agent.
--no-startInstall the package without enabling or starting the agent.

Manual package installation

Download the package for your distribution:

# Debian / Ubuntu
sudo dpkg -i openlogi-*.deb

# Fedora / RHEL
sudo rpm -i openlogi-*.rpm

# Arch Linux
sudo pacman -U openlogi-*.pkg.tar.zst

Direct links: .deb · .rpm · .pkg.tar.zst.

After installing a package manually, enable the background agent for your user:

systemctl --user enable --now openlogi-agent.service

The packages install udev rules that grant your user access to /dev/hidraw* (HID++ commands), /dev/uinput (the virtual remapping device), and your Logitech mouse's /dev/input/event* node without sudo.

If a device was already plugged in when the udev rules were installed, unplug and replug the receiver (or power-cycle the device) so the new rules apply. The GUI's Settings → Permissions page shows a live access indicator.

NixOS

Prefer the repository's NixOS module over adding the package alone. The module installs OpenLogi and its udev rules, and starts the user agent with the graphical session by default. Merge the following into your existing flake, keeping your host's hardware and system configuration modules:

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  inputs.openlogi.url = "github:AprilNEA/OpenLogi";
  inputs.openlogi.inputs.nixpkgs.follows = "nixpkgs";

  outputs = { nixpkgs, openlogi, ... }: {
    nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux"; # or aarch64-linux
      modules = [
        openlogi.nixosModules.default
        { programs.openlogi.enable = true; }
      ];
    };
  };
}

See INSTALL-linux.md for the complete flake example and the launchAtLogin option.

For source installs and distros without systemd, see INSTALL-linux.md.

Windows

Download the signed .msi installer for x86_64 or arm64. Portable .zip builds are attached to each release too.

Both ship the GUI (OpenLogi.exe) alongside the background agent (openlogi-agent.exe), which owns all device I/O; keep the two files side by side when using the portable zip, or the GUI has nothing to connect to. The agent shows a notification-area icon (Show Main Window / Quit) so the app stays reachable after the main window is closed; to hide it, set show_in_menu_bar = false in the TOML [app_settings] block and restart the agent (the GUI toggle is macOS-only today).

Installation source

Since v0.8.6, Settings → Updates → Installation source shows how the running copy was installed: Homebrew, a macOS app bundle, a Linux package, Nix, a Windows MSI, or a portable ZIP. Unrecognized installations appear as Not identified. The detected source is informational and does not change update behavior.

Build from source

See DEVELOPMENT.md in the repository.

On this page