diff --git a/.gitignore b/.gitignore --- a/.gitignore +++ b/.gitignore @@ -1,244 +1,15 @@ -# Custom -themes/ -bin/ -bitmaps/ +# Generated cursor assets +/bin/ +/bitmaps/ +/dist/ +/hyprcursor-build/ -# Byte-compiled / optimized / DLL files +# Dependencies +/node_modules/ + +# Nix +/result* + +# Python __pycache__/ *.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -pip-wheel-metadata/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -.python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - - -# Logs -logs -*.log -npm-debug.log* -lerna-debug.log* - - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# dotenv environment variables file -.env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - - -hyprcursor-build/ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,73 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at kaizmandhu@gmail.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,52 +0,0 @@ -# Contributing to Bibata - -I love your input! I want to make contributing to this project as easy and transparent as possible, whether it's: - -- Reporting a bug -- Discussing the current state of the code -- Submitting a fix -- Proposing new features -- Becoming a maintainer - -## I Develop with Github - -I use github to host code, to track issues and feature requests, as well as accept pull requests. - -## I Use [Github Flow](https://guides.github.com/introduction/flow/index.html), So All Code Changes Happen Through Pull Requests - -Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://guides.github.com/introduction/flow/index.html)). We actively welcome your pull requests: - -1. Fork the repo and create your branch from `main`. -2. If you've added code that should be tested, add tests. -3. If you've changed Look, update the documentation. -4. Issue that pull request! - -## Any contributions you make will be under the GPL - 3.0 Software License - -In short, when you submit code changes, your submissions are understood to be under the same [GPL - 3.0 License](https://www.gnu.org/licenses/gpl-3.0.en.html) that covers the project. Feel free to contact the maintainers if that's a concern. - -## Report bugs using Github's [issues](https://github.com/ful1e5/Bibata_Cursor/issues) - -I use GitHub issues to track public bugs. Report a bug by opening a new issue, it's that easy! - -## Write bug reports with detail, background, and sample code - -**Great Bug Reports** tend to have: - -- A quick summary and/or background -- Steps to reproduce -- Be specific! -- Give sample code if you can. -- What you expected would happen -- What actually happens -- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) - -People _love_ thorough bug reports. I'm not even kidding. - -## License - -By contributing, you agree that your contributions will be licensed under its `GPL - 3.0` License. - -## References - -This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md) diff --git a/README.md b/README.md --- a/README.md +++ b/README.md @@ -1,417 +1,160 @@ -### How it works? + -new files: -- hyprcursor-build.sh: - - Gets called at the end of the build script to compile hyprcursor - - Extracts themes from generated xcursor themes in the hyprcursor-build directory - - Calls recolor-svgs.py to generate colored svg files - - deletes old png files replacing theme with svgs - -- recolor-svgs.py: - - gets called from hyprcursor-build.sh - - reads the colors in render.json - - generates new svg files with the desired colors in the hyprcursor-build directory - - -### How to use it - -Download your favourite cursor from [Releases](https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor/releases/latest) - -Extract it and place it on `~/.local/share/icons/` so the -structure of that folder should be somethiing like this: -```bash -~/.local/share/icons/Bibata-Modern-Ice/ - | - hyprcursors - \ - manifest.hl -``` -Then on your hyprland.conf add -```conf -env = HYPRCURSOR_THEME,Bibata-Modern-Ice # Replace Bibata-Modern-Ice with the name of the theme you downloaded -env = HYPRCURSOR_SIZE,24 # Replace 24 with your desired size -``` - -Reload your hyprland session so it reloads your env variables -and you should see your new cursor theme. - -If this doesn't work, try running `hyprctl setcursor Bibata-Modern-Ice 24` on your terminal. -Again replace Bibata-Modern-Ice with the name of the theme you downloaded and 24 with your desired size. - -#### Tip: -You can change the name of the cursor if it conlicts with another cursor theme by changing the name of the folder and the "name" variable on the manifest.hl file. - - -### Building hyprcursors - -#### Dependencies: -- Python 3.7 or higher -- [clickgen](https://github.com/ful1e5/clickgen)>=2.1.8 (`pip install clickgen`) -- [Bun](https://bun.sh) -- [hyprcursor](https://github.com/hyprwm/hyprcursor) - -#### Building: -1. `https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor.git` -3. `cd Bibata-Cursor-hyprcursor` -4. `bun install` -5. `bun run generate` - -On the bin folder it should have generated all the themes -Hyprcursr themes are named as `hypr_.tar.gz` - - ---- - -## ⚠️ Notice: Final Major Version v2.x.x - -I've launched the successor to this project at https://www.github.com/ful1e5/bibata for **downloading and personalizing Bibata**, now the main source for new features. I recommend downloading from there. This repository is still maintained for [Linux packages](#packages). - -- Available at: https://www.bibata.live -- Development Preview: https://dev.bibata.live - -## 💖 Support Bibata's Future - -Your sponsorship is crucial for Bibata's ongoing success. A **$1** contribution helps maintain servers for **24/7 accessibility**. With your support, I can upgrade to high-performance AWS servers, improving user experience. Sponsors also enjoy exclusive premium features for a more rewarding engagement. +
+ Bibata Modern Classic + Bibata Modern Rosé Pine + Bibata Modern Gruvbox Dark # Bibata Cursor -[![build](https://github.com/ful1e5/Bibata_Cursor/actions/workflows/build.yml/badge.svg)](https://github.com/ful1e5/Bibata_Cursor/actions/workflows/build.yml) + Custom Bibata color variants and source layouts for my Nix cursor packages. -TLDR; This cursor set is a masterpiece of cursors available on the internet, -hand-designed by [Abdulkaiz Khatri](https://twitter.com/ful1e5). + [![Release](https://img.shields.io/github/v/release/adam01110/bibata-cursor?style=flat-square&label=Release&labelColor=504945&color=cc241d)](https://github.com/adam01110/bibata-cursor/releases/latest) + [![Build](https://img.shields.io/github/actions/workflow/status/adam01110/bibata-cursor/build.yml?branch=main&style=flat-square&label=Build&labelColor=504945&color=cc241d)](https://github.com/adam01110/bibata-cursor/actions/workflows/build.yml) + [![Repo Size](https://img.shields.io/github/repo-size/adam01110/bibata-cursor?style=flat-square&label=repo%20size&labelColor=504945&color=3c3836)](https://github.com/adam01110/bibata-cursor) +
+ [![Nix](https://img.shields.io/badge/Nix-flakes-689d6a?style=flat-square&labelColor=504945&logo=nixos&logoColor=ebdbb2)](https://nixos.wiki/wiki/Flakes) + [![Bun](https://img.shields.io/badge/Bun-1.3-fb4934?style=flat-square&labelColor=504945&logo=bun&logoColor=ebdbb2)](https://bun.sh) + [![License](https://img.shields.io/github/license/adam01110/bibata-cursor?style=flat-square&labelColor=504945&color=b16286)](LICENSE) -Bibata is an open source, compact, and material designed cursor set that aims -to improve the cursor experience for users. It is one of the most popular cursor sets -in the Linux community and is now available for free on Windows as well, with multiple color -and size options. Its goal is to offer personalized cursors to users. + [Overview](#overview) - [Variants](#variants) - [Usage](#usage) +
+ [Building](#building) - [Packaging](#packaging) - [Layout](#layout) - [Credits](#credits) +
-#### What does "Bibata" mean? +I keep this fork because I want a small set of Bibata variants that match the +rest of my setup, while keeping the cursor sources reusable for XCursor and +Hyprcursor packages. The release workflow renders the color variants once, and +my NUR packages turn those bitmap archives into the final cursor themes. -The sweetest word I ever spoke was "BI-Buh," which, coincidentally, is also the word for peanuts. -To make it more pronounceable and not sound like a baby's words, I added the suffix "Ta." -And with that, my journey in the world of open source began. +The repository is a fork of +[`LOSEARDES77/Bibata-Cursor-hyprcursor`](https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor), +which is itself a fork of the original +[`ful1e5/Bibata_Cursor`](https://github.com/ful1e5/Bibata_Cursor). -## Notes +## Overview -- All cursor's SVG files are found in [svg](./svg) directory or you can also find them on - [Figma](https://www.figma.com/file/Y9RKZLXhSvaxpUzsKGJkp6/Bibata-Cursor?node-id=0%3A1). +- Renders reproducible Bibata bitmap sets from the original SVG sources. +- Keeps Modern, Modern Right, Original, and Original Right source layouts. +- Publishes each configured color variant as a separate release archive. +- Provides the `ctgen` and Hyprcursor conversion files used by my NUR packages. +- Includes a Nix development shell and treefmt checks for repository tooling. -- This repository is now synchronized with the [bibata](https://www.bibata.live) project, - which has become the new mainstream for acquiring new features and updates. - I recommend downloading from there. However, this repository is still periodically maintained - to ensure its relevance and usability for [linux packages](#packages). +## Variants - +| Variant | Base | Outline | Activity | +| --- | --- | --- | --- | +| Bibata Modern Classic | `#000000` | `#FFFFFF` | `#000000` | +| Bibata Modern Rosé Pine | `#26233A` | `#E0DEF4` | `#191724` | +| Bibata Modern Gruvbox Dark | `#504945` | `#FBF1C7` | `#282828` | -![shoutout-sponsors](https://sponsor-spotlight.vercel.app/sponsor?login=ful1e5) +The SVG source tree also contains the Original and right-handed layouts so more +combinations can be added without importing the artwork again. The current +[`render.json`](render.json) only generates the three Modern variants above. ---- +## Usage -![Bibata Amber](https://github.com/ful1e5/Bibata_Cursor/assets/24286590/d64d75e5-3ac9-45f3-8afe-e92719fd48d1) -![Bibata Classic](https://github.com/ful1e5/Bibata_Cursor/assets/24286590/04df0fbe-36fc-47bd-ad0a-c70eaea871f3) -![Bibata Ice](https://github.com/ful1e5/Bibata_Cursor/assets/24286590/56e7e67a-cf77-407c-871c-f663a93508f7) +Rendered PNG archives are available from +[GitHub Releases](https://github.com/adam01110/bibata-cursor/releases/latest). +They are build inputs rather than directly installable cursor themes. ---- +The finished Gruvbox Dark XCursor and Hyprcursor packages are available from my +[NUR repository](https://github.com/adam01110/nur). Add it as a flake input: -![Bibata Amber Right](https://github.com/ful1e5/Bibata_Cursor/assets/24286590/204a036a-796d-4277-85d2-30b7fb2449f2) -![Bibata Classic Right](https://github.com/ful1e5/Bibata_Cursor/assets/24286590/fb4cac21-e8a8-46e9-9ce2-688f35bbcbaa) -![Bibata Ice Right](https://github.com/ful1e5/Bibata_Cursor/assets/24286590/c64f45d6-cd8d-46e6-8386-e2f3b7012db7) - -## Variants: - -- Normal - - **Bibata Original Amber:** Yellowish and sharp edge bibata cursors. - - **Bibata Modern Amber:** Yellowish and rounded edge bibata cursors. - - **Bibata Original Classic:** Black and sharp edge bibata cursors. - - **Bibata Modern Classic:** Black and rounded edge bibata cursors. - - **Bibata Original Ice:** White and sharp edge bibata cursors. - - **Bibata Modern Ice:** White and rounded edge bibata cursors. -- Right Hand - - **Bibata Original Amber Right:** Yellowish and sharp edge right-hand bibata cursors. - - **Bibata Modern Amber Right:** Yellowish and rounded edge right-hand bibata cursors. - - **Bibata Original Classic Right:** Black and sharp edge right-hand bibata cursors. - - **Bibata Modern Classic Right:** Black and rounded edge right-hand bibata cursors. - - **Bibata Original Ice Right:** White and sharp edge right-hand bibata cursors. - - **Bibata Modern Ice Right:** White and rounded edge right-hand bibata cursors. - -## Cursor Sizes - -### Xcursor Sizes: - -16 -20 -22 -24 -28 -32 -40 -48 -56 -64 -72 -80 -88 -96 - -### Windows Cursor Size: - -- 16x16 - Small -- 24x24 - Regular -- 32x32 - Large -- 48x48 - Extra Large - -## Colors: - -### Bibata Amber - -- Base Color - `#FF8300` (Amber) -- Outline Color - `#FFFFFF` (White) -- Watch Background Color - `#001524` (Rich Black) - -### Bibata Classic - -- Base Color - `#000000` (Black) -- Outline Color - `#FFFFFF` (White) -- Watch Background Color - `#000000` (Black) - -### Bibata Ice - -- Base Color - `#FFFFFF` (White) -- Outline Color - `#000000` (Black) -- Watch Background Color - `#FFFFFF` (White) - -## How to get it - -### Easiest Way - -You can download latest `stable` & `development` releases from [bibata.live](https://bibata.live) or on -[Release Page](https://github.com/ful1e5/Bibata_Cursor/releases). - -### Packages - -> **Note** -> If you're having trouble with the packages please submit a request to the package maintainer -> before creating an issue. - -#### Arch Linux/Manjaro - -##### AUR @yochananmarqos - -```bash -paru -S bibata-cursor-theme-bin # (recommended) -paru -S bibata-cursor-theme +```nix +{ + inputs.adam0-nur.url = "github:adam01110/nur"; +} ``` -Or [PKGBUILD](https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=bibata-cursor-theme) +Then select either package for the current system: -#### Fedora - -##### copr-repo by @peterwu (recommended) - -```bash -sudo dnf copr enable peterwu/rendezvous -sudo dnf install bibata-cursor-themes +```nix +{ + inputs, + pkgs, + ... +}: let + nurPkgs = inputs.adam0-nur.packages.${pkgs.stdenv.hostPlatform.system}; +in { + home.packages = [ + nurPkgs.bibata-modern-cursors-gruvbox-dark + nurPkgs.bibata-modern-cursors-gruvbox-dark-hyprcursor + ]; +} ``` -##### copr-repo by @muhalantabli +## Building + +Enter the development shell and install the locked JavaScript dependencies: ```bash -sudo dnf copr enable muhalantabli/copr-repo -sudo dnf install bibata-cursor-theme +nix develop +bun install --frozen-lockfile ``` -## Installing Bibata Cursor - -#### Linux X11/Wayland - -**Installation:** +Render every variant configured in `render.json`: ```bash -tar -xvf Bibata.tar.gz # extract `Bibata.tar.gz` -mv Bibata-* ~/.local/share/icons/ # Install to local users -sudo mv Bibata-* /usr/share/icons/ # Install to all users +bun run generate ``` -**Uninstallation:** +The generated PNG assets are written to `bitmaps/`. + +To change or add a color variant, add another entry to `render.json`. Each color +mapping replaces the source SVG's base, outline, or activity color during +rendering. + +The source layout symlinks can be regenerated after changing files under +`svg/groups`: ```bash -rm ~/.local/share/icons/Bibata-* # Remove from local users -sudo rm /usr/share/icons/Bibata-* # Remove from all users +bun run link ``` -#### Windows +## Packaging -**Installation:** - -1. Unzip `.zip` file -2. Open unziped directory in Explorer, and **right click** on `install.inf`. -3. Click 'Install' from the context menu, and authorize the modifications to your system. -4. Open Control Panel > Personalization and Appearance > Change mouse pointers, - and select **Bibata Cursors**. -5. Click '**Apply**'. - -**Uninstallation:** - -Run the `uninstall.bat` script packed with the `.zip` archive - -**OR** follow these steps: - -1. Go to **Registry Editor** by typing the same in the _start search box_. -2. Expand `HKEY_CURRENT_USER` folder and expand `Control Panel` folder. -3. Go to `Cursors` folder and click on `Schemes` folder - all the available custom cursors that are - installed will be listed here. -4. **Right Click** on the name of cursor file you want to uninstall; for eg.: _Bibata Cursors_ and - click `Delete`. -5. Click '**yes**' when prompted. - -## Build From Source - -### Prerequisites - -- Python version 3.7 or higher -- [clickgen](https://github.com/ful1e5/clickgen)>=2.1.8 (`pip install clickgen`) -- [Bun](https://bun.sh) - -### Quick start - -1. Install [build prerequisites](#prerequisites) on your system -2. `git clone https://github.com/ful1e5/Bibata_Cursor` -3. `cd Bibata_Cursor` -4. `bun install` -5. `bun run generate` -6. See [Installing Bibata Cursor](#installing-bibata-cursor). - -### Getting Started - -Once you have the [build prerequisites](#prerequisites) installed, You can personalize colors, -customize sizes, change target platforms, and more. This process involves using external tools, -as this repository only contains SVG files and configuration for these tools: - -- [cbmp](https://github.com/ful1e5/cbmp): Used for customizing colors and generating PNG files. -- [ctgen](https://github.com/ful1e5/clickgen): Used for customizing sizes and building XCursor and Windows Cursors. - -You can refer to the README of each tool for more information on their command-line options. - -#### Crafting Your Bibata - -[https://bibata.live](https://bibata.live) simplifies the personalization of cursor themes, making it easy and accessible for users. -With bibata, you can enhance your cursor experience effortlessly. Best of all, it's available for free, allowing you to -enjoy a customized bibata cursor theme tailored to your preferences. - -The process of creating custom cursor themes involves two main steps: - -1. Rendering SVG files to PNG files. -2. Building cursor themes from PNG files. - -#### Customize Colors - -`cbmp` provides three options for changing colors: - -1. `-bc`: Base color, which replaces the `#00FF00` color in the SVG. -2. `-oc`: Outlined color, which replaces the `#0000FF` color in the SVG. -3. `-wc` (optional): Watch Background color, which replaces the `#FF0000` color in the SVG. +The downstream packages in +[`adam01110/nur`](https://github.com/adam01110/nur) fetch both this source tree +and a rendered bitmap archive. They use [`build.toml`](build.toml) with `ctgen` +to build an XCursor theme: ```bash -bunx cbmp [...] -bc '' -oc '' -wc '' +ctgen build.toml \ + -d bitmaps/Bibata-Modern-Gruvbox-Dark \ + -n Bibata-Modern-Gruvbox-Dark \ + -c "Gruvbox dark Bibata modern XCursors" ``` -Alternatively, you can provide a JSON configuration file to render SVG files, which contains a sequence of `cbmp` commands: +The Hyprcursor package then converts the generated theme: ```bash -bunx cbmp render.json +bash scripts/build-hyprcursor.sh ``` -#### Customize Sizes +The build script uses the Python helpers beside it to recolor SVGs and update +Hyprcursor metadata during conversion. These files are part of the package +build interface and should remain in sync with the source and manifest naming. -##### Customize Windows Cursor size +## Layout -To build Windows cursor with size `16`: +| Path | Contents | +| --- | --- | +| `svg/groups/` | Canonical artwork grouped by shape and handedness | +| `svg/modern*/` | Modern source layouts assembled from grouped SVG symlinks | +| `svg/original*/` | Original source layouts assembled from grouped SVG symlinks | +| `render.json` | Color variants rendered by `cbmp` | +| `build.toml` | Cursor names, hotspots, sizes, and `ctgen` build settings | +| `scripts/` | SVG layout, recoloring, metadata, and Hyprcursor build utilities | +| `nix/` | Development shell and treefmt flake modules | +| `.github/workflows/build.yml` | Release rendering and archive upload workflow | -```bash -ctgen build.toml -s 16 -p windows -d 'bitmaps/Bibata-Modern-Ice' -n 'Bibata-Modern-Ice' -c 'White and rounded egde bibata cusors with size 16' -``` +## Credits -You can also customize output directory with `-o` option: - -```bash -ctgen build.toml -s 16 -p windows -d 'bitmaps/Bibata-Modern-Ice' -o 'out' -n 'Bibata-Modern-Ice' -c 'White and rounded egde Bibata cursors with size 16' -``` - -##### Customize XCursor size - -To build XCursor with size `16`: - -```bash -ctgen build.toml -s 16 -p x11 -d 'bitmaps/Bibata-Modern-Ice' -n 'Bibata-Modern-Ice' -c 'White and rounded egde Bibata cursors with size 16' -``` - -You can also assign multiple sizes to `ctgen` for XCursors build: - -```bash -ctgen build.toml -s 16 18 24 32 -p x11 -d 'bitmaps/Bibata-Modern-Ice' -n 'Bibata-Modern-Ice' -c 'Custom white and rounded egde Bibata cursors' -``` - -#### Examples - -Lets generate Bibata-Modern with green and black colors: - -```bash -bunx cbmp -d 'svg/modern' -o 'bitmaps/Bibata-Hacker' -bc '#00FE00' -oc '#000000' -``` - -After rendering custom color you have to build cursor through `ctgen`: - -```bash -ctgen build.toml -d 'bitmaps/Bibata-Hacker' -n 'Bibata-Hacker' -c 'Green and Black Bibata cursors.' -``` - -Afterwards, Generated theme can be found in the `themes` directory. - -###### Bibata Gruvbox - -```bash -bunx cbmp -d 'svg/original' -o 'bitmaps/Bibata-Gruvbox' -bc '#282828' -oc '#EBDBB2' -wc '#000000' -ctgen build.toml -d 'bitmaps/Bibata-Gruvbox' -n 'Bibata-Gruvbox' -c 'Groovy Bibata cursors.' -``` - -###### Bibata Solarized Dark - -```bash -bunx cbmp -d 'svg/original' -o 'bitmaps/Bibata-Solarized-Dark' -bc '#002b36' -oc '#839496' -wc '#000000' -ctgen build.toml -d 'bitmaps/Bibata-Solarized-Dark' -n 'Bibata-Solarized-Dark' -c 'Solarized Dark Bibata cursors.' -``` - -###### Bibata Solarized Light - -```bash -bunx cbmp -d 'svg/original' -o 'bitmaps/Bibata-Solarized-Light' -bc '#839496' -oc '#002b36' -ctgen build.toml -d 'bitmaps/Bibata-Solarized-Light' -n 'Bibata-Solarized-Light' -c 'Solarized Light Bibata cursors.' -``` - -###### Bibata Dracula - -```bash -bunx cbmp -d 'svg/original' -o 'bitmaas/Bibata-Dracula' -bc '#282a36' -oc '#f8f8f2' -ctgen build.toml -d 'bitmaps/Bibata-Dracula' -n 'Bibata-Dracula' -c 'Dracula Bibata cursors.' -``` - -## You may also like... - -- [**Bibata**](https://bibata.live) - The place where Bibata's cursor gets personalized. -- [**Bibata Adapta**](https://gitlab.com/cscs/Bibata_AdaptaBreath_Cursors) - Bibata Based Cursor Made for AdaptaBreath and Manjaro. -- [**Bibata Translucent**](https://github.com/Silicasandwhich/Bibata_Cursor_Translucent) - Bibata translucent is a translucent flavor of the Bibata. - -## Testing Cursor - -There are several websites that allow you to test your cursor states by hovering over buttons. This can be very useful when developing or verifying the behavior of a cursor. The following websites cover many of the most commonly used cursors, although they may not include all available options. - -- [Cursor-Test](https://vibhorjaiswal.github.io/Cursor-Test/) -- [Mozilla CSS Cursor](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor) - -For a blueprint for creating XCursors, you may also want to refer to [Cursor-demo](https://wiki.tcl-lang.org/page/Cursor+demo). - -## Credit - -[Wedge Loading Animation](https://loading.io/spinner/wedges/-pie-wedge-pizza-circle-round-rotate) · -[Adwaita](https://github.com/GNOME/adwaita-icon-theme) · -[Dmz](https://github.com/GalliumOS/dmz-cursor-theme) · -[Yaru](https://github.com/ubuntu/yaru) +- [Bibata Cursor](https://github.com/ful1e5/Bibata_Cursor), designed by + [Abdulkaiz Khatri](https://github.com/ful1e5) +- [Bibata Cursor Hyprcursor](https://github.com/LOSEARDES77/Bibata-Cursor-hyprcursor) +- [Wedge Loading Animation](https://loading.io/spinner/wedges/-pie-wedge-pizza-circle-round-rotate) +- [Adwaita](https://github.com/GNOME/adwaita-icon-theme) +- [DMZ](https://github.com/GalliumOS/dmz-cursor-theme) +- [Yaru](https://github.com/ubuntu/yaru) diff --git a/edit-manifest.py b/edit-manifest.py deleted file mode 100644 --- a/edit-manifest.py +++ /dev/null @@ -1,35 +0,0 @@ -import sys - - -def main(): - args = sys.argv[1:] - metahl = args[0] - theme_name = args[1] - with open(metahl, "r+") as f: - content = f.readlines() - f.seek(0) - f.truncate() - desc = "Hyprcursor version of bibata. " - shape = "Modern" if theme_name.split("-")[1] == "Modern" else "Original" - if theme_name.endswith("-Classic"): - desc += "Black and " + shape + " Bibata cursors" - elif theme_name.endswith("-Rosepine"): - desc += "Rosepine and " + shape + " Bibata cursors" - elif theme_name.endswith("-Gruvbox-Dark"): - desc += "Gruvbox dark and " + shape + " Bibata cursors" - for line in content: - if not line.startswith("name = Extracted Theme") and not line.startswith( - "description = Automatically extracted with hyprcursor-util" - ): - f.write(line) - else: - if line.startswith("name = Extracted Theme"): - f.write("name = " + theme_name + "\n") - elif line.startswith( - "description = Automatically extracted with hyprcursor-util" - ): - f.write("description = " + desc + "\n") - - -if __name__ == "__main__": - main() diff --git a/edit-meta.py b/edit-meta.py deleted file mode 100644 --- a/edit-meta.py +++ /dev/null @@ -1,25 +0,0 @@ -import sys - -def main(): - args = sys.argv[1:] - metahl = args[0] - svg_files = args[1:] - - with open(metahl, 'r+') as f: - content = f.readlines() - f.seek(0) - f.truncate() - has_written = False - for line in content: - if not line.startswith("define_size = "): - f.write(line) - elif not has_written: - content_to_write = "" - for svg_file in svg_files: - for svg in svg_file.split("\n"): - content_to_write += "define_size = 0, " + svg.split("/")[len(svg.split("/")) - 1] + "\n" - f.write(content_to_write) - has_written = True - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/hyprcursor-build.sh b/hyprcursor-build.sh deleted file mode 100644 --- a/hyprcursor-build.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -rm -rf hyprcursor-build - -mkdir -p hyprcursor-build - -for theme in $(find ./bin -maxdepth 1 -type d | grep "Bibata-*"); do - hyprcursor-util --extract "$theme" --output "hyprcursor-build" -done - -python3 recolor-svgs.py - -for theme in $(find ./hyprcursor-build -maxdepth 1 -type d | grep "extracted_Bibata-*"); do - theme_name=$(basename "$theme") - theme_base=$(echo "$theme_name" | cut -d'_' -f2) - for shape in $(find "$theme/hyprcursors/" -maxdepth 1 -mindepth 1 -type d); do - shape_name=$(basename "$shape") - svg_files=$(find "./hyprcursor-build/recolored_svgs/$theme_base/" -name "$shape_name.svg" | grep "$shape_name") - if [ -z "$svg_files" ]; then - if [ "$shape_name" == "wait" ]; then - svg_files=$(find "./hyprcursor-build/recolored_svgs/$theme_base/wait/" -name "*.svg") - elif [ "$shape_name" == "left_ptr_watch" ]; then - svg_files=$(find "./hyprcursor-build/recolored_svgs/$theme_base/left_ptr_watch/" -name "*.svg") - fi - fi - echo "$theme_base: $shape_name -> $svg_files" - if [ -z "$svg_files" ]; then - # echo "No SVG file found for $theme_base: $shape_name" - exit 1 - fi - - png_files=$(find "$shape" -name "*.png") - for png_file in $png_files; do - rm "$png_file" - done - meta_file=$(find "$shape" -name "meta.hl") - python3 edit-meta.py "$meta_file" "$svg_files" - for svg_file in $svg_files; do - mv "$svg_file" "$shape" - done - done -done - -for theme in $(find ./hyprcursor-build/ -maxdepth 1 -type d | grep "extracted_Bibata-*"); do - manifest_file=$(find "$theme" -name "manifest.hl") - python3 edit-manifest.py "$manifest_file" "$(basename "$theme" | cut -d'_' -f2)" - hyprcursor-util --create "$theme" --output "hyprcursor-build" -done - -for theme_dir in $(find ./hyprcursor-build -maxdepth 1 -type d | grep "theme_Bibata-*"); do - theme_base_name=$(basename "$theme_dir" | cut -d'_' -f2) - new_name="${theme_base_name}-hyprcursor" - echo "Moving $theme_dir to bin/$new_name" - cp -rf "$theme_dir" "bin/$new_name" -done diff --git a/package.json b/package.json --- a/package.json +++ b/package.json @@ -1,12 +1,13 @@ { - "type": "module", - "packageManager": "bun@1.3.13", - "dependencies": { - "cbmp": "^1.1.1" - }, - "scripts": { - "clean": "rm -rf bin bitmaps hyprcursor-build dist", - "render": "cbmp render.json", - "generate": "cbmp render.json" - } + "type": "module", + "scripts": { + "build:hyprcursor": "bash scripts/build-hyprcursor.sh", + "clean": "rm -rf bin bitmaps dist hyprcursor-build", + "generate": "cbmp render.json", + "link": "python3 scripts/link-svg-layouts.py" + }, + "dependencies": { + "cbmp": "^1.1.1" + }, + "packageManager": "bun@1.3.13" } diff --git a/pling.txt b/pling.txt deleted file mode 100644 --- a/pling.txt +++ /dev/null @@ -1,22 +0,0 @@ -Bibata is one of the most popular cursors set in the Linux community so far and is now available for freely with multiple colors and size options for Windows as well. The aim of this project is to provide personalized cursors to users. - -Check [url=https://github.com/ful1e5/Bibata_Cursor]README.md[/url] for installation, uninstallation, and personalize cursor sizes or colors. - -[b]Bibata Styles:[/b] -- Bibata Modern: Round Edges Bibata Cursors -- Bibata Original: Sharp Edges Bibata Cursors - -[b]XCursor Sizes:[/b] -16x16, 20x20, 22x22, 24x24, 28x28, 32x32, 40x40, 48x48, 56x56, 64x64, 72x72, 80x80, 88x88, 96x96 - -[b]Windows Cursor Size:[/b] -- 16x16 - Small -- 24x24 - Regular -- 32x32 - Large -- 48x48 - Extra Large - -[b]How to Personalize Bibata[/b] -Visit [url=https://www.bibata.live]https://www.bibata.live[/url] to personalize and download your own Bibata Cursor. - -[b]License & Terms:[/b] -'Bibata_Cursor' is available under the terms of the 'GPL-3.0' license. diff --git a/recolor-svgs.py b/recolor-svgs.py deleted file mode 100644 --- a/recolor-svgs.py +++ /dev/null @@ -1,70 +0,0 @@ -import json -import os - - -class Renderer: - theme_name = None - input_folder = None - output_folder = None - colors = [] - - def __init__(self, input_folder, output_folder, theme_name, colors): - self.theme_name = theme_name - self.input_folder = input_folder - self.output_folder = output_folder - self.colors = colors - -def main(): - render_file = "render.json" - renderers = [] - - with open(render_file, "r") as f: - data = json.load(f) - for theme in data: - if not theme.endswith("-Right"): - - theme_name = theme - svgs_dir = data[theme]["dir"] - output = "hyprcursor-build/recolored_svgs/" + theme_name - os.system("mkdir -p " + output) - colors = [] - for color in data[theme]["colors"]: - colors.append((color["match"], color["replace"])) - renderers.append(Renderer(svgs_dir, output, theme_name, colors)) - - f.close() - - - for renderer in renderers: - for root, dirsn, filesn in os.walk(renderer.input_folder): - for file in filesn: - if file.endswith(".svg"): - with open(os.path.join(root, file), "r") as f: - content = f.read() - for color in renderer.colors: - content = content.replace(color[0], color[1]) - with open(os.path.join(renderer.output_folder, file), "w") as f: - f.write(content) - for root, dirsn, filesn in os.walk(renderer.input_folder + "/wait"): - for file in filesn: - if file.endswith(".svg"): - os.system("mkdir -p " + renderer.output_folder + "/wait") - with open(os.path.join(root, file), "r") as f: - content = f.read() - for color in renderer.colors: - content = content.replace(color[0], color[1]) - with open(os.path.join(renderer.output_folder + "/wait", file), "w") as f: - f.write(content) - for root, dirsn, filesn in os.walk(renderer.input_folder + "/left_ptr_watch"): - for file in filesn: - if file.endswith(".svg"): - os.system("mkdir -p " + renderer.output_folder + "/left_ptr_watch") - with open(os.path.join(root, file), "r") as f: - content = f.read() - for color in renderer.colors: - content = content.replace(color[0], color[1]) - with open(os.path.join(renderer.output_folder + "/left_ptr_watch", file), "w") as f: - f.write(content) - -if __name__ == "__main__": - main() diff --git a/assets/modern-classic.png b/assets/modern-classic.png new file mode 100644 --- /dev/null +++ b/assets/modern-classic.png diff --git a/assets/modern-gruvbox-dark.png b/assets/modern-gruvbox-dark.png new file mode 100644 --- /dev/null +++ b/assets/modern-gruvbox-dark.png diff --git a/assets/modern-rosepine.png b/assets/modern-rosepine.png new file mode 100644 --- /dev/null +++ b/assets/modern-rosepine.png diff --git a/scripts/build-hyprcursor.sh b/scripts/build-hyprcursor.sh new file mode 100644 --- /dev/null +++ b/scripts/build-hyprcursor.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd) +repo_root=$(dirname "$script_dir") +cd "$repo_root" || exit 1 + +rm -rf hyprcursor-build +mkdir -p hyprcursor-build + +while IFS= read -r theme; do + hyprcursor-util --extract "$theme" --output hyprcursor-build +done < <(find ./bin -maxdepth 1 -type d -name "Bibata-*") + +python3 "$script_dir/recolor-svgs.py" + +while IFS= read -r theme; do + theme_name=$(basename "$theme") + theme_base=${theme_name#*_} + + while IFS= read -r shape; do + shape_name=$(basename "$shape") + svg_files=$(find "./hyprcursor-build/recolored_svgs/$theme_base/" -name "$shape_name.svg") + + if [[ -z "$svg_files" ]]; then + case "$shape_name" in + wait | left_ptr_watch) + svg_files=$(find "./hyprcursor-build/recolored_svgs/$theme_base/$shape_name/" -name "*.svg") + ;; + esac + fi + + echo "$theme_base: $shape_name -> $svg_files" + if [[ -z "$svg_files" ]]; then + exit 1 + fi + + while IFS= read -r png_file; do + rm "$png_file" + done < <(find "$shape" -name "*.png") + + meta_file=$(find "$shape" -name "meta.hl") + python3 "$script_dir/edit-hyprcursor-meta.py" "$meta_file" "$svg_files" + + while IFS= read -r svg_file; do + mv "$svg_file" "$shape" + done <<<"$svg_files" + done < <(find "$theme/hyprcursors/" -maxdepth 1 -mindepth 1 -type d) +done < <(find ./hyprcursor-build -maxdepth 1 -type d -name "extracted_Bibata-*") + +while IFS= read -r theme; do + manifest_file=$(find "$theme" -name "manifest.hl") + theme_name=$(basename "$theme") + python3 "$script_dir/edit-hyprcursor-manifest.py" "$manifest_file" "${theme_name#*_}" + hyprcursor-util --create "$theme" --output hyprcursor-build +done < <(find ./hyprcursor-build -maxdepth 1 -type d -name "extracted_Bibata-*") + +while IFS= read -r theme_dir; do + theme_name=$(basename "$theme_dir") + theme_base_name=${theme_name#*_} + new_name="${theme_base_name}-hyprcursor" + echo "Moving $theme_dir to bin/$new_name" + cp -rf "$theme_dir" "bin/$new_name" +done < <(find ./hyprcursor-build -maxdepth 1 -type d -name "theme_Bibata-*") diff --git a/scripts/edit-hyprcursor-manifest.py b/scripts/edit-hyprcursor-manifest.py new file mode 100644 --- /dev/null +++ b/scripts/edit-hyprcursor-manifest.py @@ -0,0 +1,35 @@ +import sys + + +def main(): + args = sys.argv[1:] + metahl = args[0] + theme_name = args[1] + with open(metahl, "r+") as f: + content = f.readlines() + f.seek(0) + f.truncate() + desc = "Hyprcursor version of bibata. " + shape = "Modern" if theme_name.split("-")[1] == "Modern" else "Original" + if theme_name.endswith("-Classic"): + desc += "Black and " + shape + " Bibata cursors" + elif theme_name.endswith("-Rosepine"): + desc += "Rosepine and " + shape + " Bibata cursors" + elif theme_name.endswith("-Gruvbox-Dark"): + desc += "Gruvbox dark and " + shape + " Bibata cursors" + for line in content: + if not line.startswith("name = Extracted Theme") and not line.startswith( + "description = Automatically extracted with hyprcursor-util" + ): + f.write(line) + else: + if line.startswith("name = Extracted Theme"): + f.write("name = " + theme_name + "\n") + elif line.startswith( + "description = Automatically extracted with hyprcursor-util" + ): + f.write("description = " + desc + "\n") + + +if __name__ == "__main__": + main() diff --git a/scripts/edit-hyprcursor-meta.py b/scripts/edit-hyprcursor-meta.py new file mode 100644 --- /dev/null +++ b/scripts/edit-hyprcursor-meta.py @@ -0,0 +1,25 @@ +import sys + +def main(): + args = sys.argv[1:] + metahl = args[0] + svg_files = args[1:] + + with open(metahl, 'r+') as f: + content = f.readlines() + f.seek(0) + f.truncate() + has_written = False + for line in content: + if not line.startswith("define_size = "): + f.write(line) + elif not has_written: + content_to_write = "" + for svg_file in svg_files: + for svg in svg_file.split("\n"): + content_to_write += "define_size = 0, " + svg.split("/")[len(svg.split("/")) - 1] + "\n" + f.write(content_to_write) + has_written = True + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/scripts/link-svg-layouts.py b/scripts/link-svg-layouts.py new file mode 100644 --- /dev/null +++ b/scripts/link-svg-layouts.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 + +import os +from pathlib import Path + + +SVG_ROOT = Path(__file__).resolve().parent.parent / "svg" + + +def generate_symlinks(source_dirs: list[Path], destination: Path) -> None: + destination.mkdir(exist_ok=True) + + for source_dir in source_dirs: + for source in source_dir.iterdir(): + link = destination / source.name + link.unlink(missing_ok=True) + + print(f"Creating symlink for {link.relative_to(SVG_ROOT)}") + link.symlink_to(os.path.relpath(source, destination)) + + +def main() -> None: + layouts = { + "modern": ["modern", "modern-arrow", "shared", "hand"], + "modern-right": ["modern-right", "modern-arrow", "shared", "hand-right"], + "original": ["original", "original-arrow", "shared", "hand"], + "original-right": [ + "original-right", + "original-arrow", + "shared", + "hand-right", + ], + } + + for destination, source_dirs in layouts.items(): + generate_symlinks( + [SVG_ROOT / "groups" / source_dir for source_dir in source_dirs], + SVG_ROOT / destination, + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/recolor-svgs.py b/scripts/recolor-svgs.py new file mode 100644 --- /dev/null +++ b/scripts/recolor-svgs.py @@ -0,0 +1,70 @@ +import json +import os + + +class Renderer: + theme_name = None + input_folder = None + output_folder = None + colors = [] + + def __init__(self, input_folder, output_folder, theme_name, colors): + self.theme_name = theme_name + self.input_folder = input_folder + self.output_folder = output_folder + self.colors = colors + +def main(): + render_file = "render.json" + renderers = [] + + with open(render_file, "r") as f: + data = json.load(f) + for theme in data: + if not theme.endswith("-Right"): + + theme_name = theme + svgs_dir = data[theme]["dir"] + output = "hyprcursor-build/recolored_svgs/" + theme_name + os.system("mkdir -p " + output) + colors = [] + for color in data[theme]["colors"]: + colors.append((color["match"], color["replace"])) + renderers.append(Renderer(svgs_dir, output, theme_name, colors)) + + f.close() + + + for renderer in renderers: + for root, dirsn, filesn in os.walk(renderer.input_folder): + for file in filesn: + if file.endswith(".svg"): + with open(os.path.join(root, file), "r") as f: + content = f.read() + for color in renderer.colors: + content = content.replace(color[0], color[1]) + with open(os.path.join(renderer.output_folder, file), "w") as f: + f.write(content) + for root, dirsn, filesn in os.walk(renderer.input_folder + "/wait"): + for file in filesn: + if file.endswith(".svg"): + os.system("mkdir -p " + renderer.output_folder + "/wait") + with open(os.path.join(root, file), "r") as f: + content = f.read() + for color in renderer.colors: + content = content.replace(color[0], color[1]) + with open(os.path.join(renderer.output_folder + "/wait", file), "w") as f: + f.write(content) + for root, dirsn, filesn in os.walk(renderer.input_folder + "/left_ptr_watch"): + for file in filesn: + if file.endswith(".svg"): + os.system("mkdir -p " + renderer.output_folder + "/left_ptr_watch") + with open(os.path.join(root, file), "r") as f: + content = f.read() + for color in renderer.colors: + content = content.replace(color[0], color[1]) + with open(os.path.join(renderer.output_folder + "/left_ptr_watch", file), "w") as f: + f.write(content) + +if __name__ == "__main__": + main() diff --git a/svg/link.py b/svg/link.py deleted file mode 100644 --- a/svg/link.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import contextlib -import os -from pathlib import Path -from typing import List - - -@contextlib.contextmanager -def cwd(dir): - curdir = os.getcwd() - try: - os.chdir(dir) - yield - finally: - os.chdir(curdir) - - -def gen_symlinks(src_dirs: List[str], dst_dir: str) -> None: - dst = Path(dst_dir) - for src_dir in src_dirs: - for file in Path(src_dir).glob("*"): - link = dst / file.name - if os.path.exists(link): - os.remove(link) - - print(f"Creating symlink for {link.name}") - with cwd(dst): - os.symlink( - os.path.relpath(file, dst), - link.name, - ) - - -# Linking Bibata Modern -gen_symlinks( - [ - "groups/modern", - "groups/modern-arrow", - "groups/shared", - "groups/hand", - ], - "modern", -) - -# Linking Bibata Modern Right -# gen_symlinks( -# [ -# "groups/modern-right", -# "groups/modern-arrow", -# "groups/shared", -# "groups/hand-right", -# ], -# "modern-right", -# ) - -# Linking Bibata Original -gen_symlinks( - [ - "groups/original", - "groups/original-arrow", - "groups/shared", - "groups/hand", - ], - "original", -) - -# Linking Bibata Original Right -# gen_symlinks( -# [ -# "groups/original-right", -# "groups/original-arrow", -# "groups/shared", -# "groups/hand-right", -# ], -# "original-right", -# ) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,7 +25,7 @@ run: bun install --frozen-lockfile - name: Render bitmaps - run: bun run render + run: bun run generate - name: Package bitmaps (zip each subfolder) run: | diff --git a/nix/modules/dev-shell.nix b/nix/modules/dev-shell.nix --- a/nix/modules/dev-shell.nix +++ b/nix/modules/dev-shell.nix @@ -1,7 +1,11 @@ { perSystem = {pkgs, ...}: { - devShells.default = pkgs.mkShellNoCC { - packages = [pkgs.bun]; - }; + devShells.default = with pkgs; + mkShellNoCC { + packages = [ + bun + python3 + ]; + }; }; } diff --git a/svg/modern-right/X_cursor.svg b/svg/modern-right/X_cursor.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/X_cursor.svg @@ -0,0 +1,1 @@ +../groups/shared/X_cursor.svg \ No newline at end of file diff --git a/svg/modern-right/bd_double_arrow.svg b/svg/modern-right/bd_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/bd_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/bd_double_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/bottom_left_corner.svg b/svg/modern-right/bottom_left_corner.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/bottom_left_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_left_corner.svg \ No newline at end of file diff --git a/svg/modern-right/bottom_right_corner.svg b/svg/modern-right/bottom_right_corner.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/bottom_right_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_right_corner.svg \ No newline at end of file diff --git a/svg/modern-right/bottom_side.svg b/svg/modern-right/bottom_side.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/bottom_side.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_side.svg \ No newline at end of file diff --git a/svg/modern-right/bottom_tee.svg b/svg/modern-right/bottom_tee.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/bottom_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_tee.svg \ No newline at end of file diff --git a/svg/modern-right/center_ptr.svg b/svg/modern-right/center_ptr.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/center_ptr.svg @@ -0,0 +1,1 @@ +../groups/modern-right/center_ptr.svg \ No newline at end of file diff --git a/svg/modern-right/circle.svg b/svg/modern-right/circle.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/circle.svg @@ -0,0 +1,1 @@ +../groups/modern-right/circle.svg \ No newline at end of file diff --git a/svg/modern-right/context-menu.svg b/svg/modern-right/context-menu.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/context-menu.svg @@ -0,0 +1,1 @@ +../groups/modern-right/context-menu.svg \ No newline at end of file diff --git a/svg/modern-right/copy.svg b/svg/modern-right/copy.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/copy.svg @@ -0,0 +1,1 @@ +../groups/modern-right/copy.svg \ No newline at end of file diff --git a/svg/modern-right/cross.svg b/svg/modern-right/cross.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/cross.svg @@ -0,0 +1,1 @@ +../groups/shared/cross.svg \ No newline at end of file diff --git a/svg/modern-right/crossed_circle.svg b/svg/modern-right/crossed_circle.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/crossed_circle.svg @@ -0,0 +1,1 @@ +../groups/shared/crossed_circle.svg \ No newline at end of file diff --git a/svg/modern-right/crosshair.svg b/svg/modern-right/crosshair.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/crosshair.svg @@ -0,0 +1,1 @@ +../groups/shared/crosshair.svg \ No newline at end of file diff --git a/svg/modern-right/dnd-ask.svg b/svg/modern-right/dnd-ask.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/dnd-ask.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd-ask.svg \ No newline at end of file diff --git a/svg/modern-right/dnd-copy.svg b/svg/modern-right/dnd-copy.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/dnd-copy.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd-copy.svg \ No newline at end of file diff --git a/svg/modern-right/dnd-link.svg b/svg/modern-right/dnd-link.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/dnd-link.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd-link.svg \ No newline at end of file diff --git a/svg/modern-right/dnd_no_drop.svg b/svg/modern-right/dnd_no_drop.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/dnd_no_drop.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd_no_drop.svg \ No newline at end of file diff --git a/svg/modern-right/dotbox.svg b/svg/modern-right/dotbox.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/dotbox.svg @@ -0,0 +1,1 @@ +../groups/shared/dotbox.svg \ No newline at end of file diff --git a/svg/modern-right/fd_double_arrow.svg b/svg/modern-right/fd_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/fd_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/fd_double_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/grabbing.svg b/svg/modern-right/grabbing.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/grabbing.svg @@ -0,0 +1,1 @@ +../groups/hand-right/grabbing.svg \ No newline at end of file diff --git a/svg/modern-right/hand1.svg b/svg/modern-right/hand1.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/hand1.svg @@ -0,0 +1,1 @@ +../groups/hand-right/hand1.svg \ No newline at end of file diff --git a/svg/modern-right/hand2.svg b/svg/modern-right/hand2.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/hand2.svg @@ -0,0 +1,1 @@ +../groups/hand-right/hand2.svg \ No newline at end of file diff --git a/svg/modern-right/left_ptr.svg b/svg/modern-right/left_ptr.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/left_ptr.svg @@ -0,0 +1,1 @@ +../groups/modern-right/left_ptr.svg \ No newline at end of file diff --git a/svg/modern-right/left_ptr_watch b/svg/modern-right/left_ptr_watch new file mode 100644 --- /dev/null +++ b/svg/modern-right/left_ptr_watch @@ -0,0 +1,1 @@ +../groups/modern-right/left_ptr_watch \ No newline at end of file diff --git a/svg/modern-right/left_side.svg b/svg/modern-right/left_side.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/left_side.svg @@ -0,0 +1,1 @@ +../groups/shared/left_side.svg \ No newline at end of file diff --git a/svg/modern-right/left_tee.svg b/svg/modern-right/left_tee.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/left_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/left_tee.svg \ No newline at end of file diff --git a/svg/modern-right/link.svg b/svg/modern-right/link.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/link.svg @@ -0,0 +1,1 @@ +../groups/modern-right/link.svg \ No newline at end of file diff --git a/svg/modern-right/ll_angle.svg b/svg/modern-right/ll_angle.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/ll_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/ll_angle.svg \ No newline at end of file diff --git a/svg/modern-right/lr_angle.svg b/svg/modern-right/lr_angle.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/lr_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/lr_angle.svg \ No newline at end of file diff --git a/svg/modern-right/move.svg b/svg/modern-right/move.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/move.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/move.svg \ No newline at end of file diff --git a/svg/modern-right/pencil.svg b/svg/modern-right/pencil.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/pencil.svg @@ -0,0 +1,1 @@ +../groups/shared/pencil.svg \ No newline at end of file diff --git a/svg/modern-right/person.svg b/svg/modern-right/person.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/person.svg @@ -0,0 +1,1 @@ +../groups/modern-right/person.svg \ No newline at end of file diff --git a/svg/modern-right/pin.svg b/svg/modern-right/pin.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/pin.svg @@ -0,0 +1,1 @@ +../groups/modern-right/pin.svg \ No newline at end of file diff --git a/svg/modern-right/plus.svg b/svg/modern-right/plus.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/plus.svg @@ -0,0 +1,1 @@ +../groups/shared/plus.svg \ No newline at end of file diff --git a/svg/modern-right/pointer-move.svg b/svg/modern-right/pointer-move.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/pointer-move.svg @@ -0,0 +1,1 @@ +../groups/modern-right/pointer-move.svg \ No newline at end of file diff --git a/svg/modern-right/question_arrow.svg b/svg/modern-right/question_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/question_arrow.svg @@ -0,0 +1,1 @@ +../groups/shared/question_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/right_ptr.svg b/svg/modern-right/right_ptr.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/right_ptr.svg @@ -0,0 +1,1 @@ +../groups/modern-right/right_ptr.svg \ No newline at end of file diff --git a/svg/modern-right/right_side.svg b/svg/modern-right/right_side.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/right_side.svg @@ -0,0 +1,1 @@ +../groups/shared/right_side.svg \ No newline at end of file diff --git a/svg/modern-right/right_tee.svg b/svg/modern-right/right_tee.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/right_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/right_tee.svg \ No newline at end of file diff --git a/svg/modern-right/sb_down_arrow.svg b/svg/modern-right/sb_down_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/sb_down_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/sb_down_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/sb_h_double_arrow.svg b/svg/modern-right/sb_h_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/sb_h_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/sb_h_double_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/sb_left_arrow.svg b/svg/modern-right/sb_left_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/sb_left_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/sb_left_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/sb_right_arrow.svg b/svg/modern-right/sb_right_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/sb_right_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/sb_right_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/sb_up_arrow.svg b/svg/modern-right/sb_up_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/sb_up_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/sb_up_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/sb_v_double_arrow.svg b/svg/modern-right/sb_v_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/sb_v_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/modern-arrow/sb_v_double_arrow.svg \ No newline at end of file diff --git a/svg/modern-right/tcross.svg b/svg/modern-right/tcross.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/tcross.svg @@ -0,0 +1,1 @@ +../groups/shared/tcross.svg \ No newline at end of file diff --git a/svg/modern-right/top_left_corner.svg b/svg/modern-right/top_left_corner.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/top_left_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/top_left_corner.svg \ No newline at end of file diff --git a/svg/modern-right/top_right_corner.svg b/svg/modern-right/top_right_corner.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/top_right_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/top_right_corner.svg \ No newline at end of file diff --git a/svg/modern-right/top_side.svg b/svg/modern-right/top_side.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/top_side.svg @@ -0,0 +1,1 @@ +../groups/shared/top_side.svg \ No newline at end of file diff --git a/svg/modern-right/top_tee.svg b/svg/modern-right/top_tee.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/top_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/top_tee.svg \ No newline at end of file diff --git a/svg/modern-right/ul_angle.svg b/svg/modern-right/ul_angle.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/ul_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/ul_angle.svg \ No newline at end of file diff --git a/svg/modern-right/ur_angle.svg b/svg/modern-right/ur_angle.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/ur_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/ur_angle.svg \ No newline at end of file diff --git a/svg/modern-right/vertical-text.svg b/svg/modern-right/vertical-text.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/vertical-text.svg @@ -0,0 +1,1 @@ +../groups/shared/vertical-text.svg \ No newline at end of file diff --git a/svg/modern-right/wait b/svg/modern-right/wait new file mode 100644 --- /dev/null +++ b/svg/modern-right/wait @@ -0,0 +1,1 @@ +../groups/shared/wait \ No newline at end of file diff --git a/svg/modern-right/wayland-cursor.svg b/svg/modern-right/wayland-cursor.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/wayland-cursor.svg @@ -0,0 +1,1 @@ +../groups/shared/wayland-cursor.svg \ No newline at end of file diff --git a/svg/modern-right/xterm.svg b/svg/modern-right/xterm.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/xterm.svg @@ -0,0 +1,1 @@ +../groups/shared/xterm.svg \ No newline at end of file diff --git a/svg/modern-right/zoom-in.svg b/svg/modern-right/zoom-in.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/zoom-in.svg @@ -0,0 +1,1 @@ +../groups/shared/zoom-in.svg \ No newline at end of file diff --git a/svg/modern-right/zoom-out.svg b/svg/modern-right/zoom-out.svg new file mode 100644 --- /dev/null +++ b/svg/modern-right/zoom-out.svg @@ -0,0 +1,1 @@ +../groups/shared/zoom-out.svg \ No newline at end of file diff --git a/svg/original-right/X_cursor.svg b/svg/original-right/X_cursor.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/X_cursor.svg @@ -0,0 +1,1 @@ +../groups/shared/X_cursor.svg \ No newline at end of file diff --git a/svg/original-right/bd_double_arrow.svg b/svg/original-right/bd_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/bd_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/bd_double_arrow.svg \ No newline at end of file diff --git a/svg/original-right/bottom_left_corner.svg b/svg/original-right/bottom_left_corner.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/bottom_left_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_left_corner.svg \ No newline at end of file diff --git a/svg/original-right/bottom_right_corner.svg b/svg/original-right/bottom_right_corner.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/bottom_right_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_right_corner.svg \ No newline at end of file diff --git a/svg/original-right/bottom_side.svg b/svg/original-right/bottom_side.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/bottom_side.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_side.svg \ No newline at end of file diff --git a/svg/original-right/bottom_tee.svg b/svg/original-right/bottom_tee.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/bottom_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/bottom_tee.svg \ No newline at end of file diff --git a/svg/original-right/center_ptr.svg b/svg/original-right/center_ptr.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/center_ptr.svg @@ -0,0 +1,1 @@ +../groups/original-right/center_ptr.svg \ No newline at end of file diff --git a/svg/original-right/circle.svg b/svg/original-right/circle.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/circle.svg @@ -0,0 +1,1 @@ +../groups/original-right/circle.svg \ No newline at end of file diff --git a/svg/original-right/context-menu.svg b/svg/original-right/context-menu.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/context-menu.svg @@ -0,0 +1,1 @@ +../groups/original-right/context-menu.svg \ No newline at end of file diff --git a/svg/original-right/copy.svg b/svg/original-right/copy.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/copy.svg @@ -0,0 +1,1 @@ +../groups/original-right/copy.svg \ No newline at end of file diff --git a/svg/original-right/cross.svg b/svg/original-right/cross.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/cross.svg @@ -0,0 +1,1 @@ +../groups/shared/cross.svg \ No newline at end of file diff --git a/svg/original-right/crossed_circle.svg b/svg/original-right/crossed_circle.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/crossed_circle.svg @@ -0,0 +1,1 @@ +../groups/shared/crossed_circle.svg \ No newline at end of file diff --git a/svg/original-right/crosshair.svg b/svg/original-right/crosshair.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/crosshair.svg @@ -0,0 +1,1 @@ +../groups/shared/crosshair.svg \ No newline at end of file diff --git a/svg/original-right/dnd-ask.svg b/svg/original-right/dnd-ask.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/dnd-ask.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd-ask.svg \ No newline at end of file diff --git a/svg/original-right/dnd-copy.svg b/svg/original-right/dnd-copy.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/dnd-copy.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd-copy.svg \ No newline at end of file diff --git a/svg/original-right/dnd-link.svg b/svg/original-right/dnd-link.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/dnd-link.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd-link.svg \ No newline at end of file diff --git a/svg/original-right/dnd_no_drop.svg b/svg/original-right/dnd_no_drop.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/dnd_no_drop.svg @@ -0,0 +1,1 @@ +../groups/hand-right/dnd_no_drop.svg \ No newline at end of file diff --git a/svg/original-right/dotbox.svg b/svg/original-right/dotbox.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/dotbox.svg @@ -0,0 +1,1 @@ +../groups/shared/dotbox.svg \ No newline at end of file diff --git a/svg/original-right/fd_double_arrow.svg b/svg/original-right/fd_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/fd_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/fd_double_arrow.svg \ No newline at end of file diff --git a/svg/original-right/grabbing.svg b/svg/original-right/grabbing.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/grabbing.svg @@ -0,0 +1,1 @@ +../groups/hand-right/grabbing.svg \ No newline at end of file diff --git a/svg/original-right/hand1.svg b/svg/original-right/hand1.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/hand1.svg @@ -0,0 +1,1 @@ +../groups/hand-right/hand1.svg \ No newline at end of file diff --git a/svg/original-right/hand2.svg b/svg/original-right/hand2.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/hand2.svg @@ -0,0 +1,1 @@ +../groups/hand-right/hand2.svg \ No newline at end of file diff --git a/svg/original-right/left_ptr.svg b/svg/original-right/left_ptr.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/left_ptr.svg @@ -0,0 +1,1 @@ +../groups/original-right/left_ptr.svg \ No newline at end of file diff --git a/svg/original-right/left_ptr_watch b/svg/original-right/left_ptr_watch new file mode 100644 --- /dev/null +++ b/svg/original-right/left_ptr_watch @@ -0,0 +1,1 @@ +../groups/original-right/left_ptr_watch \ No newline at end of file diff --git a/svg/original-right/left_side.svg b/svg/original-right/left_side.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/left_side.svg @@ -0,0 +1,1 @@ +../groups/shared/left_side.svg \ No newline at end of file diff --git a/svg/original-right/left_tee.svg b/svg/original-right/left_tee.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/left_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/left_tee.svg \ No newline at end of file diff --git a/svg/original-right/link.svg b/svg/original-right/link.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/link.svg @@ -0,0 +1,1 @@ +../groups/original-right/link.svg \ No newline at end of file diff --git a/svg/original-right/ll_angle.svg b/svg/original-right/ll_angle.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/ll_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/ll_angle.svg \ No newline at end of file diff --git a/svg/original-right/lr_angle.svg b/svg/original-right/lr_angle.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/lr_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/lr_angle.svg \ No newline at end of file diff --git a/svg/original-right/move.svg b/svg/original-right/move.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/move.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/move.svg \ No newline at end of file diff --git a/svg/original-right/pencil.svg b/svg/original-right/pencil.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/pencil.svg @@ -0,0 +1,1 @@ +../groups/shared/pencil.svg \ No newline at end of file diff --git a/svg/original-right/person.svg b/svg/original-right/person.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/person.svg @@ -0,0 +1,1 @@ +../groups/original-right/person.svg \ No newline at end of file diff --git a/svg/original-right/pin.svg b/svg/original-right/pin.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/pin.svg @@ -0,0 +1,1 @@ +../groups/original-right/pin.svg \ No newline at end of file diff --git a/svg/original-right/plus.svg b/svg/original-right/plus.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/plus.svg @@ -0,0 +1,1 @@ +../groups/shared/plus.svg \ No newline at end of file diff --git a/svg/original-right/pointer-move.svg b/svg/original-right/pointer-move.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/pointer-move.svg @@ -0,0 +1,1 @@ +../groups/original-right/pointer-move.svg \ No newline at end of file diff --git a/svg/original-right/question_arrow.svg b/svg/original-right/question_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/question_arrow.svg @@ -0,0 +1,1 @@ +../groups/shared/question_arrow.svg \ No newline at end of file diff --git a/svg/original-right/right_ptr.svg b/svg/original-right/right_ptr.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/right_ptr.svg @@ -0,0 +1,1 @@ +../groups/original-right/right_ptr.svg \ No newline at end of file diff --git a/svg/original-right/right_side.svg b/svg/original-right/right_side.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/right_side.svg @@ -0,0 +1,1 @@ +../groups/shared/right_side.svg \ No newline at end of file diff --git a/svg/original-right/right_tee.svg b/svg/original-right/right_tee.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/right_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/right_tee.svg \ No newline at end of file diff --git a/svg/original-right/sb_down_arrow.svg b/svg/original-right/sb_down_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/sb_down_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/sb_down_arrow.svg \ No newline at end of file diff --git a/svg/original-right/sb_h_double_arrow.svg b/svg/original-right/sb_h_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/sb_h_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/sb_h_double_arrow.svg \ No newline at end of file diff --git a/svg/original-right/sb_left_arrow.svg b/svg/original-right/sb_left_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/sb_left_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/sb_left_arrow.svg \ No newline at end of file diff --git a/svg/original-right/sb_right_arrow.svg b/svg/original-right/sb_right_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/sb_right_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/sb_right_arrow.svg \ No newline at end of file diff --git a/svg/original-right/sb_up_arrow.svg b/svg/original-right/sb_up_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/sb_up_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/sb_up_arrow.svg \ No newline at end of file diff --git a/svg/original-right/sb_v_double_arrow.svg b/svg/original-right/sb_v_double_arrow.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/sb_v_double_arrow.svg @@ -0,0 +1,1 @@ +../groups/original-arrow/sb_v_double_arrow.svg \ No newline at end of file diff --git a/svg/original-right/tcross.svg b/svg/original-right/tcross.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/tcross.svg @@ -0,0 +1,1 @@ +../groups/shared/tcross.svg \ No newline at end of file diff --git a/svg/original-right/top_left_corner.svg b/svg/original-right/top_left_corner.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/top_left_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/top_left_corner.svg \ No newline at end of file diff --git a/svg/original-right/top_right_corner.svg b/svg/original-right/top_right_corner.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/top_right_corner.svg @@ -0,0 +1,1 @@ +../groups/shared/top_right_corner.svg \ No newline at end of file diff --git a/svg/original-right/top_side.svg b/svg/original-right/top_side.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/top_side.svg @@ -0,0 +1,1 @@ +../groups/shared/top_side.svg \ No newline at end of file diff --git a/svg/original-right/top_tee.svg b/svg/original-right/top_tee.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/top_tee.svg @@ -0,0 +1,1 @@ +../groups/shared/top_tee.svg \ No newline at end of file diff --git a/svg/original-right/ul_angle.svg b/svg/original-right/ul_angle.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/ul_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/ul_angle.svg \ No newline at end of file diff --git a/svg/original-right/ur_angle.svg b/svg/original-right/ur_angle.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/ur_angle.svg @@ -0,0 +1,1 @@ +../groups/shared/ur_angle.svg \ No newline at end of file diff --git a/svg/original-right/vertical-text.svg b/svg/original-right/vertical-text.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/vertical-text.svg @@ -0,0 +1,1 @@ +../groups/shared/vertical-text.svg \ No newline at end of file diff --git a/svg/original-right/wait b/svg/original-right/wait new file mode 100644 --- /dev/null +++ b/svg/original-right/wait @@ -0,0 +1,1 @@ +../groups/shared/wait \ No newline at end of file diff --git a/svg/original-right/wayland-cursor.svg b/svg/original-right/wayland-cursor.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/wayland-cursor.svg @@ -0,0 +1,1 @@ +../groups/shared/wayland-cursor.svg \ No newline at end of file diff --git a/svg/original-right/xterm.svg b/svg/original-right/xterm.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/xterm.svg @@ -0,0 +1,1 @@ +../groups/shared/xterm.svg \ No newline at end of file diff --git a/svg/original-right/zoom-in.svg b/svg/original-right/zoom-in.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/zoom-in.svg @@ -0,0 +1,1 @@ +../groups/shared/zoom-in.svg \ No newline at end of file diff --git a/svg/original-right/zoom-out.svg b/svg/original-right/zoom-out.svg new file mode 100644 --- /dev/null +++ b/svg/original-right/zoom-out.svg @@ -0,0 +1,1 @@ +../groups/shared/zoom-out.svg \ No newline at end of file