How to draw your own mouse cursor theme!

2025-12-30 / blinry / CC BY-SA 4.0 / workshop, tech, design

At 39C3, I gave a workshop about drawing your own mouse cursor theme.

Here’s my “slides”:

         Draw your own
 _ __ ___   ___  _   _ ___  ___
| '_ ` _ \ / _ \| | | / __|/ _ \
| | | | | | (_) | |_| \__ \  __/
|_| |_| |_|\___/ \__,_|___/\___|
  ___ _   _ _ __ ___  ___  _ __
 / __| | | | '__/ __|/ _ \| '__|
| (__| |_| | |  \__ \ (_) | |
 \___|\__,_|_|  |___/\___/|_|
 _   _                         _
| | | |                       | |
| |_| |__   ___ _ __ ___   ___| |
| __| '_ \ / _ \ '_ ` _ \ / _ \ |
| |_| | | |  __/ | | | | |  __/_|
 \__|_| |_|\___|_| |_| |_|\___(_)

           with blinry

# Motivation

Nostalgic memories of the cursors on Windows 98/XP!
    https://sweezy-cursors.com/collection/old-windows/
Understanding things is fun!
Confuse people who look over your shoulder?
Customize something you look at *a lot*...

# Getting to know you

Who feels confident using a graphics program?
    Like Inkscape, Krita, or GIMP?
Who doesn't?

Who is using Wayland?
Who is using X.Org?
Who doesn't know?

# Please interrupt me/ask questions!

# History of cursors on Linux

~1987: X Font Cursors
    https://tronche.com/gui/x/xlib/appendix/b/
~2003: Xcursor library
    https://www.gnome-look.org/browse?cat=107&ord=rating

# How does Xcursor work?

Let's look at an example: Adwaita!

# Which icon names are required?

~2023: cursor_shape_v1 for Wayland standardizes available icon names
    Names taken from CSS spec
        https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/cursor
Aliases for "traditional names"
    left_ptr -> default
    watch -> wait
    hand2 -> grab
    ...
    Good table in the GTK source code:
        https://github.com/GNOME/gtk/blob/544a23a633ba8f32ca0a1ec06abc9d6f887ca50c/gdk/x11/gdkcursor-x11.c#L107

# Step 1

Make a directory with
    default.png
    text.png (on text hover)
    pointer.png (on link hover)
Transparent background
Around 64x64 px?
"Hot spot" is in the center

# Step 2: Run easy-cursor-generator

https://codeberg.org/blinry/easy-cursor-generator

Dependencies
    xcursorgen
    ImageMagick (the `identify` command)

If you're not sure how to run this script, call me in the workshop part!

# Step 3: Install the theme

1. Copy or symlink to ~/.local/share/icons/your-theme/cursors/
2. Activate using your desktop environment/compositor
3. In doubt, check https://wiki.archlinux.org/title/Cursor_themes

# Ideas!

- Draw your own arrows (cool-looking? Weird ones?)
- Repurpose your favorite icons/logos (so that everyone immediately knows that you're using Arch btw)
- Blåhajs?!
- High-contrast cursors that are actually more accessible to you
- (your ideas go here!)

# Have a favorite graphics program?

You can stop paying attention here! :)

# How to Inkscape

https://codeberg.org/blinry/cursor-theme-template

- Multi-page feature
- Basic drawing tools
- File -> Export -> Batch Export -> Pages -> "Export"

# Find me on the Internet!

Mastodon
    https://chaos.social/@blinry
Projects & contact
    https://blinry.org

~~~ Workshop time! ~~~

I'll go around and help you!

Comments?

Send a message to @blinry@chaos.social or drop me a mail at mail@blinry.org. Also, you can support me on Patreon or subscribe to my newsletter!