diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e250542e..b30f5260 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,9 +35,9 @@ jobs: - name: Print cbmp version run: npx cbmp --version - # - name: Rendering Bitmaps - # run: yarn render - # continue-on-error: false + - name: Rendering Bitmaps + run: yarn render + continue-on-error: false - name: Set up Python uses: actions/setup-python@v5 @@ -53,5 +53,5 @@ jobs: clickgen --version ctgen --version - # - name: Building XCursor-Pro Cursors - # run: yarn build + - name: Building XCursor-Pro Cursors + run: yarn build diff --git a/CHANGELOG.md b/CHANGELOG.md index e7c179fe..6c4f47ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The 'bitmaps' directory has been removed from the git repository. You can now generate the PNG files using `yarn render` or download them from the release assets. +- The `build.toml` file has been removed. Instead, the cursor build configurations are now distributed according to platforms within the `configs` directory: + - `configs/x.build.toml`: Used to build XCursor. + - `configs/win_rg.build.toml`: Used to build regular size Windows cursors. + - `configs/win_lg.build.toml`: Used to build large size Windows cursors. + - `configs/win_xxl.build.toml`: Used to build extra large size Windows cursors. + ### What's New? - Using [cbmp v1.1.1](https://github.com/ful1e5/cbmp/tree/v1.1.1) for rendering cursor bitmaps. diff --git a/README.md b/README.md index 7a12392c..969cd9ce 100644 --- a/README.md +++ b/README.md @@ -50,27 +50,27 @@ N/A ### Windows Cursor Size: -- 16x16 - Small -- 24x24 - Regular -- 32x32 - Large -- 48x48 - Extra Large +- 48x48 - Extra Large +- 32x32 - Large +- 24x24 - Regular +- 16x16 - Small ## Colors: ### XCursor-Pro-Red -- Base Color - `#FF0000` (Red) -- Outline Color - `#FFFFFF` (White) +- Outline Color - `#FFFFFF` (White) +- Base Color - `#FF0000` (Red) ### XCursor-Pro-Dark -- Base Color - `#000000` (Black) -- Outline Color - `#FFFFFF` (White) +- Outline Color - `#FFFFFF` (White) +- Base Color - `#000000` (Black) ### XCursor-Pro-Light -- Base Color - `#FFFFFF` (White) -- Outline Color - `#000000` (Black) +- Outline Color - `#000000` (Black) +- Base Color - `#FFFFFF` (White) ## How to get it @@ -81,9 +81,9 @@ You can download latest `stable` & `development` releases from ### Quick install -- XCursor Pro Dark: [https://www.pling.com/p/1481466](https://www.pling.com/p/1481466) -- XCursor Pro Light: [https://www.pling.com/p/1639833](https://www.pling.com/p/1639833) -- XCursor Pro Red: [https://www.pling.com/p/1639834](https://www.pling.com/p/1639834) +- XCursor Pro Red: [https://www.pling.com/p/1639834](https://www.pling.com/p/1639834) +- XCursor Pro Light: [https://www.pling.com/p/1639833](https://www.pling.com/p/1639833) +- XCursor Pro Dark: [https://www.pling.com/p/1481466](https://www.pling.com/p/1481466) ## Installing XCursor-Pro Cursor @@ -133,25 +133,26 @@ Run the `uninstall.bat` script packed with the `.zip` archive #### Notes -- XCursor-Pro build configuration and cursor hotspot settings are bundled in the `build.toml` file. -- Check out the scripts section in [package.json](./package.json) to see how we build the cursor theme, - excluding the render scripts. They are useful for converting `.svg` files to `.png` files. -- yarn is optional, For building XCursors and Windows cursors from `.png` files or resizing them - you don't need that. If you want to develop/modify XCursor-Pro's colors, and bitmaps, or generate a png - file from a svg, Then you can use yarn because bitmapper is written in TypeScript. -- Since XCursor-Pro variants are designed similarly, they share the same hotspot settings so a - single configuration file `build.toml` is responsible for building all variants. Due to this, you will have - to change the following options in `ctgen` to build the appropriate variant: - - **-d**: bitmaps directory - - **-n**: The name you want to give to the generated theme. - - **-c**: Theme comment. - - See `ctgen --help` for all available options. + - See `ctgen --help` for all available options. + - **-c**: Theme comment. + - **-n**: The name you want to give to the generated theme. + - **-d**: bitmaps directory + to change the following options in `ctgen` to build the appropriate variant: + single configuration file `build.toml` is responsible for building all variants. Due to this, you will have + +- Since XCursor-Pro variants are designed similarly, they share the same hotspot settings so a + file from a svg, Then you can use yarn because bitmapper is written in TypeScript. + you don't need that. If you want to develop/modify XCursor-Pro's colors, and bitmaps, or generate a png +- yarn is optional, For building XCursors and Windows cursors from `.png` files or resizing them + excluding the render scripts. They are useful for converting `.svg` files to `.png` files. +- Check out the scripts section in [package.json](./package.json) to see how we build the cursor theme, +- XCursor-Pro build configuration and cursor hotspot settings are bundled in the `build.toml` file. ### Build prerequisites -- Python version 3.7 or higher -- [clickgen](https://github.com/ful1e5/clickgen)>=2.1.2 (`pip install clickgen`) -- [yarn](https://github.com/yarnpkg/yarn) +- [yarn](https://github.com/yarnpkg/yarn) +- [clickgen](https://github.com/ful1e5/clickgen)>=2.1.2 (`pip install clickgen`) +- Python version 3.7 or higher ### Quick start diff --git a/build.sh b/build.sh new file mode 100755 index 00000000..5efe3f8f --- /dev/null +++ b/build.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# A script for preparing binaries of XCursor-Pro Cursors, created by Abdulkaiz Khatri. + +version="v2.0.2" + +error() ( + set -o pipefail + "$@" 2> >(sed $'s,.*,\e[31m&\e[m,' >&2) +) + +get_config_file() { + local key="${1}" + local cfg_file="build.toml" + + if [[ $key == *"Right"* ]]; then + cfg_file="build.right.toml" + fi + + echo $cfg_file +} + +with_version() { + local comment="${1}" + echo "$comment ($version)" +} + +if ! type -p ctgen >/dev/null; then + error ctgen + exit 127 # exit program with "command not found" error code +fi + +declare -A names +names["XCursor-Pro-Dark"]=$(with_version "Modern, Proffesional Dark") +names["XCursor-Pro-Light"]=$(with_version "Modern, Proffesional Light") +names["XCursor-Pro-Red"]=$(with_version "Modern, Proffesional Red") + +# Cleanup old builds +rm -rf themes bin + +# Building XCursor binaries +for key in "${!names[@]}"; do + comment="${names[$key]}" + cfg=$(get_config_file key) + + ctgen "configs/x.$cfg" -p x11 -d "bitmaps/$key" -n "$key" -c "$comment XCursors" & + PID=$! + wait $PID +done + +# Building Windows binaries +for key in "${!names[@]}"; do + comment="${names[$key]}" + cfg=$(get_config_file key) + + ctgen "configs/win_rg.$cfg" -d "bitmaps/$key" -n "$key-Regular" -c "$comment Regular Windows Cursors" & + ctgen "configs/win_lg.$cfg" -d "bitmaps/$key" -n "$key-Large" -c "$comment Large Windows Cursors" & + ctgen "configs/win_xl.$cfg" -d "bitmaps/$key" -n "$key-Extra-Large" -c "$comment Extra Large Windows Cursors" & + PID=$! + wait $PID +done + +# Compressing Binaries +mkdir -p bin +cd themes || exit + +for key in "${!names[@]}"; do + tar -cJvf "../bin/${key}.tar.xz" "${key}" & + PID=$! + wait $PID +done + +# Compressing xcursor-pro-all.tar.xz +cp ../LICENSE . +tar -cJvf "../bin/xcursor-pro-all.tar.xz" --exclude="*-Windows" . & +PID=$! +wait $PID + +# Compressing XCursor-Pro-*-Windows +for key in "${!names[@]}"; do + zip -rv "../bin/${key}-Windows.zip" "${key}-Regular-Windows" "${key}-Large-Windows" "${key}-Extra-Large-Windows" & + PID=$! + wait $PID +done + +cd .. + +# Copying License File for 'bitmaps' +cp LICENSE bitmaps/ +zip -rv bin/bitmaps.zip bitmaps diff --git a/configs/win_lg.build.toml b/configs/win_lg.build.toml new file mode 100644 index 00000000..942e83ac --- /dev/null +++ b/configs/win_lg.build.toml @@ -0,0 +1,133 @@ +[theme] +name = 'XCursor-Pro-Large' +comment = 'Modern, Proffesional Large Windows Cursors' +website = 'https://github.com/ful1e5/XCursor-pro' + +[config] +bitmaps_dir = '' # This config will assigned with `ctgen -d ` +out_dir = '../themes' +platforms = 'windows' + + +[cursors] +[cursors.fallback_settings] +win_sizes = ["26:32", "39:48", "52:64", "77:96", "103:128"] +x_hotspot = 128 +y_hotspot = 128 +win_delay = 1 + + +[cursors.all-scroll] +png = 'all-scroll.png' +win_name = 'Move' + +[cursors.move] +png = 'move.png' +x_hotspot = 137 +y_hotspot = 84 +win_name = 'Grabbing' + +[cursors.bottom_left_corner] +png = 'bottom_left_corner.png' +win_name = 'Dgn2' + +[cursors.bottom_right_corner] +png = 'bottom_right_corner.png' +win_name = 'Dgn1' + +[cursors.cross] +png = 'cross.png' +win_name = 'Cross' + +[cursors.crossed_circle] +png = 'crossed_circle.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Unavailable' + +[cursors.hand1] +png = 'hand1.png' +x_hotspot = 141 +y_hotspot = 88 +win_name = 'Pan' + +[cursors.hand2] +png = 'hand2.png' +x_hotspot = 98 +y_hotspot = 24 +win_name = 'Link' + +[cursors.left_ptr] +png = 'left_ptr.png' +x_hotspot = 123 +y_hotspot = 11 +win_name = 'Pointer' + +[cursors.left_ptr_watch] +png = 'left_ptr_watch-*.png' +x_hotspot = 40 +y_hotspot = 30 +win_sizes = "78:96" +win_name = 'Work' + +[cursors.pencil] +png = 'pencil.png' +x_hotspot = 28 +y_hotspot = 226 +win_name = 'Handwriting' + +[cursors.question_arrow] +png = 'question_arrow.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Help' + +[cursors.right_ptr] +png = 'right_ptr.png' +x_hotspot = 174 +y_hotspot = 42 +win_name = 'Alternate' + +[cursors.sb_h_double_arrow] +png = 'sb_h_double_arrow.png' +x11_name = 'sb_h_double_arrow' +win_name = 'Horz' + +[cursors.sb_v_double_arrow] +png = 'sb_v_double_arrow.png' +win_name = 'Vert' + +[cursors.wait] +png = 'wait-*.png' +win_sizes = "78:96" +win_name = 'Busy' + +[cursors.xterm] +png = 'xterm.png' +x_hotspot = 128 +y_hotspot = 126 +win_name = 'Text' + +[cursors.zoom-in] +png = 'zoom-in.png' +x_hotspot = 112 +y_hotspot = 113 +win_name = 'Zoom-in' + +[cursors.zoom-out] +png = 'zoom-out.png' +x_hotspot = 112 +y_hotspot = 113 +win_name = 'Zoom-out' + +[cursors.person] +png = 'person.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Person' + +[cursors.pin] +png = 'pin.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Pin' diff --git a/configs/win_rg.build.toml b/configs/win_rg.build.toml new file mode 100644 index 00000000..157c016f --- /dev/null +++ b/configs/win_rg.build.toml @@ -0,0 +1,133 @@ +[theme] +name = 'XCursor-Pro-Regular' +comment = 'Modern, Proffesional Regular Windows Cursors' +website = 'https://github.com/ful1e5/XCursor-pro' + +[config] +bitmaps_dir = '' # This config will assigned with `ctgen -d ` +out_dir = '../themes' +platforms = 'windows' + + +[cursors] +[cursors.fallback_settings] +win_sizes = ["22:32", "32:48", "43:64", "64:96", "86:128"] +x_hotspot = 128 +y_hotspot = 128 +win_delay = 1 + + +[cursors.all-scroll] +png = 'all-scroll.png' +win_name = 'Move' + +[cursors.move] +png = 'move.png' +x_hotspot = 137 +y_hotspot = 84 +win_name = 'Grabbing' + +[cursors.bottom_left_corner] +png = 'bottom_left_corner.png' +win_name = 'Dgn2' + +[cursors.bottom_right_corner] +png = 'bottom_right_corner.png' +win_name = 'Dgn1' + +[cursors.cross] +png = 'cross.png' +win_name = 'Cross' + +[cursors.crossed_circle] +png = 'crossed_circle.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Unavailable' + +[cursors.hand1] +png = 'hand1.png' +x_hotspot = 141 +y_hotspot = 88 +win_name = 'Pan' + +[cursors.hand2] +png = 'hand2.png' +x_hotspot = 98 +y_hotspot = 24 +win_name = 'Link' + +[cursors.left_ptr] +png = 'left_ptr.png' +x_hotspot = 123 +y_hotspot = 11 +win_name = 'Pointer' + +[cursors.left_ptr_watch] +png = 'left_ptr_watch-*.png' +x_hotspot = 40 +y_hotspot = 30 +win_sizes = "64:96" +win_name = 'Work' + +[cursors.pencil] +png = 'pencil.png' +x_hotspot = 28 +y_hotspot = 226 +win_name = 'Handwriting' + +[cursors.question_arrow] +png = 'question_arrow.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Help' + +[cursors.right_ptr] +png = 'right_ptr.png' +x_hotspot = 174 +y_hotspot = 42 +win_name = 'Alternate' + +[cursors.sb_h_double_arrow] +png = 'sb_h_double_arrow.png' +x11_name = 'sb_h_double_arrow' +win_name = 'Horz' + +[cursors.sb_v_double_arrow] +png = 'sb_v_double_arrow.png' +win_name = 'Vert' + +[cursors.wait] +png = 'wait-*.png' +win_sizes = "64:96" +win_name = 'Busy' + +[cursors.xterm] +png = 'xterm.png' +x_hotspot = 128 +y_hotspot = 126 +win_name = 'Text' + +[cursors.zoom-in] +png = 'zoom-in.png' +x_hotspot = 112 +y_hotspot = 113 +win_name = 'Zoom-in' + +[cursors.zoom-out] +png = 'zoom-out.png' +x_hotspot = 112 +y_hotspot = 113 +win_name = 'Zoom-out' + +[cursors.person] +png = 'person.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Person' + +[cursors.pin] +png = 'pin.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Pin' diff --git a/configs/win_xl.build.toml b/configs/win_xl.build.toml new file mode 100644 index 00000000..31ff1cae --- /dev/null +++ b/configs/win_xl.build.toml @@ -0,0 +1,133 @@ +[theme] +name = 'XCursor-Pro-Extra-Large' +comment = 'Modern, Proffesional Extra Large Windows Cursors' +website = 'https://github.com/ful1e5/XCursor-pro' + +[config] +bitmaps_dir = '' # This config will assigned with `ctgen -d ` +out_dir = '../themes' +platforms = 'windows' + + +[cursors] +[cursors.fallback_settings] +win_sizes = [32, 48, 64, 96, 128] +x_hotspot = 128 +y_hotspot = 128 +win_delay = 1 + + +[cursors.all-scroll] +png = 'all-scroll.png' +win_name = 'Move' + +[cursors.move] +png = 'move.png' +x_hotspot = 137 +y_hotspot = 84 +win_name = 'Grabbing' + +[cursors.bottom_left_corner] +png = 'bottom_left_corner.png' +win_name = 'Dgn2' + +[cursors.bottom_right_corner] +png = 'bottom_right_corner.png' +win_name = 'Dgn1' + +[cursors.cross] +png = 'cross.png' +win_name = 'Cross' + +[cursors.crossed_circle] +png = 'crossed_circle.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Unavailable' + +[cursors.hand1] +png = 'hand1.png' +x_hotspot = 141 +y_hotspot = 88 +win_name = 'Pan' + +[cursors.hand2] +png = 'hand2.png' +x_hotspot = 98 +y_hotspot = 24 +win_name = 'Link' + +[cursors.left_ptr] +png = 'left_ptr.png' +x_hotspot = 123 +y_hotspot = 11 +win_name = 'Pointer' + +[cursors.left_ptr_watch] +png = 'left_ptr_watch-*.png' +x_hotspot = 40 +y_hotspot = 30 +win_sizes = 96 +win_name = 'Work' + +[cursors.pencil] +png = 'pencil.png' +x_hotspot = 28 +y_hotspot = 226 +win_name = 'Handwriting' + +[cursors.question_arrow] +png = 'question_arrow.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Help' + +[cursors.right_ptr] +png = 'right_ptr.png' +x_hotspot = 174 +y_hotspot = 42 +win_name = 'Alternate' + +[cursors.sb_h_double_arrow] +png = 'sb_h_double_arrow.png' +x11_name = 'sb_h_double_arrow' +win_name = 'Horz' + +[cursors.sb_v_double_arrow] +png = 'sb_v_double_arrow.png' +win_name = 'Vert' + +[cursors.wait] +png = 'wait-*.png' +win_sizes = 96 +win_name = 'Busy' + +[cursors.xterm] +png = 'xterm.png' +x_hotspot = 128 +y_hotspot = 126 +win_name = 'Text' + +[cursors.zoom-in] +png = 'zoom-in.png' +x_hotspot = 112 +y_hotspot = 113 +win_name = 'Zoom-in' + +[cursors.zoom-out] +png = 'zoom-out.png' +x_hotspot = 112 +y_hotspot = 113 +win_name = 'Zoom-out' + +[cursors.person] +png = 'person.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Person' + +[cursors.pin] +png = 'pin.png' +x_hotspot = 39 +y_hotspot = 32 +win_name = 'Pin' diff --git a/build.toml b/configs/x.build.toml similarity index 83% rename from build.toml rename to configs/x.build.toml index 32b3c30b..ab03a4ac 100644 --- a/build.toml +++ b/configs/x.build.toml @@ -1,22 +1,20 @@ [theme] name = 'XCursor Pro' -comment = 'Modern XCursors.' +comment = 'Modern XCursors' website = 'https://github.com/ful1e5/XCursor-pro' [config] -bitmaps_dir = '' # This config will assigned with `ctgen -d ` -out_dir = 'themes' -platforms = ['x11', 'windows'] -x11_sizes = [22, 24, 28, 32, 40, 48, 56, 64, 72, 80, 88, 96] -win_size = 32 +bitmaps_dir = '' # This config will assigned with `ctgen -d ` +out_dir = '../themes' +platforms = 'x11' [cursors] - [cursors.fallback_settings] -x_hotspot = 100 -y_hotspot = 100 -x11_delay = 25 -win_delay = 1 +x11_sizes = [16, 20, 22, 24, 28, 32, 40, 48, 56, 64, 72, 80, 88, 96] +x_hotspot = 128 +y_hotspot = 128 +x11_delay = 35 + [cursors.all-scroll] png = 'all-scroll.png' @@ -26,7 +24,6 @@ x11_symlinks = ['fleur', 'size_all'] [cursors.bottom_left_corner] png = 'bottom_left_corner.png' x11_name = 'bottom_left_corner' -win_name = 'Diagonal_2' x11_symlinks = [ 'fcf1c3c7cd4491d801f1e1c78f100000', 'sw-resize', @@ -40,7 +37,6 @@ x11_symlinks = [ [cursors.bottom_right_corner] png = 'bottom_right_corner.png' x11_name = 'bottom_right_corner' -win_name = 'Diagonal_1' x11_symlinks = [ 'c7088f0f3e6c8088236ef8e1e3e70000', 'top_left_corner', @@ -53,26 +49,26 @@ x11_symlinks = [ [cursors.bottom_tee] png = 'bottom_tee.png' -x_hotspot = 98 -y_hotspot = 137 +x_hotspot = 128 +y_hotspot = 175 x11_name = 'bottom_tee' [cursors.center_ptr] png = 'center_ptr.png' -x_hotspot = 99 -y_hotspot = 29 +x_hotspot = 120 +y_hotspot = 10 x11_name = 'center_ptr' [cursors.context-menu] png = 'context-menu.png' -x_hotspot = 51 -y_hotspot = 24 +x_hotspot = 39 +y_hotspot = 32 x11_name = 'context-menu' [cursors.copy] png = 'copy.png' -x_hotspot = 51 -y_hotspot = 24 +x_hotspot = 39 +y_hotspot = 32 x11_name = 'copy' x11_symlinks = [ '1081e37283d90000800003c07f3ef6bf', @@ -84,15 +80,13 @@ x11_symlinks = [ [cursors.cross] png = 'cross.png' x11_name = 'cross' -win_name = 'Cross' x11_symlinks = ['cross_reverse', 'diamond_cross', 'tcross', 'color-picker'] [cursors.crossed_circle] png = 'crossed_circle.png' -x_hotspot = 51 -y_hotspot = 24 +x_hotspot = 39 +y_hotspot = 32 x11_name = 'crossed_circle' -win_name = 'Unavailiable' x11_symlinks = [ '03b6e0fcb3499374a867c041f52298f0', 'not-allowed', @@ -116,18 +110,16 @@ x11_symlinks = ['dot_box_mask', 'draped_box', 'icon', 'target'] [cursors.hand1] png = 'hand1.png' -x_hotspot = 103 -y_hotspot = 56 +x_hotspot = 141 +y_hotspot = 88 x11_name = 'hand1' -win_name = 'Move' x11_symlinks = ['grab', 'openhand'] [cursors.hand2] png = 'hand2.png' -x_hotspot = 78 -y_hotspot = 26 +x_hotspot = 98 +y_hotspot = 24 x11_name = 'hand2' -win_name = 'Link' x11_symlinks = [ '9d800788f1b08800ae810202380a0822', 'e29285e634086352946a0e7090d73106', @@ -137,18 +129,16 @@ x11_symlinks = [ [cursors.left_ptr] png = 'left_ptr.png' -x_hotspot = 51 -y_hotspot = 24 +x_hotspot = 123 +y_hotspot = 11 x11_name = 'left_ptr' -win_name = 'Default' x11_symlinks = ['arrow', 'default', 'top_left_arrow'] [cursors.left_ptr_watch] png = 'left_ptr_watch-*.png' -x_hotspot = 51 -y_hotspot = 24 +x_hotspot = 40 +y_hotspot = 30 x11_name = 'left_ptr_watch' -win_name = 'Work' x11_symlinks = [ '00000000000000020006000e7e9ffc3f', '08e8e1c95fe2fc01f976f1e063a24ccd', @@ -163,12 +153,14 @@ x11_symlinks = ['w-resize', 'right_side', 'e-resize'] [cursors.left_tee] png = 'left_tee.png' +x_hotspot = 86 +y_hotspot = 128 x11_name = 'left_tee' [cursors.link] png = 'link.png' -x_hotspot = 120 -y_hotspot = 55 +x_hotspot = 113 +y_hotspot = 110 x11_name = 'link' x11_symlinks = [ '3085a0e285430894940527032f8b26df', @@ -180,16 +172,20 @@ x11_symlinks = [ [cursors.ll_angle] png = 'll_angle.png' +x_hotspot = 53 +y_hotspot = 201 x11_name = 'll_angle' [cursors.lr_angle] png = 'lr_angle.png' +x_hotspot = 202 +y_hotspot = 201 x11_name = 'lr_angle' [cursors.move] png = 'move.png' -x_hotspot = 102 -y_hotspot = 73 +x_hotspot = 137 +y_hotspot = 84 x11_name = 'move' x11_symlinks = [ '4498f0e0c1937ffe01fd06f973665830', @@ -204,25 +200,21 @@ x11_symlinks = [ [cursors.pencil] png = 'pencil.png' -x_hotspot = 81 -y_hotspot = 117 +x_hotspot = 28 +y_hotspot = 226 x11_name = 'pencil' -win_name = 'Handwriting' x11_symlinks = ['draft'] [cursors.plus] png = 'plus.png' -x_hotspot = 98 -y_hotspot = 100 x11_name = 'plus' x11_symlinks = ['cell'] [cursors.question_arrow] png = 'question_arrow.png' -x_hotspot = 51 -y_hotspot = 24 +x_hotspot = 39 +y_hotspot = 32 x11_name = 'question_arrow' -win_name = 'Help' x11_symlinks = [ '5c6cd98b3f3ebcb1f9c7f1c204630408', 'd9ce0ab605698f320427677b458ad60b', @@ -234,27 +226,27 @@ x11_symlinks = [ [cursors.right_ptr] png = 'right_ptr.png' -x_hotspot = 143 -y_hotspot = 24 +x_hotspot = 174 +y_hotspot = 42 x11_name = 'right_ptr' -win_name = 'Alternate' x11_symlinks = ['draft_large', 'draft_small'] [cursors.right_tee] png = 'right_tee.png' -x_hotspot = 98 -y_hotspot = 99 +x_hotspot = 169 +y_hotspot = 126 x11_name = 'right_tee' [cursors.sb_down_arrow] png = 'sb_down_arrow.png' +x_hotspot = 128 +y_hotspot = 209 x11_name = 'sb_down_arrow' x11_symlinks = ['down-arrow'] [cursors.sb_h_double_arrow] png = 'sb_h_double_arrow.png' x11_name = 'sb_h_double_arrow' -win_name = 'Horizontal' x11_symlinks = [ '028006030e0e7ebffc7f7070c0600140', '14fef782d02440884392942c1120523', @@ -268,23 +260,28 @@ x11_symlinks = [ [cursors.sb_left_arrow] png = 'sb_left_arrow.png' +x_hotspot = 44 +y_hotspot = 128 x11_name = 'sb_left_arrow' x11_symlinks = ['left-arrow'] [cursors.sb_right_arrow] png = 'sb_right_arrow.png' +x_hotspot = 212 +y_hotspot = 128 x11_name = 'sb_right_arrow' x11_symlinks = ['right-arrow'] [cursors.sb_up_arrow] png = 'sb_up_arrow.png' +x_hotspot = 128 +y_hotspot = 44 x11_name = 'sb_up_arrow' x11_symlinks = ['up-arrow'] [cursors.sb_v_double_arrow] png = 'sb_v_double_arrow.png' x11_name = 'sb_v_double_arrow' -win_name = 'Vertical' x11_symlinks = [ '00008160000006810000408080010102', '2870a09082c103050810ffdffffe0204', @@ -304,26 +301,31 @@ x11_symlinks = ['s-resize', 'n-resize', 'bottom_side'] [cursors.top_tee] png = 'top_tee.png' +x_hotspot = 128 +y_hotspot = 87 x11_name = 'top_tee' [cursors.ul_angle] png = 'ul_angle.png' +x_hotspot = 52 +y_hotspot = 52 x11_name = 'ul_angle' [cursors.ur_angle] png = 'ur_angle.png' +x_hotspot = 203 +y_hotspot = 52 x11_name = 'ur_angle' [cursors.vertical-text] png = 'vertical-text.png' -x_hotspot = 96 -y_hotspot = 99 +x_hotspot = 126 +y_hotspot = 130 x11_name = 'vertical-text' [cursors.wait] png = 'wait-*.png' x11_name = 'wait' -win_name = 'Busy' x11_symlinks = ['watch'] [cursors.wayland-cursor] @@ -337,20 +339,19 @@ x11_symlinks = ['pirate', 'x-cursor'] [cursors.xterm] png = 'xterm.png' -x_hotspot = 100 -y_hotspot = 89 +x_hotspot = 128 +y_hotspot = 126 x11_name = 'xterm' -win_name = 'IBeam' x11_symlinks = ['ibeam', 'text'] [cursors.zoom-in] png = 'zoom-in.png' -x_hotspot = 89 -y_hotspot = 87 +x_hotspot = 112 +y_hotspot = 113 x11_name = 'zoom-in' [cursors.zoom-out] png = 'zoom-out.png' -x_hotspot = 89 -y_hotspot = 87 +x_hotspot = 112 +y_hotspot = 113 x11_name = 'zoom-out' diff --git a/package.json b/package.json index 3cb3fe7e..9ebc3e3f 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,9 @@ "cbmp": "^1.1.1" }, "scripts": { - "render:xcursor-pro-dark": "npx cbmp -d 'svg' -n 'XCursor-Pro-Dark' -bc '#000000' -oc '#FFFFFF'", - "render:xcursor-pro-light": "npx cbmp -d 'svg' -n 'XCursor-Pro-Light' -bc '#FFFFFF' -oc '#000000'", - "render:xcursor-pro-red": "npx cbmp -d 'svg' -n 'XCursor-Pro-Red' -bc '#FF0000' -oc '#FFFFFF'", - "render": "yarn render:xcursor-pro-dark && yarn render:xcursor-pro-light && yarn render:xcursor-pro-red", - "build:xcursor-pro-dark": "ctgen build.toml -d 'bitmaps/XCursor-Pro-Dark' -n 'XCursor-Pro-Dark' -c 'Modern dark XCursors.'", - "build:xcursor-pro-light": "ctgen build.toml -d 'bitmaps/XCursor-Pro-Light' -n 'XCursor-Pro-Light' -c 'Modern light XCursors.'", - "build:xcursor-pro-red": "ctgen build.toml -d 'bitmaps/XCursor-Pro-Red' -n 'XCursor-Pro-Red' -c 'Modern Red XCursors.'", - "build": "yarn build:xcursor-pro-dark && yarn build:xcursor-pro-light && yarn build:xcursor-pro-red" + "clean": "rm -rf bin bitmaps themes", + "render": "npx cbmp render.json", + "build": "bash build.sh", + "generate": "npx cbmp render.json && bash build.sh" } } diff --git a/release.sh b/release.sh deleted file mode 100755 index 905d8586..00000000 --- a/release.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -# A script for preparing binaries for version release of XCursor-Pro, by Abdulkaiz Khatri - -declare -A names -names["XCursor-Pro-Dark"]="Modern dark XCursors." -names["XCursor-Pro-Light"]="Modern light XCursors." -names["XCursor-Pro-Red"]="Modern Red XCursors." - -# Cleanup old builds -rm -rf themes bin - -# Building XCursor-Pro binaries -for key in "${!names[@]}"; -do - comment="${names[$key]}"; - ctgen build.toml -p x11 -d "bitmaps/$key" -n "$key" -c "$comment" & - PID=$! - wait $PID -done - - -# Building XCursor-Pro Windows binaries -for key in "${!names[@]}"; -do - comment="${names[$key]}"; - ctgen build.toml -p windows -s 16 -d "bitmaps/$key" -n "$key-Small" -c "$comment" & - ctgen build.toml -p windows -s 24 -d "bitmaps/$key" -n "$key-Regular" -c "$comment" & - ctgen build.toml -p windows -s 32 -d "bitmaps/$key" -n "$key-Large" -c "$comment" & - ctgen build.toml -p windows -s 48 -d "bitmaps/$key" -n "$key-Extra-Large" -c "$comment" & - PID=$! - wait $PID -done - -# Compressing Binaries -mkdir -p bin -cd themes - -for key in "${!names[@]}"; -do - tar -czvf "../bin/${key}.tar.gz" "${key}" & - PID=$! - wait $PID -done - - -for key in "${!names[@]}"; -do - zip -rv "../bin/${key}-Windows.zip" "${key}-Small-Windows" "${key}-Regular-Windows" "${key}-Large-Windows" "${key}-Extra-Large-Windows" & - PID=$! - wait $PID -done - -cd .. diff --git a/render.json b/render.json new file mode 100644 index 00000000..6ccc7a95 --- /dev/null +++ b/render.json @@ -0,0 +1,26 @@ +{ + "XCursor-Pro-Dark": { + "dir": "svg", + "out": "bitmaps/XCursor-Pro-Dark", + "colors": [ + { "match": "#00FF00", "replace": "#000000" }, + { "match": "#0000FF", "replace": "#FFFFFF" } + ] + }, + "XCursor-Pro-Light": { + "dir": "svg", + "out": "bitmaps/XCursor-Pro-Light", + "colors": [ + { "match": "#00FF00", "replace": "#FFFFFF" }, + { "match": "#0000FF", "replace": "#000000" } + ] + }, + "XCursor-Pro-Red": { + "dir": "svg", + "out": "bitmaps/XCursor-Pro-Red", + "colors": [ + { "match": "#00FF00", "replace": "#FF0000" }, + { "match": "#0000FF", "replace": "#FFFFFF" } + ] + } +} diff --git a/svg/left_side-1.svg b/svg/left_side-1.svg deleted file mode 100644 index 8487a029..00000000 --- a/svg/left_side-1.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/svg/left_side.svg b/svg/left_side.svg index f8ed8202..8487a029 100644 --- a/svg/left_side.svg +++ b/svg/left_side.svg @@ -1,17 +1,17 @@ - - + + - + - + - - + + diff --git a/svg/left_tee.svg b/svg/left_tee.svg new file mode 100644 index 00000000..f8ed8202 --- /dev/null +++ b/svg/left_tee.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/svg/lr_angle.svg b/svg/lr_angle.svg index d0c09ad8..9b6beeed 100644 --- a/svg/lr_angle.svg +++ b/svg/lr_angle.svg @@ -4,7 +4,7 @@ - + diff --git a/svg/pencil-1.svg b/svg/pencil-1.svg deleted file mode 100644 index 37d22355..00000000 --- a/svg/pencil-1.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/svg/pencil.svg b/svg/pencil.svg index fd18fac3..37d22355 100644 --- a/svg/pencil.svg +++ b/svg/pencil.svg @@ -1,19 +1,19 @@ - - - - - + + + + + - + - - + + diff --git a/svg/person.svg b/svg/person.svg new file mode 100644 index 00000000..e7d943b1 --- /dev/null +++ b/svg/person.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/pin.svg b/svg/pin.svg new file mode 100644 index 00000000..a24e6ebb --- /dev/null +++ b/svg/pin.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/plus.svg b/svg/plus.svg new file mode 100644 index 00000000..fd18fac3 --- /dev/null +++ b/svg/plus.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +