# Install xcursorgen with Homebrew, apk, dnf, MacPorts, Nix, zypper

Create an X cursor file from a collection of PNG images. Version 1.0.9 via Homebrew; verified from local package data. Also installable with nix: nix profile install nixpkgs#xcursorgen.

## Install

```sh
sudo av install brew:xcursorgen
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install xcursorgen
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install xcursorgen
```

  Evidence: MacPorts ports tree: x11/xcursorgen/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add xcursorgen
```

  Evidence: Alpine Linux edge package indexes: xcursorgen from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- dnf (92%):

```sh
sudo dnf install xcursorgen
```

  Evidence: Fedora Rawhide package metadata: xcursorgen from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/07190dc5ae9f35ae73866675fed6d95fe6e8d9fe22c9d7cdf85862cb2ed24a4c-primary.xml.zst

- Nix (92%):

```sh
nix profile install nixpkgs#xcursorgen
```

  Evidence: nixpkgs package indexes: pkgs/by-name/xc/xcursorgen/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- zypper (92%):

```sh
sudo zypper install xcursorgen
```

  Evidence: openSUSE Tumbleweed package metadata: xcursorgen from https://download.opensuse.org/tumbleweed/repo/oss/repodata/50b07339cb64c8ed4091bdbabddadc1ff5737b090e478818a195b40d8a3292861a879139b4a3987c31109699fde9fbf4a716367ddf4eef77da75f96e3193d6ed-primary.xml.zst

## Package facts

- **Package key:** brew:xcursorgen
- **Package manager:** Homebrew
- **Version:** 1.0.9
- **Source summary:** Create an X cursor file from a collection of PNG images
- **Homepage:** <https://gitlab.freedesktop.org/xorg/app/xcursorgen>
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- xcursorgen (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 1.0.9
## Project history and usage

xcursorgen is the X.Org utility for compiling PNG cursor artwork and a small cursor manifest into the binary Xcursor file format used by libXcursor and X11 cursor themes.

### Project history

The xcursorgen man page is credited to Keith Packard in 2002, matching the early Xcursor work that added ARGB cursor files, nominal sizes, hotspots, and animated cursor frames to the X11 desktop stack.

The repository history reflects the larger XFree86-to-X.Org transition. It contains imported XFree86-era history in 2003 and 2004, then gains its modular app build system and a 1.0 version in July 2005 as X.Org split formerly monolithic tree components into separately released modules.

### Adoption history

xcursorgen spread as part of the X.Org application set rather than as a standalone trend-driven tool. It is the small build-time utility cursor theme authors need when converting source PNG assets into files that libXcursor can discover through theme directories.

Package-manager adoption follows the X.Org stack: the input package facts list it across Homebrew, Linux distributions, MacPorts, Nix, and related systems, which is typical for small X11 compatibility utilities that are still needed outside Linux desktops too.

### How it is used

Users write a config file whose lines name cursor size, hotspot coordinates, image filename, and optional frame delay. xcursorgen reads that file and writes an Xcursor output file; multiple images with the same size become an animated cursor sequence.

In practice, it is most often used by cursor theme maintainers and packaging scripts, not by everyday shell users. It turns editable PNG sources into the format expected under an Xcursor theme cursors directory.

### Why package nerds care

xcursorgen is classic package-nerd material: tiny, old, easy to overlook, but part of the toolchain that lets themed desktops exist. Its separate Homebrew formula is useful on macOS for people building or inspecting X11 cursor themes without pulling in a whole desktop environment.

### Timeline

- 2002: xcursorgen man page copyright date, during Keith Packard Xcursor work.
- 2003-11-14: First imported revision in the current X.Org app repository history.
- 2005-07-06: Modular xcursorgen build system added and version set to 1.0.
- 2005-12-15: XORG-7_0 tag in the modular X.Org era.
- 2025-05-18: xcursorgen-1.0.9 tag.

### Related projects

- libXcursor: runtime library that locates and loads Xcursor files.
- X.Org modular app releases: release family that distributes xcursorgen as a small standalone utility.
- Cursor theme packages: downstream consumers that compile PNG cursor assets into Xcursor files.

### Sources

- Git history and tags: https://gitlab.freedesktop.org/xorg/app/xcursorgen
- Xcursor man page: https://gitlab.freedesktop.org/xorg/lib/libxcursor/-/blob/master/man/Xcursor.man
- xcursorgen README: https://gitlab.freedesktop.org/xorg/app/xcursorgen
- xcursorgen man page: https://gitlab.freedesktop.org/xorg/app/xcursorgen/-/blob/master/man/xcursorgen.man


## Security Notes

broad file, network, media, or database tool signal.

- **Geiger risk:** blue / medium
- broad file, network, media, or database tool signal

## Other Package-Manager Records

- Nix - xcursorgen: normalized package name match | nixpkgs package indexes: pkgs/by-name/xc/xcursorgen/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- apk - xcursorgen - 1.0.9-r0: normalized package name match | Alpine Linux edge package indexes: xcursorgen from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Create and X cursor file from PNG images | https://xorg.freedesktop.org/archive/individual/app/
- apk - xcursorgen-doc - 1.0.9-r0: normalized package name match | Alpine Linux edge package indexes: xcursorgen-doc from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Create and X cursor file from PNG images (documentation) | https://xorg.freedesktop.org/archive/individual/app/
- dnf - xcursorgen - 1.0.9-4.fc45: normalized package name match | Fedora Rawhide package metadata: xcursorgen from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/07190dc5ae9f35ae73866675fed6d95fe6e8d9fe22c9d7cdf85862cb2ed24a4c-primary.xml.zst | Prepare X11 cursor sets for use with libXcursor | https://www.x.org
- zypper - xcursorgen - 1.0.9-1.6: normalized package name match | openSUSE Tumbleweed package metadata: xcursorgen from https://download.opensuse.org/tumbleweed/repo/oss/repodata/50b07339cb64c8ed4091bdbabddadc1ff5737b090e478818a195b40d8a3292861a879139b4a3987c31109699fde9fbf4a716367ddf4eef77da75f96e3193d6ed-primary.xml.zst | Utility to create an X cursor file from a collection of PNG images | https://xorg.freedesktop.org/
- MacPorts - xcursorgen: normalized package name match | MacPorts ports tree: x11/xcursorgen/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Combined YAML source

View the package source record on GitHub. [combined/xcursorgen.yml](https://github.com/mxcl/pkgdb/blob/main/combined/xcursorgen.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated package history
- pkgdb category and tag curation
- external package-manager database matches
- cross-ecosystem install command graph
