Color picker and magnifier for X11.
Button1 will select and print the color to stdout, the output is
TAB separated hex, rgb, and hsl.
Scroll Up/Down will zoom in and out.
Any other mouse button will quit sxcs.
Output format can be chosen via cli argument.
Zoom/magnification can be disabled via --mag-none.
$ sxcs --rgb --mag-none
rgb: 22 158 111Copying the hex output to clipboard (using xclip):
$ sxcs -o --hex | cut -f 2 | xclip -in -selection clipboardColor output can be disabled via --color-none, which more or less turns
sxcs into a magnifier.
The magnifying window can be customized via using --mag-filters <filter-list>,
where filter-list is a comma separated list of filters to apply. The
filter-list will be applied in order, as given by the user.
The default filter list is the following:
$ sxcs --mag-filters "grid,circle,xhair"Following are a couple more examples:
$ sxcs --mag-filters "square,xhair"$ sxcs --mag-filters "grid,xhair"Consult the manpage to see a list of all available cli arguments and filters:
$ man sxcs-
Build Dependencies:
- C89 compiler
- Necessary library headers (on some distros you need to install
*-devpackages to get header files)
-
Runtime Dependencies:
- Xlib
- Xcursor
- POSIX 2001 C standard library
- Simple build:
$ cc -o sxcs sxcs.c -O3 -s -l X11 -l XcursorThe above command should also work with gcc, clang or any other C compiler
that has a POSIX compatible cli interface.
- Debug build with
gcc(also works withclang):
$ gcc -o sxcs sxcs.c -std=c89 -Wall -Wextra -Wpedantic \
-g3 -D DEBUG -O0 -fsanitize=address,undefined -l X11 -l Xcursor- If you're editing the code, you may optionally run some static analysis:
$ make -f etc/analyze.mkJust copy the executable and the man-page to the appropriate location:
# cp sxcs /usr/local/bin
# cp sxcs.1 /usr/local/share/man/man1Or using the install utility:
# install -Dm755 sxcs /usr/local/bin/sxcs
# install -Dm644 sxcs.1 /usr/local/share/man/man1/sxcs.1A zsh completion script is also available for zsh users under etc/zsh-completion.
Cursor size bigger than 255x255 causes visual glitches, it seems to be a X11/Xcursor limitation.
One alternative would be using XComposite and using an override_redirect
window. Which is what was being done (incorrectly) before commit
33490dd.
I suspect doing this correctly would require way too much code, probably above
my self imposed limit of ~800 SLoC for this project.


