- HTML 87.7%
- Python 8.9%
- JavaScript 3.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| fonts | ||
| images | ||
| .gitignore | ||
| app.js | ||
| generate.py | ||
| index.html | ||
| install.py | ||
| LICENSE | ||
| README.md | ||
| styles.css | ||
| template.html | ||
Hellwal website
A static showcase for Hellwal, a wallpaper color palette generator. Pick a wallpaper, compare Classic and Comfort modes, and preview terminal, editor, launcher, Sway, and Hyprland colors.
The site is static: one HTML file contains its CSS, fonts, compact palette data, and a small vanilla JavaScript controller. All 1,008 palettes are precomputed; switching modes needs no server or API call. The whole page follows the selected palette.
Images live in images/ and load from the GitHub mirror, never as embedded wallpaper data. A normal initial viewport needs two requests: the HTML and the selected AVIF wallpaper. Scrolling to the gallery loads one shared thumbnail sheet; selecting another wallpaper loads that image. A viewport already showing the gallery needs three requests. Refresh chooses a random wallpaper and preview.
Preview locally
Requires Python 3:
python3 -m http.server 8080 --bind 127.0.0.1
Open http://127.0.0.1:8080. You can also open index.html directly.
Generate from wallpapers
Requires a compiled Hellwal binary with Comfort mode support and Pillow with AVIF support. By default, the generator uses ../hellwal/hellwal and ../hellwal/wallpaper_samples/.
python3 -m venv .venv
.venv/bin/pip install Pillow
.venv/bin/python generate.py
To use another wallpaper folder or binary:
.venv/bin/python generate.py /path/to/wallpapers --hellwal /path/to/hellwal
The generator creates AVIF wallpapers, one gallery sheet, and 24 palette combinations per wallpaper, then builds the self-contained index.html. Use --output /path/to/site for a separate output folder. Edit template.html for page content, styles.css for styling, and app.js for interactions.
Mirror the generated images/ directory to the main branch of danihek/hellwal_website on GitHub before publishing the new HTML. Image URLs include a content hash so rebuilt assets refresh browser caches. The default image base is:
https://raw.githubusercontent.com/danihek/hellwal_website/main/images/
For an offline/local build, or another image host:
.venv/bin/python generate.py --image-base ./images
.venv/bin/python generate.py --image-base https://example.com/images
JavaScript enables palette switching, randomization, JSON downloads, and copy buttons. The site uses modern browser features including AVIF, CSS :has() and color-mix().
Install the service
Requires Linux with systemd and Python 3 at /usr/bin/python3:
sudo ./install.py
sudo systemctl start hellwal-website
Press Enter to accept port 8080 and domain hellwal.danihek.xyz, or enter your own values. Ports must be between 1024 and 65535; occupied ports are rejected.
For a noninteractive installation:
sudo ./install.py --port 8091 --domain hellwal.danihek.xyz --yes
Use ./install.py --dry-run --yes to preview the installation configuration.
The installer copies the HTML and font licenses to /srv/hellwal-website/ and creates hellwal-website.service. The HTTP service listens only on 127.0.0.1. Installation does not start the service or enable it at boot.
Connect Nginx
The installer saves a proxy example to /etc/hellwal-website/nginx.conf. Merge it into your Nginx configuration; if the domain already has an HTTPS server block, copy the example's location block into it. Keep its gzip settings: they compress the HTML, including fonts and palette data, into one response. The Python preview server alone serves uncompressed HTML.
Point the domain's DNS records to your server and configure HTTPS in Nginx as needed. The installer does not modify Nginx, DNS, or certificates.
After editing Nginx, validate the configuration before reloading:
sudo nginx -t && sudo systemctl reload nginx
Manage the service
sudo systemctl start hellwal-website
sudo systemctl stop hellwal-website
sudo systemctl restart hellwal-website
systemctl status hellwal-website
sudo systemctl enable hellwal-website # Start at boot
journalctl -u hellwal-website -f # Follow logs
After regenerating the website, stop the service, rerun the installer with your port and domain, then start it again to publish the updated files.