Open-source project
phisch/phinger-cursors avatar
phisch/phinger-cursors

phinger-cursors: a cursor theme built from parts, a schema and a Figma file

Most likely the most over engineered cursor theme.

819 stars21 forksUnknownCC-BY-SA-4.0

At a glance

What is it?
Phinger Cursors describes itself as the most over engineered cursor theme, and the readme backs that up. Every cursor is assembled from shared parts, the parts are drawn on 24 and 32 pixel grids so they scale cleanly, the sprites carry metadata for aliases, left-handed variants, hotspots and animation, and the whole thing is exported from a Figma document through a JSON schema before a builder turns it into installable X11 themes.
Who is it for?
Adopt Phinger Cursors if you ricing a Linux desktop and want a theme with a genuine design system behind it, with a dark and a light variant plus left-handed versions and six pixel sizes, rather than a repackaged set of icons. Do not adopt it expecting the installer to configure everything, because enabling the theme after installing it is a separate manual step in most environments.
Can I use it commercially?
Yes, with credit. CC-BY-SA-4.0 allows commercial use as long as you credit the authors and indicate what you changed. It is written for creative content, so check how it applies to any code.
Is it still maintained?
Yes. The repository last received commits 16 days ago.
What is it written in?
GitHub does not report a main language for this repository.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The over-engineering is the feature

Phinger Cursors is introduced with a line that reads as a joke and turns out to be a design brief. It is most likely the most over engineered cursor theme out there, and the readme then spends its length explaining what the engineering is.

The structure is layered, and each layer exists to make the next one possible. There are parts, which are the reusable pieces a cursor is drawn from. There are sprites, which are the parts assembled and styled, named and given the metadata that a cursor theme needs. And there is the theme itself, the set of sprites packaged for an operating system to read.

The parts are the key idea. Every cursor sprite is assembled from core parts, so changing one part changes every sprite that uses it, and the readme says the parts are designed very modularly, which lets one part produce several different icons. The example given is the hand, which comes with a variation for each phinger, so the fingers are separate parts and the hand is the frame around them.

Each part is designed on a base grid of 24 and 32, and the readme claims that this makes the result pixel perfect for any reasonable size. The table of sprites makes the claim concrete, showing the same cursor rendered at 24, 32, 48, 64, 72, 96 and 128.

So the theme is not a folder of hand-drawn cursor images. It is a small assembly system, and the reason a finger can be reused across every hand is that the hand is not a picture of a hand but a frame plus a set of interchangeable fingers. That is a good deal of engineering for a mouse pointer, and it is the reason the project is interesting rather than merely decorative.

Four installation routes, and one package name that is spelled differently

The install section covers four situations, and the first three are handled by distributions rather than by the project.

On Arch Linux the author maintains a package in the user repository, and the readme suggests an AUR helper:

sh
paru -S phinger-cursors

There is a note attached to that, asking to be told if anyone wants to maintain the package in the official Arch Linux repositories so the instructions can be updated, which tells you the maintainer is doing packaging work that upstream distributions usually take over.

Ubuntu is served by a distribution package, with the readme crediting the person who packaged it:

sh
apt-get update
apt-get install phinger-cursor-theme

The name of that package is worth reading twice, because it is spelled differently from the project and from the Arch package. That is the kind of detail that costs a user ten minutes and a search.

NixOS is covered too, through the configuration file:

nix
environment.systemPackages = with pkgs; [
  phinger-cursors
];

and the readme also gives a home-manager configuration for the pointer cursor specifically, naming the light variant, pointing at the package, setting a size of 32 and enabling GTK, which is a nice detail because the pointer cursor size is the one setting users actually change.

The manual route is a tarball extracted into the icon directory for the current user, or into the system directory for all users, and the readme gives the one-line download and extract.

Enabling the theme is a second job

Installing the files is not the same as using the theme, and the readme is careful to separate the two.

If you have a settings application installed that can do it, the readme names three: GNOME Tweaks, a tool called nwg-look, and LXAppearance. Otherwise you enable it manually, and the manual path is two files.

The first is the default icon theme file, where the theme is declared by inheritance:

ini
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=phinger-cursors-light

The second is the GTK settings file, where the cursor theme is named directly:

ini
[Settings]
gtk-cursor-theme-name=phinger-cursors-light

Both point at a variant name, and the readme lists the four: a dark variant, a light variant, and their left-handed counterparts. So the choice a user makes is not just light or dark, it is also which hand, and the inheritance in the icon theme file is the mechanism that makes the cursor part of the theme rather than a separate setting.

That two-file dance is standard for X11 icon and cursor themes, and it is also the reason a settings application is worth having. Nothing about it is specific to this project, but a project that adds four variants makes the choice explicit rather than leaving it to a single setting in a preferences panel.

Cursor size is a per desktop environment question

The size section is the most environment-specific part of the readme, and it lists the sizes first: 24, 32, 48, 64, 96 and 128.

Then it gives a command per desktop environment, with a placeholder to be replaced by the size you want. On GNOME it is a settings call on the desktop interface schema, on MATE it is a call on the peripherals-mouse schema, and on Xfce it is a configuration query that sets the GTK cursor theme size property on the xsettings channel.

