{"id":23270062,"url":"https://github.com/sideeffects/wallpaper","last_synced_at":"2025-07-21T04:33:51.655Z","repository":{"id":145443029,"uuid":"160696682","full_name":"sideeffects/wallpaper","owner":"sideeffects","description":"A Houdini network pattern generator","archived":false,"fork":false,"pushed_at":"2020-05-04T11:18:30.000Z","size":1191,"stargazers_count":16,"open_issues_count":1,"forks_count":3,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-08T02:43:19.900Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sideeffects.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":"2018-12-06T15:47:49.000Z","updated_at":"2025-02-25T15:00:29.000Z","dependencies_parsed_at":"2023-04-14T04:08:17.191Z","dependency_job_id":null,"html_url":"https://github.com/sideeffects/wallpaper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sideeffects/wallpaper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideeffects%2Fwallpaper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideeffects%2Fwallpaper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideeffects%2Fwallpaper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideeffects%2Fwallpaper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sideeffects","download_url":"https://codeload.github.com/sideeffects/wallpaper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideeffects%2Fwallpaper/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266241015,"owners_count":23898063,"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","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":[],"created_at":"2024-12-19T18:38:07.581Z","updated_at":"2025-07-21T04:33:51.648Z","avatar_url":"https://github.com/sideeffects.png","language":"Python","readme":"# Houdini wallpaper pattern generator\n\nThis Python script generates patterns (SVG or bitmaps) based on the look of Houdini node networks. The patterns might be useful as desktop wallpaper or wrapping paper for gifts for the Houdini nerd in your life.\n\n![Example wallpaper image](examples/default.png)\n\n\n## Usage\n\n    python wallpaper.py [options] outfile\n   \nIf ``outfile`` ends with ``.svg``, the script will output an SVG vector image.\n\nIf ``outfile`` ends with  ``.png`` or ``.jpg``, the script will try to use Qt's SVG libraries to render the image. If you have Houdini, you can start a Houdini shell and run the script using ``hython`` to ensure Qt is available. Otherwise, you will need to install either PySide2 or PyQt5.\n\n## Examples\n\n``fun.cfg``\n\n![fun wallpaper image](examples/fun.png)\n\n``desert.cfg``\n\n![desert wallpaper image](examples/desert.png)\n\n``lowkey.cfg``\n\n![lowkey wallpaper image](examples/lowkey.png)\n\n``wonder.cfg``\n\n![wonder wallpaper image](examples/wonder.png)\n\n``party.cfg``\n\n![party wallpaper image](examples/party.png)\n\n``xmas.cfg``\n\n![xmas wallpaper image](examples/xmas.png)\n\n\n## Options\n\n``--width=1920`` (or ``-W``)\n\nThe width of the output image (in pixels).\n\n``--height=1080`` (or ``-H``)\n\nThe height of the output image (in pixels).\n\n``--scale=0.8`` (or ``-s``)\n\nA scaling factor for the vector art. Use this to make the pattern bigger or smaller.\n\n``--rotate=-7.0`` (or ``-r``)\n\nRotation of the pattern (in degrees). Negative numbers rotate counter-clockwise.\n\n``--slop=5``\n\nInstead of doing actual math to know how many extra rows/columns to generate to fill empty space in the image when the pattern is rotated, the script simply adds this many. If you scale the pattern down and/or rotate close to diagonal, it's possible the default won't be enough, in which case you can increase this.\n\n``--background=ffffff``\n\nThe background color, as hex or a named HTML color. (You can use ``transparent`` to leave the background transparent if the image format supports transparency.)\n\n``--shape=cycle``\n\nThe name of a specific node shape to use, or ``cycle`` (cycle though the available shapes), or ``random`` (randomly choose each shape).\n\nThe available shapes are: ``cigar, ensign, arc, camera, slash, diamond, tab, bone, chevron, pointy, oval, null, trap, tilt, peanut, cloud, rect, flag, light, or burst``.\n\n``--scheme=raymond``\n\nThe name of a color scheme, or a string of comma-separated hex colors, for use when colors are cycled or random.\n\nFor example\n\n    python wallpaper.py --scheme=blues test.png\n    \n    python wallpaper.py --scheme=E37B40,46B29D,DE5B49,324D5C,F0CA4D test.png\n\nThe preset schemes are ``cool, pastel, sunrise, blues, raymond, desert, sports, garden, lowkey, wonder, or xmas``.\n\nInstead of a fixed color scheme, you can specify the scheme as ``random`` to choose hues at random as needed. Use the ``--saturation`` and ``--lightness`` options to specify the saturation and lightness of the random colors. \n\n``--nodestroke=none``\n\nThe color to use to draw node outlines (as hex), or ``cycle`` to cycle through the color scheme colors, or ``random`` to randomly choose a color scheme color, or ``none`` to not draw node outlines.\n\n``--nodefill=cycle``\n\nThe color to use to fill node shapes (as hex), or ``cycle`` to cycle through the color scheme colors, or ``random`` to randomly choose a color scheme color, or ``none`` to not fill nodes.\n\n``--wirestroke=cccccc``\n\nThe color to use to draw \"wires\" (as hex), or ``cycle`` to cycle through the color scheme colors, or ``random`` to randomly choose a color scheme color, or ``none`` to not draw wires.\n\n``--wirestyle=bezier``\n\nHow to draw the \"wires\" connecting the nodes: ``bezier`` or ``straight``.\n\n``--connstroke=cccccc``\n\nThe color to use to draw connector outlines (as hex), or ``cycle`` to cycle through the color scheme colors, or ``random`` to randomly choose a color scheme color, or ``none`` to not draw connector outlines.\n\n``--connfill=background``\n\nThe color to use to fill connectors (as hex), or ``cycle`` to cycle through the color scheme colors, or ``random`` to randomly choose a color scheme color, or ``background`` to use the background color.\n\n``--strokewidth=2.0``\n\nThe width (in pixels) to draw node outlines. If you don't specify ``--wirewidth``, this is also used as the width to draw \"wires\".\n\n``--wirewidth=\u003cfloat\u003e``\n\nThe width (in pixels) to draw \"wires\". If you don't specify this, the script uses the value of ``--strokewidth``.\n\n``--saturation=1.0``, ``--lightness=0.5``\n\nIf you use ``--scheme=random``, instead of picking colors from a fixed set of colors, the script generates random hues as needed. These options let you set the saturation and lightness (as in the HSL color model) for the random hues.\n\n\n### Configuration files\n\nOn the command line, when specifying options, you can reference a text file containing options by prefixing the config file path with `@`.\n\nFor example, if you have a file ``examples/party.cfg`` containing:\n\n    --background=F6EAEA\n    --nodestroke=random\n    --nodefill=none\n    --shape=cycle\n    --connstroke=random\n    --connfill=background\n    --wirestroke=random\n    --rotate=-22\n    --scheme=random\n    --saturation=0.7\n    --seed=9001\n\n...you can use those options like this:\n\n    python wallpaper.py -W800 -H600 @examples/party.cfg examples/party.png\n    \nThe option parser as if the options in the file were passed at the point where you referenced the file, so you can override them on the command line with later options. For example:\n\n    python wallpaper.py -W800 -H600 @examples/xmas.cfg --shape=burst examples/xmas2.png\n\n__Warning__: this feature comes from the ``argparse`` library and it can be a bit tetchy. For example, do not add more than one blank line at the end of the config file. If the option parser complains about unrecognized options when you use a config file, check for extra whitespace in the file.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsideeffects%2Fwallpaper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsideeffects%2Fwallpaper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsideeffects%2Fwallpaper/lists"}