---
name: "X11::CursorFont"
section: "3pm"
platform: "linux"
package: "perl-x11-protocol-other"
version: "31-6"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/X11::CursorFont"
---

# X11::CursorFont(3pm)

cursor font glyph names and numbers

## NAME

X11::CursorFont - cursor font glyph names and numbers

## SYNOPSIS

```
 use X11::CursorFont '%CURSOR_GLYPH';
 my $num = $CURSOR_GLYPH{'fleur'};               # is 52
 my $name = $X11::CursorFont::CURSOR_NAME[52];   # is "fleur"
```

## DESCRIPTION

This is the names and numbers of the glyphs in the X11 cursor font which contains various standard mouse pointer cursors.

`%CURSOR_GLYPH` maps a glyph name to its character number in the font,

```
    $CURSOR_GLYPH{'fleur'}     # is 52
```

`@CURSOR_NAME` conversely is indexed by character number and gives the glyph name,

```
    $CURSOR_NAME[52]           # is "fleur"
```

Each glyph has an associated mask at character number glyph+1 which is the shape of the cursor (the displayed vs transparent pixels).  So the character numbers are always even and in `@CURSOR_NAME` only the even character positions have names.

The cursor images can be viewed with the usual `"xfd"` font display program,

```
     xfd -fn cursor
```

The names are per the Xlib */usr/include/X11/cursorfont.h* file, without the `"XC_"` prefixes.  The full list is

```
    Name                  Number
    X_cursor                0    default fat X
    arrow                   2
    based_arrow_down        4
    based_arrow_up          6
    boat                    8
    bogosity               10
    bottom_left_corner     12
    bottom_right_corner    14
    bottom_side            16
    bottom_tee             18
    box_spiral             20    a square spiral
    center_ptr             22
    circle                 24
    clock                  26
    coffee_mug             28
    cross                  30
    cross_reverse          32
    crosshair              34    "+" shape
    diamond_cross          36
    dot                    38
    dotbox                 40
    double_arrow           42
    draft_large            44
    draft_small            46
    draped_box             48
    exchange               50
    fleur                  52
    gobbler                54
    gumby                  56
    hand1                  58
    hand2                  60
    heart                  62
    icon                   64
    iron_cross             66
    left_ptr               68
    left_side              70
    left_tee               72
    leftbutton             74
    ll_angle               76
    lr_angle               78
    man                    80
    middlebutton           82
    mouse                  84
    pencil                 86
    pirate                 88    skull and crossbones
    plus                   90
    question_arrow         92
    right_ptr              94
    right_side             96
    right_tee              98
    rightbutton           100
    rtl_logo              102
    sailboat              104
    sb_down_arrow         106
    sb_h_double_arrow     108
    sb_left_arrow         110
    sb_right_arrow        112
    sb_up_arrow           114
    sb_v_double_arrow     116
    shuttle               118
    sizing                120
    spider                122
    spraycan              124
    star                  126
    target                128
    tcross                130
    top_left_arrow        132
    top_left_corner       134
    top_right_corner      136
    top_side              138
    top_tee               140
    trek                  142
    ul_angle              144
    umbrella              146
    ur_angle              148
    watch                 150    a good "busy" indicator
    xterm                 152    a vertical insertion bar
```

`"X_cursor"` is the usual default when the server first starts or when the root window is set to cursor "None".

## VARIABLES

- %X11::CursorFont::CURSOR\_GLYPH

  A mapping of glyph name to cursor font character number.

- @X11::CursorFont::CURSOR\_NAME

  A table of cursor font character number to glyph name.

## EXPORTS

Nothing is exported by default, but `%CURSOR_GLYPH` and `@CURSOR_NAME` can be selected in usual `"Exporter"` style (see Exporter),

```
    use X11::CursorFont '%CURSOR_GLYPH', '@CURSOR_NAME';
```

## EXAMPLE

To create a cursor from a desired glyph,

```
    my $cursor_name = 'spraycan';
    my $cursor_glyph = $CURSOR_GLYPH{$cursor_name}; # number
    my $cursor_font = $X->new_rsrc;
    $X->OpenFont ($cursor_font, "cursor"); # cursor font
    my $cursor = $X->new_rsrc;
    $X->CreateGlyphCursor
           ($cursor,
            $cursor_font,  # font
            $cursor_font,  # mask font
            $cursor_glyph,      # glyph
            $cursor_glyph + 1,  # and its mask
            0,0,0,                  # foreground, black
            0xFFFF,0xFFFF,0xFFFF);  # background, white
    $X->CloseFont ($cursor_font);
    # then use $cursor with CreateWindow or ChangeWindowAttributes
    #       cursor => $cursor
```

The `$cursor_font` could be kept open if used repeatedly.  Opening and closing isn't a round-trip, so an open when needed may be enough.

Any RGB colours can be given in `CreateGlyphCursor()`, but actual appearance on screen will be limited by the hardware.

All cursors in the core protocol are two-colours with pixels fully opaque or fully transparent as per this create.  The RENDER extension, when available, can make multi-colour and partial transparency if desired (see X11::Protocol::Ext::RENDER).

## SEE ALSO

X11::Protocol, X11::KeySyms

*/usr/include/X11/cursorfont.h* and listing in the Xlib manual appendix B (`"http://www.x.org/docs/X11/"` or */usr/share/doc/libx11-dev/libX11.txt.gz*).

Xlib Xmu `XmuCursorNameToIndex()` (`"http://www.x.org/docs/Xmu/"` or */usr/share/doc/libxmu-headers/Xmu.txt.gz*)

[**xfd**(1)](/xfd/1.md) to display the cursor font.

[**xsetroot**(1)](/xsetroot/1.md) to change the root window cursor.

## HOME PAGE

\<http://user42.tuxfamily.org/x11-protocol-other/index.html\>

## LICENSE

Copyright 2011, 2012, 2013, 2014, 2017 Kevin Ryde

X11-Protocol-Other is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

X11-Protocol-Other is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with X11-Protocol-Other.  If not, see \<http://www.gnu.org/licenses/\>.