The MATE entry is worth a second look, because the schema it uses is the GNOME one rather than a MATE specific one, which is the kind of quirk that makes a settings application valuable. The readme also covers the older X11 resource path, where the size goes into the X resources file as a cursor size setting.

So the same theme is resized four different ways depending on the desktop, which is a fair summary of what a cursor theme has to live with on Linux. Wayland appears in the topic list of the repository, and the home-manager configuration shows the pointer cursor being set through that path, but the manual instructions in the readme are the X11 ones, with the icon theme inheritance and the GTK settings file.

The design pipeline runs from Figma to a JSON schema

How it is made is the section that makes this project more than a folder of images.

The cursors are designed in a Figma document, and the readme links the multi-page document and notes that an up to date copy lives in the repository root as a Figma file. That file is part of the repository, which matters for a licensed project, and it is also what makes the build reproducible.

From Figma, the pipeline moves through a separate tool, the Cursor Theme Builder. The readme describes what that tool provides: a JSON schema to describe a cursor theme, an exporter that creates such a JSON file and the assets from a Figma file, and a builder that makes fully functioning X11 cursor theme variants from it. It also transforms cursors into left-handed versions and includes an animation system.

The metadata carried by a sprite is the other half of the story. Each cursor records which cursor and variant it belongs to, what its aliases should be, how to transform it into a left-handed cursor, a hotspot element, and instructions for how it should be animated. That is a lot of information for a picture, and it is what lets the builder produce a theme with the aliases an application expects, with a hotspot that lands where the pointer tip should be, and with a frame sequence for the animated cursors.

The repository contains workflows that extract the theme JSON and the assets and that draft a release with the built variants, so the whole chain from a design file to a downloadable tarball is in version control.

A share-alike licence, a lineage of inspiration, and an issue tracker for feedback

The licence and credits section is short and has a detail that matters for anyone who wants to reuse the assets.

All the assets, and that includes the Figma document itself, are licensed under the Creative Commons share-alike licence, version 4.0. Since the source artwork is in the repository, a modified theme that is redistributed carries the same obligation, and the design file travels with the assets rather than being kept private.

The lineage is acknowledged as well. The cursors were designed from scratch, but they drew inspiration from another cursor theme, which is itself based on the KDE Breeze cursors, and the readme thanks both along with every other cursor theme out there.

The contribution section sets a boundary that is worth stating plainly. Issues are the way in, for missing cursors, for symlinks that do not look right and for design suggestions. But the author says he cannot let people contribute to the Figma document directly, and will listen to constructive feedback through the issues instead. So the design file is a single source of truth under one person's control, and the repository is where the discussion happens.

There is also a community pointer, a Discord server for people who make Linux desktop projects, and a note that the author is working on the cursors and other projects there. The release history shows the rhythm: version 2.0 in April 2024, a 2.1 in July 2024 described as fixing a whoops, and a 2.2 in October 2026, with the last push on the same day.

Editorial conclusion

Adopt Phinger Cursors if you ricing a Linux desktop and want a theme with a genuine design system behind it, with a dark and a light variant plus left-handed versions and six pixel sizes, rather than a repackaged set of icons. Do not adopt it expecting the installer to configure everything, because enabling the theme after installing it is a separate manual step in most environments. Before you commit, check the package names in your distribution's repository, since the Ubuntu package name is spelled differently from the project name, and remember that the artwork and the Figma source are under a share-alike licence, so a modified theme you distribute has obligations.

Frequently asked questions

How do I install the Phinger Cursors theme?

On Arch Linux the author maintains a package in the user repository, which an AUR helper can install. Ubuntu has a distribution package, spelled differently from the project name, and NixOS users can add the package to the system packages list or configure the pointer cursor through home-manager. A manual install is a tarball extracted into the local share icons directory for one user, or into the system icons directory for all users.

How do I enable the Phinger Cursors theme after installing it?

Either through a settings application such as GNOME Tweaks, nwg-look or LXAppearance, or manually. The manual route is to inherit the theme in the default icon theme file, pointing at the light or dark variant, and to name the cursor theme in the GTK settings file. There are dark and light variants plus left-handed counterparts of each.

Which cursor sizes does Phinger Cursors offer?

24, 32, 48, 64, 96 and 128. The readme gives a separate command per desktop environment, using the desktop interface schema on GNOME, the peripherals mouse schema on MATE, a configuration query on the xsettings channel on Xfce, and the older X resources file for the classic X11 path.

How are the Phinger Cursors actually drawn?

They are designed in a multi-page Figma document, with a copy of that file kept in the repository root. Every cursor sprite is assembled from reusable core parts designed on base grids of 24 and 32, and a separate tool, the Cursor Theme Builder, exports a JSON theme description and its assets from Figma and builds working X11 theme variants, including left-handed transformations and animation.

Can I contribute designs to Phinger Cursors?

Not directly to the Figma document, since the author keeps that under his own control, but issues are welcome for missing cursors, broken symlinks and design suggestions, and the author says he will listen to constructive feedback there. The project also has a Discord community for people making Linux desktop projects.

Official sources

  1. Issues
  2. License: CC-BY-SA-4.0
  3. phisch/phinger-cursors on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/phisch-phinger-cursors.svg)](https://hysenlabs.com/projects/phisch-phinger-cursors)

Was this useful?