Reimporting theme with a guix package

This commit is contained in:
Tissevert 2023-01-28 20:14:45 +01:00
commit f72c380225
172 changed files with 237 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
Toon/*

26
Makefile Normal file
View file

@ -0,0 +1,26 @@
THEME=Toon
NAMES=$(wildcard names/*)
CURSORS_DIR=$(THEME)/cursors
CURSORS=$(NAMES:names/%=$(CURSORS_DIR)/%)
INDEX=$(THEME)/index.theme
DESTDIR?=~/.icons/
GENERATOR=./cursorMaker.sh
all: structure $(INDEX) $(CURSORS)
install: $(DESTDIR) all
cp -R $(THEME) $(DESTDIR)
structure: $(THEME)/ $(CURSORS_DIR)/
%/:
mkdir -p $@
$(INDEX): src/index.theme
sed 's|Name=|&$(THEME)|' $< > $@
$(CURSORS_DIR)/%: names/%
$(GENERATOR) $(<:names/%=%) $(CURSORS_DIR)
clean:
rm -rf $(THEME)

69
README.md Normal file
View file

@ -0,0 +1,69 @@
# Toon cursor theme
Toon is an XDG cursor theme. All icons are white, with classic shapes and a
strong contrast : contours are bold, black and a little blurry.
## How to use
### Install with guix
The `guix.scm` file included allows you to build and install a version of this
theme from a local copy like this:
```bash
guix install -f guix.scm
```
### Other systems
You only have to issue
```bash
make install
```
on a command line open in this directory and the theme «Toon» should show up
next time you run your favourite appearance settings dialog.
If you plan on packaging this theme for your favourite distribution, you might
want instead to type something like
```bash
make install DESTDIR=pkg/usr/share/icons
```
if you're building the package in directory `pkg`.
#### Dependencies
You obviously need `make` if you choose to follow the above instructions but
you can still manage to build the theme just fine as long as you have
* sh : a shell script is used to generate each icon in the theme by deciding
whether it's an actual cursor file or a link to another one
* xcursorgen : the X11 tool to actually create a cursor file from a bunch of
pictures and a config file
## Origins
The design is not original : the icons were extracted from the White theme that
was shipped with a hacked version of Windows XP, namely Windows XP LSD in its
3.5 version. That version of Windows and XDG don't provide exactly the same
cursor states so most of them were mapped more or less gently to the nearest
corresponding state. Some are completely missing, which explains the lack of
cursors for zooming actions for instance.
## Want to give a hand ?
First, you can use the theme and give feedback ! If you have any information
about the original license of the theme or a way to contact its makers, that
would be great. You can also draw icons to fill the lacks of the original theme
and make a pull request. Most wanted icons concern :
* Zooming : completely missing from the original theme
* Directions (double arrows are a bit overused and specialized version could be
made to distinguish among all the possible cases)
* the `default` (`left_ptr`, etc.) cursor usually exists with an additional
pictogram in the lower-right corner to represent «working in the background»,
or drag-and-drop related actions : copy, link or the impossibility to do so.
Only the «working in the background» cursor existed in White.

75
cursorMaker.sh Executable file
View file

@ -0,0 +1,75 @@
#!/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

33
guix.scm Normal file
View file

@ -0,0 +1,33 @@
(use-modules ((gnu packages xorg) #:select (xcursorgen))
((guix build-system gnu) #:select (gnu-build-system))
((guix gexp) #:select (gexp local-file))
((guix git-download) #:select (git-predicate))
((guix licenses) #:select (cc-by-sa4.0))
((guix packages) #:select (package)))
(let
((%source-dir (dirname (current-filename))))
(package
(name "toon-cursors")
(version "1.0.0")
(source
(local-file %source-dir
#:recursive? #t
#:select? (git-predicate %source-dir)))
(build-system gnu-build-system)
(native-inputs (list xcursorgen))
(arguments
`(#:make-flags
,#~(list (string-append "DESTDIR=" #$output "/share/icons/"))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'check))))
(home-page "https://git.marvid.fr/Tissevert/toon")
(synopsis "White XDG cursor theme with a cartoon feel")
(description "The theme is white with black bold contours and a relatively
round design which wouldn't be entirely out of place in a cartoon.
The icons were extracted from the White theme in an old hacked version of
Windows XP named Windows LSD and mapped roughly to X11 cursor states.")
(license cc-by-sa4.0)))

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

0
names/alias Normal file
View file

0
names/all-scroll Normal file
View file

0
names/bottom_left_corner Normal file
View file

View file

0
names/bottom_side Normal file
View file

View file

View file

0
names/cell Normal file
View file

0
names/center_ptr Normal file
View file

0
names/circle Normal file
View file

0
names/clock Normal file
View file

0
names/closedhand Normal file
View file

0
names/col-resize Normal file
View file

0
names/color-picker Normal file
View file

0
names/context-menu Normal file
View file

0
names/cross Normal file
View file

0
names/crossed_circle Normal file
View file

0
names/crosshair Normal file
View file

View file

0
names/default Normal file
View file

0
names/diamond_cross Normal file
View file

0
names/dnd-ask Normal file
View file

0
names/dnd-link Normal file
View file

0
names/dnd-move Normal file
View file

0
names/dnd-none Normal file
View file

0
names/double_arrow Normal file
View file

0
names/e-resize Normal file
View file

View file

0
names/ew-resize Normal file
View file

View file

View file

0
names/fleur Normal file
View file

0
names/forbidden Normal file
View file

0
names/grabbing Normal file
View file

0
names/gumby Normal file
View file

0
names/h_double_arrow Normal file
View file

0
names/half-busy Normal file
View file

0
names/hand Normal file
View file

0
names/hand1 Normal file
View file

0
names/hand2 Normal file
View file

0
names/help Normal file
View file

0
names/ibeam Normal file
View file

0
names/left_ptr Normal file
View file

0
names/left_ptr_watch Normal file
View file

0
names/left_side Normal file
View file

0
names/link Normal file
View file

0
names/lr_angle Normal file
View file

0
names/move Normal file
View file

0
names/n-resize Normal file
View file

0
names/ne-resize Normal file
View file

0
names/nesw-resize Normal file
View file

0
names/no-drop Normal file
View file

0
names/not-allowed Normal file
View file

0
names/ns-resize Normal file
View file

0
names/nw-resize Normal file
View file

0
names/nwse-resize Normal file
View file

0
names/openhand Normal file
View file

0
names/pencil Normal file
View file

0
names/pirate Normal file
View file

0
names/pointer Normal file
View file

0
names/pointing_hand Normal file
View file

0
names/progress Normal file
View file

0
names/question_arrow Normal file
View file

0
names/right_side Normal file
View file

0
names/row-resize Normal file
View file

0
names/s-resize Normal file
View file

0
names/sb_down_arrow Normal file
View file

0
names/sb_h_double_arrow Normal file
View file

0
names/sb_left_arrow Normal file
View file

Some files were not shown because too many files have changed in this diff Show more