Is there a command-line tool which returns the colour of the pixel based on screen co-ordinates?

Is there a command-line tool returns the colour value of a pixel, based solely on its screen co-ordinates.

Is there such a tool?

(Also: The tool should not require any user action. It is to run in a loop in a script.)


You can use the program grabc. It will turn your mouse pointer in a crosshair and return HTML and RGB values of the selected color.

sudo apt-get install grabc

Downside: it's not possible to do pixel-exact selections due to the crosshair not being thin enough.


You can also create a python script, something like:

#!/usr/bin/python -W ignore::DeprecationWarning
import sys
import gtk

def get_pixel_rgb(x, y):
    pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, 1, 1)
    pixbuf.get_from_drawable(gtk.gdk.get_default_root_window(),
                             gtk.gdk.colormap_get_system(), 
                             x, y, 0, 0, 1, 1)
    return pixbuf.get_pixels_array()[0][0]

print get_pixel_rgb(int(sys.argv[1]), int(sys.argv[2]))

make it executable, and run pixel_rgb="$(/path/to/script.py x y)" in your bash script. Of course you'd need to alter the script the way you need it, add some error handling, and such.

PS: I'm not exactly sure you can do anything about the DeprecationWarning, so I turned it off in the first line.


This is a bit cludgy, but you can achieve this with xdotool which lets you interact with the mouse, and grabc which gets the colour from a location clicked on screen.

sudo apt-get install xdotool grabc

First run grabc but background it

grabc &

Then perform a mouseclick using xdotool

xdotool click 1

The click will be captured by grabc's cursor and the background process with output the color.


A different solution, using xwd and xdotool:

xwd -root -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:- | grep -om1 '#\w\+'

where $X and $Y are your coordinates.

As part of Xorg xwd should come preinstalled on your system. xdotool can be installed with:

sudo apt-get install xdotool 

Based on @Christian's answer on a StackOverflow Q&A and this imagemagick.org thread.


I have written a python module for operations like this, called Macropolo. But, it does much more things than simply getting the color of a pixel on the screen.

Here's the forum post where I've shared it: http://ubuntuforums.org/showthread.php?t=2155281

The module has many functions that allow you to e.g. count the amount of pixels that have a specific color in an area of the screen, search for pixel color(s) in area, wait for a pixel or an area of the screen have a specific color, wait for pixel color and run some other function while waiting (e.g. move the cursor for not letting the screen turn off while you are waiting for a specific color).

But, as I said, it does a lot more things, like simulating mouse clicks and keyboard, screenshot taking of area of the screen and more.