{"id":37652938,"url":"https://github.com/strobejb/loxicon","last_synced_at":"2026-01-16T11:36:39.402Z","repository":{"id":279872030,"uuid":"931806298","full_name":"strobejb/loxicon","owner":"strobejb","description":"Loxone Icon Library tool","archived":false,"fork":false,"pushed_at":"2025-05-09T14:20:39.000Z","size":161,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-09T15:36:55.133Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/strobejb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-02-12T22:11:56.000Z","updated_at":"2025-05-09T14:20:43.000Z","dependencies_parsed_at":"2025-02-28T07:44:49.017Z","dependency_job_id":null,"html_url":"https://github.com/strobejb/loxicon","commit_stats":null,"previous_names":["strobejb/loxicon"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/strobejb/loxicon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strobejb%2Floxicon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strobejb%2Floxicon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strobejb%2Floxicon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strobejb%2Floxicon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/strobejb","download_url":"https://codeload.github.com/strobejb/loxicon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strobejb%2Floxicon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: 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":[],"created_at":"2026-01-16T11:36:39.251Z","updated_at":"2026-01-16T11:36:39.396Z","avatar_url":"https://github.com/strobejb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Loxicon\n\nLoxicon is a Python script that can be used to update the Loxone icon library with custom SVG images.\n\nSince version 13, Loxone stores its SVG icons in a file called `IconLibrary.zip` which is found in the following location:\n\n`C:\\ProgramData\\Loxone\\Loxone Config \u003clatest\u003e\\IconLibrary.zip`\n\nIt is quite cumbersome to update the Icon Library with custom icons, because multiple XML language files also need to be updated at the same time to describe each icon that is added. Loxicon makes it a simple task to update the icon library with a single command.\n\n### Updates to Loxone Config\n\nEvery time Loxone Config is updated to a new version, will require that the `IconLibrary.zip` is also updated with any custom images. LoxIcon is incredibly useful in this scenario because it simply needs to be re-run to restore the custom icons.\n\n\n## Requirements\n\nLoxicon requires Python 3.x, and is tested with 3.13 on Windows 11. There are just a couple of python dependencies to install once Python is setup:\n\n`pip install -r requirements.txt`\n\n## Icon Setup\n\nPreparing your SVG icons requires saving them all together in a single directory. It is recommended to use a naming scheme that prefixes an _index_ and a dot at the start of each filename:\n\n* `1.bunny-rabbit.svg`\n* `2.xmas-tree.svg`\n\nThe index is used to generate the UUID for each icon, which the Miniserver uses to identify icons used in the App. If the index is not present as part of the filename, Loxicon will instead use a simple incrementing UUID image it encounters, which might result in the UUIDs changing when new custom images are introduced. \n\nTo ensure that each custom icon has a static UUID, the index should be prefixed to each filename. An example is shown below, with the resulting `IconLibrary.zip` that is generated when Loxicon is run:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/strobejb/loxicon/blob/assets/icons.png\" /\u003e\n\u003c/p\u003e\n\n### Icon Generation\n\nI found the following tool very useful in converting PNG to high-quality SVG images: \n\u003cbr\u003e\nhttps://convertio.co\n\nTo optimize the SVGs (removing any unecessary artifacts) to ensure they are compatible with the Miniserver, the following tools may also be useful:\n\nhttps://svgoptimizer.com/\n\u003cbr\u003e\nhttps://www.svgminify.com/\n\nYou can always explore the IconLibrary.zip (and the IconFilled directory inside the zip) to see what the default SVG images look like. Here are some examples:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/strobejb/loxicon/blob/assets/icons/1.bunny-rabbit.svg\" width=\"128px\"/\u003e \u003cimg src=\"https://github.com/strobejb/loxicon/blob/assets/icons/2.xmas-tree.svg\" width=\"128px\"/\u003e\n\u003c/p\u003e\n\n## Usage\n\n1. Ensure your SVG icons are present in the current directory\n2. Run the following command:\n\n   `python loxicon.py`\n\n    Loxicon will create a new copy of `IconLibrary.zip` containing all SVG icons that were present in the current directory where you ran the script. \n\n3. Copy `IconLibrary.zip` to the Loxone Config directory:\n\n    `%ProgramData%\\Loxone\\Loxone Config \u003clatest-version\u003e`\n\n4. Restart Loxone Config. The icons will be available to select through the configuration UI.\n5. FTP/upload the icon library to the Miniserver:\n\n   `/sys/IconLibrary.zip`\n\n6. Restart the Miniserver. The icons will only appear in the Loxone app when this last step is done.\n\n## Example\n\nOnce the icon library has been updated in Loxone Config, the icons are selectable through the user-interface as usual. The icons can then be assigned to a Room or Category, and the colours customized at the same time:\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://github.com/strobejb/loxicon/blob/assets/loxone-app.png\" width=\"48%\" hspace=\"5\"/\u003e\n\u003cimg src=\"https://github.com/strobejb/loxicon/blob/assets/icon-library.png\" width=\"48%\"  hspace=\"5\"/\u003e \n\u003c/p\u003e\n\n## Advanced usage\n\nOnce you are happy with what the tool does, a single command can update icon library belonging to Loxone Config, and will also upload (FTP) the result to the miniserver. The miniserver can also be rebooted automatically:\n\n`python loxicon.py --icons *.svg --overwrite --miniserver 192.168.1.25`\n\nFurther commands are listed in the program help:\n`python loxicon.py --help`\n\n### Options\n\n* `--icons \u003cspec\u003e` - path spec to the collection of SVG icons. i.e. `--icons *.svg`\n* `--library \u003cpath\u003e` - path to the IconLibrary.zip file to update. By default Loxicon will search for the latest version of the library in the Loxone Config directory, and will save a _new_ copy in the current directory so that the original is not overwritten.\n* `--tags \u003ctag tag..\u003e` - additional tag(s) to serve as search terms for each icon. By default a single tag `custom` will be applied. i.e.. `--tags custom one two`. These tags are how you will locate your custom icons in the UI.\n* `--languages \u003clang lang..\u003e` - specify which languages to target. By default English and German are used. i.e. `--languages ENG DEU`\n* `--force` - force updating the icon library even if the custom icons are already present.\n* `--overwrite` - overwrite the library specified by the `--library` option. This prevents the new copy from being created.\n* `--miniserver \u003caddress\u003e` - IP address of miniserver to update. Loxicon will prompt for your username and password.\n\n## Further Reading\n\nLots of information is available in the link below regarding how the icon library is structured:\nhttps://loxwiki.atlassian.net/wiki/spaces/LOX/pages/1914601495/Eigene+SVG+Symbole+in+Loxone+Config+v13+integrieren\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrobejb%2Floxicon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrobejb%2Floxicon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrobejb%2Floxicon/lists"}