Custom Cursors / Mouse Icons!

So I’m sure I’m not the only one who has desired a change in one of the many cursors Blender uses throughout its application. In prior versions, it may have been possible to change your windows mouse settings and Blender would take advantage of these, but the current build does not support that ‘feature’.

Instead, there are several dead-end forum posts questioning how to do this, for a myriad of reasons, but mine was simply visibility of the white cursor on white meshes. Bloody awful in my opinion, and there really isn’t a straightforward way of fixing that, short of compiling your own version of the program from source, and that’s too much imo for just a quick image modification.

Anyways, what I’m going to share below is how to change a cursor or icon in blender, and it is not guaranteed to always work. I’ve spent several hours trying to figure out what works in 2025, as most of the programs you’ll find for this are very old.

First off, some hard facts:

  1. The cursors are stored in the Blender.exe binary, not separately as individual files :frowning: ( bad Foundation, bad :shakes fist: )
  2. Exe modification is to be done at your own risk!
  3. I am not affiliated with either of the tools I’ve found to work, and I have no professional knowledge if these are truly ‘safe’, but they’re old and I can’t find any reports online that would make me suspicious of them, so I’ve used them under my own discretion.

Now the meat of things, let’s bust into the executable!

Resource Hacker: A packed-executable explorer
Angus Johnson created a very lightweight and reliable program for diving into exe’s. No fees, no ads, no trials, just a simple resource modification tool. Considering it’s primary alternative is a paid-for tool from the early 2000s that can’t even handle 64bit exe’s, I felt much more confident in this tool when it worked right out of the box and didn’t hassle me in the slightest.
https://www.angusj.com/resourcehacker/

Using the Resource Hacker tool, we can open up the blender.exe file itself, and inside we’ll find the “Cursor Groups”, these are the things we’ll actually be modifying!

This will usually be here:
C:/Program Files/Blender Foundation/Blender 4.0/Blender.exe

Scroll through the list to find which cursor you’re looking to modify, then right-click, and save as a *.cur resource.

< Continued as replies due to forums limits >

2 Likes

Great! Now we have the cursor asset, but how do we edit it?
Well, a lot of programs will certainly open it for you, but *.cur is actually a niche offshoot of *.ico, adding in an (x,y) ‘hotspot’ offset to the file header, and really isn’t a majorly supported ‘image format’. So of course we’ll need another tool for this…

Enter, RealWorld Cursor Editor 2023

Yeah the name’s not much, and it also feels like something from the early 2000s, but it does work, you just need to get the PREVIEW EDITION.

2 Likes

Epic, now that you definitely have the PREVIEW EDITION and not just the regular version, we can open that *.cur we exported from the blender.exe

Inside, you’ll find your three sizes of cursor, feel free to edit as you’d like, then save it all back as a new *.cur, then head back to the blender.exe in your Resource Hacker.

( For the curious, the issue with the regular version of the Cursor Editor is that it does not save the last cursor in a multi-resolution cursor. For example, in the picture above, there is a 32x32, a 48x48, and 64x64. In the latest ‘official’ release, it does not write the 64x64 cursor data to the file, but this was fixed in the preview edition released over a year ago. )

2 Likes

Going back to the Cursor Group you exported previously, right-click it once more, but this time select ‘Replace Cursor’.

On the left, you’ll find a browse button to select your newly created *.cur, then on the right, hit ‘Replace’ to import your changes into the exe.

Afterwards, SAVE AS A NEW EXECUTABLE!
Anywhere will do, we’ll be moving it in properly in just a moment.

DO NOT OVERWRITE YOUR BLENDER.EXE
( Honestly, you probably can’t due to admin privileges… )

Now the hard part is done, just ensure you’ve closed out of blender, then head over to your original blender.exe, rename it, preferably something like blender_original.exe, then paste in your modified blender.exe and enjoy your new cursors!

( This is so that if anything ever goes wrong or you need the original, you can just delete your modified blender.exe and restore the blender_original.exe. )

Now having done all this, I would REALLY like it if the blender group added in proper cursor customization, even just storing the files in an editable way would be infinitely better than packing them into the executable.

Regardless, this method will persist until you update blender, so if you’re like me, and you tend to stay on a stable version for a long time, re-applying your cursor mods is likely to be a rarity, but be sure to keep your modified *.cur files just in-case, as they’ll likely be drop-in ready for any new versions of blender. ( These cursor groups rarely change, and are usually only appended to over an application’s lifespan. )

Thanks for reading, and I hope this helps others!
~Sera

3 Likes

It might sound or look like more than it is, but just compile source. If you can understand how to work in 3D space, you can very easily follow along with these instructions, and there’s help available on devtalk and the chat

https://developer.blender.org/docs/handbook/building_blender/

It will always work, and it can be trusted. If a dumbdumb from 6 years ago with zero experience can figure it out (that’d be me), so can anybody.

If you need any help with how to add your own cursor to Blender in a more flexible and reliable way than this hacky tool thing, just ask and I can help you do whatever I know how. By teaching somebody how to do it, maybe I’ll figure something out for myself, so it’s worth the time. My build has selectable cursors if interested, meaning you can choose what cursor to use for any of them. Feel free to make a request for whatever shape you’d like.

1 Like

I’m certainly not trying to diminish the merits of self-compiled code, but as a software developer professionally, the last thing I want to be doing is spinning up even more projects just for a quick fix.

Sure this method isn’t great by any means, but I personally found it less obtrusive to export an image, modify a few pixels, then write it back. Obviously the process ended up a bit more cumbersome than I had initially anticipated, but once I locked in on what worked, that’s neither here nor there. With this tutorial, swapping a cursor takes less than a minute or two, allowing easy testing and iteration without rebuilding the whole app just to change a few pixels.

The idea in my mind was simply to edit the image file like I would for any other application or game, but the ground-truth is that cursors aren’t a widely modified format ( we use them all the time, but not many work with them ) and Blender opts to store theirs within the application rather than in one of its numerous supporting data folders.

However, you’re absolutely right on the trust vector.

This does result in an exe that could have malicious code in it, but the resulting assembly has the same byte size, so nothing was added, just modified, and the likelihood that it has somehow replaced raw bytes of the blender executable with malware, and it still runs successfully, is rather unlikely.

1 Like

It will take a couple hours for someone who’s never done it before. Not something that will need any real attention or problem solving.

  1. Grab a few things like CMake and GIT
  2. Wait for things to download
  3. Do a Lite build to make sure it works
  4. Make your cursor(s)
  5. Modify about 5 lines
  6. Do another Lite build to make sure the cursor(s) show up
  7. Do a nobuild and change Cmake cache to only compile the Cycles binaries you need
  8. Compile
  9. Make a diff so you can update to a new Blender version when you want

One more thing, you probably want to check out the release version for anything that’s still being updated.

Check for the latest release tags here:

Then checkout like this:
git checkout tags/<tag> -b <branch>

example:
git checkout tags/v4.4.0 -b whateverNameYouWant