{"id":37598734,"url":"https://github.com/whoop-t/nice-shield-base","last_synced_at":"2026-01-16T22:58:30.820Z","repository":{"id":281269785,"uuid":"944758699","full_name":"whoop-t/nice-shield-base","owner":"whoop-t","description":"A base repo to use for your ZMK nice!view shield customization","archived":false,"fork":false,"pushed_at":"2025-04-02T03:10:32.000Z","size":72,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T04:21:26.755Z","etag":null,"topics":["zmk","zmk-module","zmk-shield"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/whoop-t.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-07T23:06:40.000Z","updated_at":"2025-04-02T03:10:36.000Z","dependencies_parsed_at":"2025-04-02T04:20:32.982Z","dependency_job_id":"f5ccbc55-a481-4337-a032-dbf70232ad6a","html_url":"https://github.com/whoop-t/nice-shield-base","commit_stats":null,"previous_names":["whoop-t/nice-shield-base"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/whoop-t/nice-shield-base","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoop-t%2Fnice-shield-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoop-t%2Fnice-shield-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoop-t%2Fnice-shield-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoop-t%2Fnice-shield-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whoop-t","download_url":"https://codeload.github.com/whoop-t/nice-shield-base/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoop-t%2Fnice-shield-base/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28487013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T22:54:02.790Z","status":"ssl_error","status_checked_at":"2026-01-16T22:50:10.344Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["zmk","zmk-module","zmk-shield"],"created_at":"2026-01-16T10:00:29.478Z","updated_at":"2026-01-16T22:58:30.801Z","avatar_url":"https://github.com/whoop-t.png","language":"C","readme":"# nice-shield-base\n\nThis is a base repo to help anyone get started creating their own images/animations for their nice!view. This guides focus is just changing the main image and leaving extras like bluetooth, battery, etc alone. Of course all these are changeable, but getting the repo set up and changing the main image is a good first step in customizing it more.\n\n\u003e [!IMPORTANT]\n\u003e This repo is only for nice!views and zmk with zephyr modules. This will NOT work for OLED/qmk setups.\n\u003e Since this is a zephyr module, the shield repo is hosted on github and can be used by anyone.\n\u003e\n\u003e If you would like OLED/qmk examples, check out my collection of OLED displays for qmk [HERE](https://github.com/whoop-t/qmk-oled-collection)\n\n\u003e [!NOTE]\n\u003e When you have created your own display, consider adding it to [this collection](https://github.com/whoop-t/nice-shield-collection) I started for nice!view displays!\n\n## Create locally within your own zmk config\nIf you would like, you can add/create shields directly to your zmk config rather than host on github. I prefer hosting so that you can share more easily with others.\n\nThat said, all you need to do is copy the directory `board/shields/nice_shield_base` from this repo directly into you zmk config directory `board/shields`\n\nYou can skip the steps of cloning the repo and just alter the newly copied files in you zmk config instead of hosting and pushing to github.\n\n## Prerequisite\n1. Have [git](https://git-scm.com/) installed\n2. Have a Github account\n3. A board with nice!views\n4. ZMK setup and you are able to flash your board \n\n## Clone the repo\n\n\u003e [!NOTE]\n\u003e A convention I like to do is to name the repo/module starting with `nice` to signify that this is a nice!view module.\n\u003e e.g if I was creating displays with star art, I'd name it something like `nice-star-display` or something similar.\n\n### Clone the repo(RECOMMENDED)\n```\ngit clone git@github.com:whoop-t/nice-shield-base.git your-repo-name\n```\nThe above will clone the base repo into a folder of your choice. This should match the repo name you are going to create on github\n\n2. Create new repo on github\n\nOn you github, create a new repo with the same name as your folder you cloned too\n\n3. Set your locally cloned repo remote to the new repo you created on github\n\nYou need to attach your local clone to the remote repo, do this by running the command below\n\u003e [!NOTE]\n\u003e You can get the url by using the Code button on your repo on github \n```\ngit remote set-url origin git@github.com:YOUR-USER/your-repo-name.git\n```\n\nYou can verify that it is pointing to the remote repo with `git remote -v`\n\n4. Push the local files up to the remote repo\n```\ngit push\n```\nNow you should see all the base files in your repo on github\n\n## Renaming\n\nAfter you have the code, you will need to rename some items to make sure it gets picked up as a module when it is used\n\n1. Rename ids/variables in the code\n\nIn `Kconfig.shield`, update `nice_shield_base` to your shield\nThis will be your repo name but with underscores\n\n\u003e [!IMPORTANT]\n\u003e Do NOT update `SHIELD_NICE_VIEW_SHIELD_BASE`, only `nice_shield_base` in the parenthesis\n```\nconfig SHIELD_NICE_VIEW_SHIELD_BASE\n    def_bool $(shields_list_contains,nice_shield_base)\n```\n\n\u003e [!IMPORTANT]\n\u003e `id:` should be hyphen case, eg if you repo is `your-repo`, make sure you use hyphens for the id\n\nIn `shields/nice_shield_base/nice_shield_base.zmk.yml` rename these to your repo name:\n```yaml\nid: nice-shield-base\nname: nice!view_shield_base\n```\n\nIn `zephyr/module.yml` rename this to your repo name:\n```yaml\nname: \"zmk-shield-nice!view-your-repo\"\n```\n\u003e [!NOTE]\n\u003e I dont think this one matters, but I like to update it\n\n2. Rename files\n\u003e [!IMPORTANT]\n\u003e Files should be underscore\n\n- Rename `shields/nice_shield_base` to your repo name\n- Rename `shields/nice_shield_base/nice_shield_base.conf` to your repo name\n- Rename `shields/nice_shield_base/nice_shield_base.overlay` to your repo name\n- Rename `shields/nice_shield_base/nice_shield_base.zmk.yml` to your repo name\n\n## Test your repo!!!\n\nAfter all the renaming and hooking up to your repo, test everything is working correctly by adding your new repo to your ZMK config.\n\nThe repo already has a base image that can be flashed and tested before adding your own art to make sure the steps were followed correctly.\n\n### Add your new module to your ZMK config\n\nAdd your remote repo to `west.yaml`\n```yaml\nmanifest:\n  remotes:\n    - name: zmkfirmware\n      url-base: https://github.com/zmkfirmware\n    - name: your-github-user #new entry\n      url-base: https://github.com/your-github-user #new entry\n  projects:\n    - name: zmk\n      remote: zmkfirmware\n      revision: main\n      import: app/west.yml\n    - name: your-repo-name #new entry\n      remote: your-github-user #new entry\n      revision: main #new entry\n  self:\n    path: config\n```\n\nAdd your module to `build.yaml`(this is for corne, but change for your keyboard if needed)\n```yaml\ninclude:\n  - board: nice_nano_v2\n    shield: corne_left nice_view_adapter your_repo_name #update entry\n  - board: nice_nano_v2\n    shield: corne_right nice_view_adapter your_repo_name #update entry\n```\n\nAlso make sure to enable the custom status screen in your ZMK configuration, this would be your keyboards .conf file in the config directory:\n\n```\nCONFIG_ZMK_DISPLAY=y\nCONFIG_ZMK_DISPLAY_STATUS_SCREEN_CUSTOM=y\n```\n\nNow flash your board and you should see the base image from this repo. If there is an issue, go back and walkthrough the steps again and make sure you did everything correctly.\n\n## Create 1-bit art\n\u003e [!IMPORTANT]\n\u003e ART MUST BE 80x69\n\u003e\n\u003e You can alter this in the code where you define your image so you can technically change this and make your art a different size, but this is the size I have found to be the best while keeping other information like battery etc\n\n\u003e [!IMPORTANT]\n\u003e WIP\n\u003e TODO Add guide to create the pixel art\n\n\u003e [!IMPORTANT]\n\u003e WIP\n\u003e TODO Add guide to animations and set in repo\n\n## Add images\n\n\u003e [!NOTE]\n\u003e If you want animations, you can skip to the animation section\n\n\u003e [!NOTE]\n\u003e This section also assumes you already have an image created from the previous step\n\n### Rotate your image\n\nThis is a horizontal display so you need to rotate the image 90 degrees to the right\n\nI just use [iloveimg](https://www.iloveimg.com/rotate-image), but feel free to use anything. Just make sure you are rotating it 90 degrees to the right\n\n### Image to code conversion\n\nTake your 1-bit art that you created or found and upload it to\n[image2cpp](https://javl.github.io/image2cpp/)\n\nThe only option you need to change is `Code output format`, make sure its set to `Plain bytes`\n\nThen click `Generate Code`\nYou will see the code, copy everything in the textfield\n\n## Paste to code in repo\n\nDepending on the image you are setting, you will need to update one of the following files:\n1. `assests/left_image.c` (for your left half)\n2. `assests/right_image.c` (for your right half)\n\nYou should see bytes already there, as well as a comments in the code above and below the bytes.\n\nReplace the bytes with your bytes from the conversion\n```c\n  // REPLACE THESE BYTES\n  ...\n  ...\n  // END\n```\n\nSave the file\n\nThats it! Repeat for your other side if needed\n\n## Push the code to you github remote repo\n\nOnce you have done all the changes you want, push the code to your remote github repo\n```\ngit add .\ngit commit -m \"Your commit message\"\ngit push\n```\n\nThen you just need to adjust your ZMK config to use the module like in the above step(if you havent done so already) and flash your board!\n\n## Issues\n\nIf you have issues, raise an issue on github and I will try to help out when I have time. This will also help me tweak the guide with anything I may have missed.\n","funding_links":[],"categories":["Community Documentation"],"sub_categories":["Split Wired"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhoop-t%2Fnice-shield-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhoop-t%2Fnice-shield-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhoop-t%2Fnice-shield-base/lists"}