{"id":30746855,"url":"https://github.com/coderj001/go-wallhaven","last_synced_at":"2025-09-04T04:30:16.334Z","repository":{"id":104411117,"uuid":"589256760","full_name":"coderj001/go-wallhaven","owner":"coderj001","description":"It's wallpaper manager for wallhaven, written in golang.","archived":false,"fork":false,"pushed_at":"2024-06-15T14:44:21.000Z","size":194,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-22T18:51:41.886Z","etag":null,"topics":["go","golang","goroutine","wallpaper"],"latest_commit_sha":null,"homepage":"","language":"Go","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/coderj001.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-15T15:42:11.000Z","updated_at":"2024-04-25T04:58:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"deb5a6fe-337b-4ae6-b460-d899bf685996","html_url":"https://github.com/coderj001/go-wallhaven","commit_stats":null,"previous_names":["coderj001/go-wallheven"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/coderj001/go-wallhaven","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderj001%2Fgo-wallhaven","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderj001%2Fgo-wallhaven/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderj001%2Fgo-wallhaven/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderj001%2Fgo-wallhaven/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coderj001","download_url":"https://codeload.github.com/coderj001/go-wallhaven/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderj001%2Fgo-wallhaven/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273550596,"owners_count":25125531,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["go","golang","goroutine","wallpaper"],"created_at":"2025-09-04T04:29:57.056Z","updated_at":"2025-09-04T04:30:16.323Z","avatar_url":"https://github.com/coderj001.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-wallhaven\n\n\u003cdiv align=\"center\"\u003e\n\n[![Build Status](https://img.shields.io/github/checks-status/coderj001/go-wallhaven/main?color=black\u0026style=for-the-badge\u0026logo=github)][github-actions]\n[![Code Coverage](https://img.shields.io/codecov/c/github/coderj001/go-wallhaven?color=blue\u0026logo=codecov\u0026style=for-the-badge)][github-actions-tests]\n[![Security: bandit](https://img.shields.io/badge/Security-GoSec-lightgrey?style=for-the-badge\u0026logo=springsecurity)](https://github.com/securego/gosec)\n[![Dependencies Status](https://img.shields.io/badge/Dependencies-Up%20to%20Date-brightgreen?style=for-the-badge\u0026logo=dependabot)][dependabot-pulls]\n[![Semantic Versioning](https://img.shields.io/badge/versioning-semantic-black?style=for-the-badge\u0026logo=semver)][github-releases]\n[![Pre-Commit Enabled](https://img.shields.io/badge/Pre--Commit-Enabled-blue?style=for-the-badge\u0026logo=pre-commit)][precommit-config]\n[![License](https://img.shields.io/github/license/coderj001/go-wallhaven?color=red\u0026style=for-the-badge)][project-license]\n[![Go v1.18](https://img.shields.io/badge/Go-%20v1.18-black?style=for-the-badge\u0026logo=go)][gomod-file]\n\n\u003c/div\u003e\n\n## Installation (Binary)\nDownload binary from [releases](https://github.com/coderj001/go-wallhaven/releases) or build with `go build .`.\nIf you have api key, it free and will suggest to create a free account, create a file `.go-wallhaven` at home dir\n```json\n{\n  \"API_KEY\" : \"\u003cAPI_KEY\u003e\",\n  \"DIR\" : \"\u003cDIRECTORY YOU WANTED TO BE SAVE\u003e\"\n}\n```\n\n\n## Initial Setup\n\nThis section is intended to help developers and contributors get a working copy of\n`go-wallhaven` on their end\n\n\u003cdetails\u003e\n\u003csummary\u003e\n    1. Clone this repository\n\u003c/summary\u003e\u003cbr\u003e\n\n```sh\ngit clone https://github.com/coderj001/go-wallhaven\ncd go-wallhaven\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\n    2. Install `golangci-lint`\n\u003c/summary\u003e\u003cbr\u003e\n\nInstall `golangci-lint` from the [official website][golangci-install] for your OS\n\u003c/details\u003e\n\u003cbr\u003e\n\n\n## Local Development\n\nThis section will guide you to setup a fully-functional local copy of `go-wallhaven`\non your end and teach you how to use it! Make sure you have installed\n[golangci-lint][golangci-install] before following this section!\n\n**Note:** This section relies on the usage of [Makefile][makefile-official]. If you\ncan't (or don't) use Makefile, you can follow along by running the internal commands\nfrom [`go-wallhaven's` Makefile][makefile-file] (most of which are\nOS-independent)!\n\n### Installing dependencies\n\nTo install all dependencies associated with `go-wallhaven`, run the\ncommand\n\n```sh\nmake install\n```\n\n\n\n### Using Code Formatters\n\nCode formatters format your code to match pre-decided conventions. To run automated code\nformatters, use the Makefile command\n\n```sh\nmake codestyle\n```\n\n### Using Code Linters\n\nLinters are tools that analyze source code for possible errors. This includes typos,\ncode formatting, syntax errors, calls to deprecated functions, potential security\nvulnerabilities, and more!\n\nTo run pre-configured linters, use the command\n\n```sh\nmake lint\n```\n\n### Running Tests\n\nTests in `go-wallhaven` are classified as *fast* and *slow* - depending\non how quick they are to execute.\n\nTo selectively run tests from either test group, use the Makefile command\n\n```sh\nmake fast-test\n\nOR\n\nmake slow-test\n```\n\nAlternatively, to run the complete test-suite -- i.e. *fast* and *slow* tests at one\ngo, use the command\n\n```sh\nmake test\n```\n\n### Running the Test-Suite\n\nThe *`test-suite`* is simply a wrapper to run linters, stylecheckers and **all** tests\nat once!\n\nTo run the test-suite, use the command\n\n```sh\nmake test-suite\n```\n\nIn simpler terms, running the test-suite is a combination of running [linters](#using-code-linters)\nand [all tests](#running-tests) one after the other!\n\u003cbr\u003e\n\n\n## Additional Resources\n\n### Makefile help\n\n\u003cdetails\u003e\n\u003csummary\u003e\n    Tap for a list of Makefile commands\n\u003c/summary\u003e\u003cbr\u003e\n\n|     Command    \t|                               Description                               \t| Prerequisites \t|\n|:--------------:\t|:-----------------------------------------------------------------------:\t|:-------------:\t|\n|     `help`     \t| Generate help dialog listing all Makefile commands with description     \t|       NA      \t|\n|    `install`   \t| Fetch project dependencies                                              \t|       NA      \t|\n|   `codestyle`  \t| Run code-formatters                                                     \t| golangci-lint \t|\n|     `lint`     \t| Check codestyle and run linters                                         \t| golangci-lint \t|\n|     `test`     \t| Run **all** tests                                                       \t|       NA      \t|\n|  `fast-tests`  \t| Selectively run *fast* tests                                            \t|       NA      \t|\n|  `slow-tests`  \t| Selectively run *slow* tests                                            \t|       NA      \t|\n|  `test-suite`  \t| Check codestyle, run linters and **all** tests                        \t| golangci-lint \t|\n|      `run`     \t| Run *go-wallhaven*                           \t|       NA      \t|\n|  `docker-gen`  \t| Create production docker image for *go-wallhaven* \t|     docker    \t|\n|  `docker-debug`  \t| Create debug-friendly docker image for *go-wallhaven* \t|     docker    \t|\n| `clean-docker` \t| Remove docker image generated by `docker-gen`                           \t|     docker    \t|\n\n\u003cbr\u003e\n\u003c/details\u003e\n\nOptionally, to see a list of all Makefile commands, and a short description of what they\ndo, you can simply run\n\n```sh\nmake\n```\n\nWhich is equivalent to;\n\n```sh\nmake help\n```\n\nBoth of which will list out all Makefile commands available, and a short description\nof what they do!\n\n### Generating Binaries\n\nTo generate binaries for multiple OS/architectures, simply run\n\n```sh\nbash build-script.sh\n```\n\nThe command will generate binaries for Linux, Windows and Mac targetting multiple\narchitectures at once! The binaries, once generated will be stored in the `bin`\ndirectory inside the project directory.\n\nThe binaries generated will be named in the format\n\n```text\ngo-wallhaven_\u003cversion\u003e_\u003ctarget-os\u003e_\u003carchitecture\u003e.\u003cextension\u003e\n```\n\nThe `\u003cextension\u003e` is optional. By default, `version` is an empty string. A custom\nversion can be passed as an argument while running the script. As an example;\n\n```sh\nbash build-script.sh v1.2.1\n```\n\nAn example of the files generated by the previous command will be;\n\n```sh\ngo-wallhaven_v1.2.1_windows_x86_64.exe\n```\n\n### Setting up Codecov\n\nFollow [Codecov Docs][codecov-docs] to activate Codecov for your project repository.\n\nOnce you've activated Codecov for your project, you should be able to see the\n`Repository Upload Token`. Copy this token, and add it as a secret to your Github\nrepository. Checkout [Creating secrets for a Repository][creating-secrets] for info\non how to add secrets on Github.\n\nFor the secret, the name of the secret should be \"`CODECOV_TOKEN`\" (no spaces,\ncopy-paste the string as it is). The value of the secret would be the\n`Repository Upload Token` obtained from Codecov.\n\nSave the secret, you should be able to a secret named `CODECOV_TOKEN` in the\n*Settings \u003e Secrets* section of your project repository. If this field is visible,\nyou are done with setting up Codecov, and should be able to see code coverage reports\nafter the next run of CI pipeline!\n\n### Using Docker\n\nTo run `go-wallhaven` in a docker container, read the instructions in\n[docker section](./docker).\n\n### Running `go-wallhaven`\n\nTo run go-wallhaven, use the command\n\n```sh\nmake run\n```\n\nAdditionally, you can pass any additional command-line arguments (if needed) as the\nargument \"`q`\". For example;\n\n```sh\nmake run q=\"--help\"\n\nOR\n\nmake run q=\"--version\"\n```\n\u003cbr\u003e\n\n\n## Releases\n\nYou can check out a list of previous releases on the [Github Releases][github-releases]\npage.\n\n### Semantic versioning with Release Drafter\n\n\u003cdetails\u003e\n    \u003csummary\u003e\n        What is Semantic Versioning?\n    \u003c/summary\u003e\u003cbr\u003e\n\nSemantic versioning is a versioning scheme aimed at making software management easier.\nFollowing semantic versioning, version identifiers are divided into three parts;\n\n```sh\n    \u003cmajor\u003e.\u003cminor\u003e.\u003cpatch\u003e\n```\n\n\u003e MAJOR version when you make incompatible API changes [breaking changes]\u003cbr\u003e\n\u003e MINOR version when you add functionality in a backwards compatible manner [more features]\u003cbr\u003e\n\u003e PATCH version when you make backwards compatible bug fixes [bug fixes and stuff]\u003cbr\u003e\n\nFor a more detailed description, head over to [semver.org][semver-link]\n\n\u003c/details\u003e\n\n[Release Drafter][release-drafter] automatically updates the release version as pull\nrequests are merged.\n\nLabels allowed;\n\n - `major`: Affects the `\u003cmajor\u003e` version number for semantic versioning\n - `minor`, `patch`: Affects the `\u003cpatch\u003e` version number for semantic versioning\n\nWhenever a pull request with one of these labels is merged to the `master` branch,\nthe corresponding version number will be bumped by one digit!\n\n### List of Labels\n\nPull requests once merged, will be classified into categories by\n[release-drafter][release-drafter] based on pull request labels\n\nThis is managed by the [`release-drafter.yml`][release-drafter-config] config file.\n\n|                        **Label**                        \t|      **Title in Releases**      \t|\n|:-------------------------------------------------------:\t|:-------------------------------:\t|\n|                        `security`                       \t|         :lock: Security         \t|\n|           `enhancement`, `feature`,  `update`           \t|         :rocket: Updates        \t|\n|                  `bug`, `bugfix`, `fix`                 \t|         :bug: Bug Fixes         \t|\n|                 `documentation`, `docs`                 \t|       :memo: Documentation      \t|\n| `wip`, `in-progress`, `incomplete`, `partial`, `hotfix` \t| :construction: Work in Progress \t|\n|               `dependencies`, `dependency`              \t|      :package: Dependencies     \t|\n|      `refactoring`, `refactor`, `tests`, `testing`      \t|  :test_tube: Tests and Refactor \t|\n|                `build`, `ci`, `pipeline`                \t|   :robot: CI/CD and Pipelines   \t|\n\nThe labels `bug`, `enhancement`, and `documentation` are automatically created by Github\nfor repositories. [Dependabot][dependabot-link] will implicitly create the\n`dependencies` label with the first pull request raised by it.\n\nThe remaining labels can be created as needed!\n\u003cbr\u003e\n\n## TODO:\n1. Limit the number of go worker should be user input\n2. Page input should be a range of pages (need to rewrite apifech function \u0026 others)\n3. Resolution shlould be fzf style multi-select (will try to apply on other fields)\n: \n: \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderj001%2Fgo-wallhaven","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderj001%2Fgo-wallhaven","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderj001%2Fgo-wallhaven/lists"}