76 lines
3.6 KiB
Bash
Executable File
76 lines
3.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
SRC=src
|
|
NAME="${1}"
|
|
|
|
error()
|
|
{
|
|
printf "$@" >&2
|
|
}
|
|
|
|
syntax()
|
|
{
|
|
error "Syntax: ${0##*/} <CURSOR NAME> <DESTINATION DIR>\n"
|
|
exit 1
|
|
}
|
|
|
|
([ -n "${NAME}" ] && [ -f "names/${NAME}" ] && [ -d "${2}" ]) || syntax
|
|
|
|
winOfX11()
|
|
{
|
|
case "${1}" in
|
|
"center_ptr") printf "Alternate_Select";;
|
|
"wait") printf "Busy";;
|
|
"size_fdiag") printf "Diagonal_Resize_1";;
|
|
"size_bdiag") printf "Diagonal_Resize_2";;
|
|
"pencil") printf "Handwriting";;
|
|
"help") printf "Help_Select";;
|
|
"size_hor") printf "Horizontal_Resize";;
|
|
"pointer") printf "Link_Select";;
|
|
"move") printf "Move";;
|
|
"default") printf "Normal_Select";;
|
|
"fleur") printf "Precision_Select";;
|
|
"text") printf "Text_Select";;
|
|
"forbidden") printf "Unavailable";;
|
|
"size_ver") printf "Vertical_Resize";;
|
|
"half-busy") printf "Working_In_Background";;
|
|
esac
|
|
}
|
|
|
|
aliasOf()
|
|
{
|
|
case "${1}" in
|
|
"left_ptr"|"top_left_arrow"|"left-arrow") printf "default";;
|
|
"alias"|"0876e1c15ff2fc01f906f1c363074c0f"|"3085a0e285430894940527032f8b26df"|"640fb0e74195791501fd1ed57b41487f"|"a2a266d0498c3104214a47bd64ab0fc8"|"dnd-link"|"crosshair"|"diamond_cross"|"target"|"cross"|"link") printf "fleur";;
|
|
"not-allowed"|"crossed_circle"|"03b6e0fcb3499374a867c041f52298f0"|"circle"|"no-drop"|"03b6e0fcb3499374a867c041f52298f0"|"03b6e0fcb3499374a867d041f52298f0"|"kill"|"pirate") printf "forbidden";;
|
|
"watch"|"clock"|"0426c94ea35c87780ff01dc239897213") printf "wait";;
|
|
"progress"|"left_ptr_watch"|"00000000000000020006000e7e9ffc3f"|"08e8e1c95fe2fc01f976f1e063a24ccd"|"3ecb610c1bf2410f44200f48c40d3599"|"9116a3ea924ed2162ecab71ba103b17f") printf "half-busy";;
|
|
"question_arrow"|"whats_this"|"gumby"|"5c6cd98b3f3ebcb1f9c7f1c204630408"|"d9ce0ab605698f320427677b458ad60b"|"dnd-ask") printf "help";;
|
|
"size_ver"|"v_double_arrow"|"double_arrow"|"00008160000006810000408080010102"|"top_side"|"n-resize"|"bottom_side"|"s-resize"|"sb_v_double_arrow"|"043a9f68147c53184671403ffa811cc5"|"14fef782d02440884392942c11205230"|"split_h"|"col-resize"|"sb_up_arrow"|"sb_down_arrow"|"ns-resize"|"up-arrow") printf "size_ver";;
|
|
"ew-resize"|"h_double_arrow"|"028006030e0e7ebffc7f7070c0600140"|"right_side"|"e-resize"|"left_side"|"w-resize"|"sb_h_double_arrow"|"2870a09082c103050810ffdffffe0204"|"c07385c7190e701020ff7ffffd08103c"|"split_v"|"row-resize"|"sb_left_arrow"|"sb_right_arrow") printf "size_hor";;
|
|
"nwse-resize"|"38c5dff7c7b8962045400281044508d2"|"c7088f0f3e6c8088236ef8e1e3e70000"|"top_left_corner"|"nw-resize"|"bottom_right_corner"|"se-resize"|"lr_angle") printf "size_fdiag";;
|
|
"nesw-resize"|"50585d75b494802d0151028115016902"|"fcf1c3c7cd4491d801f1e1c78f100000"|"top_right_corner"|"ne-resize"|"bottom_left_corner"|"sw-resize") printf "size_bdiag";;
|
|
"4498f0e0c1937ffe01fd06f973665830"|"9081237383d90e509aa00f00170e968f"|"fcf21c00b30f7e3f83fe0dfd12e71cff"|"size_all"|"dnd-move"|"all-scroll"|"grabbing"|"208530c400c041818281048008011002"|"closedhand"|"dnd-none") printf "move";;
|
|
"pointing_hand"|"hand"|"hand1"|"e29285e634086352946a0e7090d73106"|"5aca4d189052212118709018842178c0"|"9d800788f1b08800ae810202380a0822"|"openhand"|"hand2") printf "pointer";;
|
|
"up_arrow"|"color-picker"|"cell"|"08ffe1e65f80fcfdf9fff11263e74c48"|"context-menu") printf "center_ptr";;
|
|
"ibeam"|"xterm"|"048008013003cff3c00c801001200000"|"vertical-text") printf "text";;
|
|
esac
|
|
}
|
|
|
|
TARGET="${2%/}/${NAME}"
|
|
winName="$(winOfX11 ${NAME})"
|
|
if [ -n "${winName}" ]
|
|
then
|
|
dir="${SRC}/${winName}"
|
|
xcursorgen -p "${dir}" "${dir}/config.txt" "${TARGET}"
|
|
else
|
|
canonical="$(aliasOf ${NAME})"
|
|
if [ -n "${canonical}" ]
|
|
then
|
|
ln -sf "${canonical}" "${TARGET}"
|
|
else
|
|
error "Cannot generate missing icon ${NAME}"
|
|
exit 1
|
|
fi
|
|
fi
|