Skip to main content

The hassle-free cursor building toolbox.

Project description

Clickgen

ci code coverage

Clickgen is cross-platform python library for building XCursor and Windows Cursors.

Clickgen's core functionality is heavily inspired by quantum5/win2xcur from v2.0.0 and onwards.

Notices

shoutout-sponsors

Note The project's success depends on sponsorships. Meeting sponsorship goals for ful1e5 GitHub Account will drive new releases and ongoing development.

  • 2024-05-24: Clickgen now allows cursor bitmap re-canvasing by specifying size using the cursor_size:canvas_size format. See changelog-05212024
  • 2023-08-23: ctgen CLI supports .json and .yaml/.yml as configuration file.
  • 2023-08-17: Cursor size settings moved to [cursors.fallback_settings] in config. See changelog-08172023
  • 2022-06-15: Docker Image support deprecated due to cross-platform compatibility.
  • 2022-07-09: :warning: All the functionality and modules are removed from older versions in v2.0.0. I will be restricting any updates to the >=v1.2.0 versions to security updates and hotfixes. Check updated documentations for building cursors from API and CLIs usage.

Requirements

Install

pip3 install clickgen

Note Distributions' packages are not affiliated with clickgen developers. If you encounter any issues with the incorrect installation, you should contact the package maintainer first.

Arch Linux

Usage

clickgen CLI

Linux Format (XCursor)

For example, if you have to build ponter.png file to Linux Format:

clickgen samples/pngs/pointer.png -x 10 -y 10 -s 22 24 32 -p x11

You also build animated Xcursor by providing multiple png files to argument and animation delay with -d:

clickgen samples/pngs/wait-001.png samples/pngs/wait-001.png -d 3 -x 10 -y 10 -s 22 24 32 -p x11

Windows Formats (.cur and .ani)

To build ponter.png file to Windows Format (.cur):

Warning: Windows Animated Cursor only support single size.

clickgen samples/pngs/pointer.png -x 10 -y 10 -s 32 -p windows

You can also specify the size in the size:canvas_size format to enable canvasing:

clickgen samples/pngs/pointer.png -x 10 -y 10 -s 20:32 -p windows

For animated Windows Cursor (.ani):

clickgen samples/pngs/wait-001.png samples/pngs/wait-001.png -d 3 -x 10 -y 10 -s 32 -p windows

For more information, run clickgen --help.

ctgen CLI

This CLI allow you to generate Windows and Linux Cursor themes from config (.toml.yml,and .json) files.

ctgen sample/sample.json
ctgen sample/sample.toml
ctgen sample/sample.yaml

You also provide multiple theme configuration file once as following:

ctgen sample/sample.toml sample/sample.json

Override theme's name of theme with -n option:

ctgen sample/sample.toml -n "New Theme"

You can run ctgen --help to view all available options and you also check samples directory for more information.

API Examples

Static XCursor

from clickgen.parser import open_blob
from clickgen.writer import to_x11

with open("samples/pngs/pointer.png", "rb") as p:
    cur = open_blob([p.read()], hotspot=(50, 50))

    # save X11 static cursor
    xresult = to_x11(cur.frames)
    with open("xtest", "wb") as o:
        o.write(xresult)

Animated XCursor

from glob import glob
from typing import List

from clickgen.parser import open_blob
from clickgen.writer import to_x11

# Get .png files from directory
fnames = glob("samples/pngs/wait-*.png")
pngs: List[bytes] = []

# Reading as bytes
for f in sorted(fnames):
    with open(f, "rb") as p:
        pngs.append(p.read())

cur = open_blob(pngs, hotspot=(100, 100))

# save X11 animated cursor
result = to_x11(cur.frames)
with open("animated-xtest", "wb") as o:
    o.write(result)

Static Windows Cursor (.cur)

from clickgen.parser import open_blob
from clickgen.writer import to_win

with open("samples/pngs/pointer.png", "rb") as p:
    cur = open_blob([p.read()], hotspot=(50, 50))

    # save Windows static cursor
    ext, result = to_win(cur.frames)
    with open(f"test{ext}", "wb") as o:
        o.write(result)

Animated Windows Cursor (.ani)

from glob import glob
from typing import List

from clickgen.parser import open_blob
from clickgen.writer import to_win

# Get .png files from directory
fnames = glob("samples/pngs/wait-*.png")
pngs: List[bytes] = []

# Reading as bytes
for f in sorted(fnames):
    with open(f, "rb") as p:
        pngs.append(p.read())

cur = open_blob(pngs, hotspot=(100, 100))

# save Windows animated cursor
ext, result = to_win(cur.frames)
with open(f"test-ani{ext}", "wb") as o:
    o.write(result)

Documentation

Check wiki for documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clickgen-2.2.5.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

clickgen-2.2.5-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file clickgen-2.2.5.tar.gz.

File metadata

  • Download URL: clickgen-2.2.5.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for clickgen-2.2.5.tar.gz
Algorithm Hash digest
SHA256 6c90946bda0e1bcfb2e38e18628cf3d334f3a79ba91695792c6eaf32ffddb05b
MD5 93473a8567e25e57ca67f6e6323267fb
BLAKE2b-256 e8e4d1a33e1d9763b15eb95487512d11df89bc740ea1ff8bb497e3db3c931360

See more details on using hashes here.

File details

Details for the file clickgen-2.2.5-py3-none-any.whl.

File metadata

  • Download URL: clickgen-2.2.5-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for clickgen-2.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1a7ce572e6cf2bc2cb0d25614b57e87a984e43b34f584b5c7b0f45b4dd9e79f6
MD5 58cbaedb9f7142a544b19e43a021908e
BLAKE2b-256 069e128fa4a8ac38f68401ed711033e993d8d32097e148bee141efe73b9ebca4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page