User manual
A guide to the tool for designing and mass-generating picons - channel icons for Enigma2 receivers.
Table of contents
- About the program
- Startup and access protection
- Main window
- Presets
- Background and composition - column 1
- Text 1 / 2 / 3 and effects - column 2
- Preview, saving, border, watermark and logo - column 4
- Batch - mass generation - column 3
- Send to receiver (FTP)
- Picon Sort tab
- Missing-picon report and the Generator bridge
- Undo and live preview
- Example workflow
- Interface sections and program files
- Troubleshooting
1. About the program
HPL ink Picon Generator (Enigma2) v1.35 [14.07.2026] is a Windows tool that combines single-picon design and mass production for a whole channel list in one window:
- live picon design: background (colours, gradients, image file), up to three independent texts, border, decorations, logo and watermark,
- more than 130 text effects in 8 categories - shadows, 3D, neons and glows, outlines, gradients, patterns and special effects,
- 25 background / gradient types, including neon stages, Aurora, Bokeh, a retro-wave grid and carbon fibre,
- saving complete settings as presets with a thumbnail, plus export and import to a .json file,
- batch: load an Enigma2 channel list (.txt) and automatically generate a PNG picon for every channel - file names match the #SERVICE reference,
- uploading finished picons directly to the receiver over FTP,
- the Picon Sort tab - matching existing PNG files against a channel list, a missing-picon report and handing the missing entries over to the generator,
- a change history with an Undo button and the Ctrl+Z shortcut (up to 30 steps).
The interface uses a dark theme with an orange accent; results are generated as PNG files (the preview can also be saved as JPG).
Requirements
- Windows 10 or 11.
- When run from the
.pyfile: Python 3 with the Pillow (PIL) library. The EXE build ships with all dependencies. - The NumPy library is optional - when present, backgrounds and gradients render noticeably faster; without it the program automatically falls back to a slower compatibility mode.
- Local network access and the receiver's FTP account (port 21) if picons are to be uploaded to the box.
- Windows system fonts - the program builds its own catalogue of detected fonts (registry + font files).
2. Startup and access protection
First start
- Run the program (the
hpl_picon_generator.pyfile or the supplied executable). - The window opens centred, sized to fit the screen (up to 1860x760), with the Generator tab active.
- The program immediately renders a first preview with the default settings (the caption "HPL" + "HD").
MAC address protection
The program can be bound to specific computers. The distribution may be configured with a list of at most 5 MAC addresses. On startup the program reads the computer's network adapter addresses using three independent methods (psutil, getmac and the system identifier), so detection also works in a compiled EXE.
| MAC list configuration | Startup condition |
|---|---|
| List empty | Protection disabled - the program starts on any computer. |
| List filled | At least one of the computer's MAC addresses must be on the list. |
3. Main window
The following drawing is a privacy-safe UI diagram. It contains no IP address, password or other user data.
COLUMN 1 - BACKGROUND & PRESETS
Image size
Background & gradient
Background from file
Overlay (darkening)
Vignette & glow
Decoration (shape)
COLUMN 2 - TEXT
Caption, font, size
Category → Effect
Effect parameters
Zone offset
COLUMN 3 - BATCH + FTP
Load .txt list
Preset, output folder
Batch preview (12)
Generate batch
Send to receiver (FTP)
COLUMN 4 - PREVIEW
Undo | Generate preview
Save PNG | Save JPG
Border
Watermark
Image (logo)
- The header shows a coloured banner with the program name plus the version number and release date.
- The tabs switch between designing and generating (Generator) and organising existing files (Picon Sort).
- Columns 1-3 scroll vertically - the mouse wheel scrolls the column under the cursor; over list boxes (fonts, presets) the wheel scrolls the list itself.
- The status bar at the bottom shows the result of the last operation, batch progress and FTP messages.
4. Presets
The Presets section at the top of column 1 stores and restores the complete set of settings: size, background (including the background image path), texts 1-3 with effects, border, decoration, vignette, watermark and logo.
Working with presets
- Preset list - selecting a preset shows a generated thumbnail of it below the list. NEW in v1.35
- Load - restores the selected preset's settings (effect categories and parameter section visibility adjust automatically).
- Save preset - stores the current settings under the name from the Name field. Saving under an existing name overwrites that preset.
- Delete - removes the selected preset.
- Random style - randomises the background, gradient, colours and the Text 1 effect; a convenient starting point for quick prototyping.
- Export / Import - saves all presets to a chosen
.jsonfile and loads presets from a file (for duplicates the program asks before overwriting).
Built-in presets
| Preset | Description |
|---|---|
| CANAL+ 360 neon | A neon stage with a gradient letter outline - the CANAL+ 360 picon style. Also works in batch (the channel name replaces the "360" caption). |
| Codex Sol NEW in v1.35 | A composition on the "Neon studio - wet floor" background with the "Two-zone neon + reflection" effect, a neon bar at the top and a third text "CANAL+". |
hpl_picon_presets.json is written atomically (a temporary file first, then a swap). If the preset file turns out to be corrupted, the program creates a .bak copy instead of silently overwriting the data. The "saved" message appears only after the file has actually been written.5. Background and composition - column 1
Image size
There are 11 sizes to choose from: 100x60, 128x128, 220x132, 256x256, 320x180, 400x240 (default), 512x512, 600x360, 800x450, 1280x720 and 1920x1080 px.
Background and gradient
The background is built from up to three colours (Background colour #1 / #2 / #3) and a Gradient type - 25 variants:
- classic: solid background, horizontal, vertical and diagonal (\ and /) gradients, radial (centre / corner / ellipse), 3-colour multi-stop, diamond, conical, wave,
- textural: horizontal and vertical stripes, rays, checkerboard, marble, plasma, noise, spiral / vortex,
- scenic: Neon stage (3 colours), Neon studio - wet floor (3 colours) with fog, a horizon and reflections NEW in v1.35, Aurora (3 colours), Bokeh, Retro-wave grid, Carbon (carbon fibre).
Background from file
- Tick Enable background from file and click Load image (PNG/JPG).
- Adjust Background opacity (0-100%), Background zoom (0.1-5.0x) and Offset X / Y (±2000 px).
- Gradient opacity on background controls how strongly the colour gradient covers the image.
- The most convenient way to position the image is directly in the preview: dragging with the mouse moves the background, the mouse wheel changes the zoom.
- Remove background detaches the image from the project.
Overlay, vignette and glow
- Overlay (darkening) - colour + opacity 0-100%; a uniform layer over the whole background, e.g. to dim a photo under the text.
- Darken corners - a vignette that works on every background, including an image file.
- Brighten centre - a subtle glow in the middle of the picon.
Decoration (shape)
A decorative shape drawn on the background: Diagonal bar, Horizontal bar (bottom), Vertical bar (left), Circle (corner), Arc (bottom), Accent line (corner), Triangle (corner) and the Neon bar (top) with a two-colour outline and glow NEW in v1.35. Each shape has a colour, opacity, size and a Behind text option.
6. Text 1 / 2 / 3 and effects - column 2
Three independent texts
| Tab | Purpose |
|---|---|
| Text 1 (orange) | The picon's main caption (default "HPL"). Replaced with the channel name in batch. |
| Text 2 (green) | A suffix, "HD" by default. In batch it is set to "HD" whenever the channel name ends with HD. |
| Text 3 (blue) | A free position - centred on the whole image and moved with the Offset X/Y fields; empty by default. Ideal for a fixed caption such as a platform name. |
The Copy to Text 2 button copies the Text 1 settings (without the caption, size and font colour) - the fastest way to give both texts a consistent style.
Caption and font
- Caption - a multi-line field; Enter starts another caption line.
- Family - a list of fonts detected in the system with a filter box (the program shows the number of detected fonts). Bold/Italic use real font variants and fall back to synthetic slanting and thickening when a variant is missing.
- Size 6-300 px, Bold, Italic, Text colour, Opacity 0-100%, Text rotation ±180°.
Text effect - two-level selection
Instead of a single list of over 130 entries, the effect is chosen in two steps: Category → Effect.
| Category | Example effects |
|---|---|
| Shadows | Classic, soft, perspective, long shadow, gradient shadow, bottom mirror shadow, floor-cast shadow. |
| 3D | Layered 3D, 3D with side gradient, extruded 3D, chromed 3D. |
| Glows | Glow, double neon, neon tube, cyberpunk neon, UV / blacklight, electric arc, rainbow glow, cracked neon, Two-zone neon and Two-zone neon + reflection NEW in v1.35. |
| Outlines | Outline, multiple outline, neon outline, contour (hollow centre), gradient neon contour, two-colour double contour. |
| Gradients on text | More than 40 palettes: rainbow, ocean, matrix, aurora, lava, gold, chrome, copper, titanium, oil-slick chrome and more. |
| Patterns on text | Stripes, scanlines, pixel / 8-bit, grid, dots, hex, halftone, pop art, bricks, marble, camouflage. |
| Special | Fire, ice, hologram, RGB glitch, comic, knockout (caption cut from the background), neon badge, sticker, scorch, 3D glass (glassmorphism), duotone, flickering neon. |
Contextual parameters
Below the effect list, only the parameter sections actually used by the selected effect are shown:
- Shadow - colour, distance 1-40 px, angle 0-359°, blur 0-30 px,
- Outline - colour and width 1-12 px,
- Glow / Neon - colour and radius 2-40 px,
- 3D - side colour and depth 1-20 px,
- Effect colours - Colour #1 / #2 / #3 for gradients and patterns,
- Gradient direction - 10 directions (vertical, horizontal, diagonals, radials, diamond, conical, wave, plasma) plus the Gradient shift slider 0-100%, which cyclically shifts the palette phase and creates new variants of every gradient.
The Zone offset section (X/Y, ±500 px) moves the text relative to its default position.
7. Preview, saving, border, watermark and logo - column 4
Preview
- Dragging with the left mouse button moves the background image; the wheel changes the background zoom.
- Dragging with the right mouse button moves the logo.
Buttons
- Undo - restores the state before the last change (details in chapter 12).
- Generate preview - forces an immediate redraw.
- Save PNG / Save JPG - saves the current preview to a file (JPG at quality 95). If no preview has been generated yet, the program asks for one first.
Border
After ticking Enable border, 8 styles are available: Full, Rounded, Double, Dashed, Corners only, Neon (glow), Bevelled 3D, Gradient. The shared parameters are colour, width 1-20 px and edge inset 0-30 px. Contextual parameters appear only for styles that use them: corner radius 0-40 px, and for the Gradient style additionally Colour #2 and the border gradient direction (horizontal, vertical, diagonal, perimeter).
Watermark
The "ink" mark (red italic) in a corner of the picon. It can be switched on and off, and the setting is stored in the preset NEW in v1.35. The watermark corner can be bottom-right or bottom-left.
Image (logo)
- Tick Enable and click Load image (PNG/JPG with transparency).
- Set the logo scale 5-100%, position X / Y, logo opacity and the Behind text option.
- The logo can also be moved by dragging with the right mouse button in the preview.
8. Batch - mass generation - column 3
Channel list format
Batch accepts .txt files in the Enigma2 list format - pairs of #SERVICE and #DESCRIPTION lines. The parser handles:
- a channel name embedded in the
#SERVICEline itself (ending::name), #SERVICElines without a name (a single trailing colon - typical Enigma2 bouquets; the name is taken from#DESCRIPTION),#DESCRIPTIONlines appearing both after and before the#SERVICEline.
For each channel the program creates a PNG file whose name equals the #SERVICE reference with colons replaced by underscores, e.g. 1_0_1_3DEA_640_13E_820000_0_0_0.png.
Step by step
- Load .txt list - the label next to the button shows the number of channels read.
- Choose the preset to use from the drop-down list (saved + built-in presets).
- Choose the output folder for the PNG files.
- Optionally tick Skip existing files - useful when resuming an interrupted run.
- Batch preview (first 12) - a window with a thumbnail grid of the first 12 channels rendered with the selected preset; lets you judge the style before the full run.
- Generate batch - generation runs in the background; the progress bar shows the percentage, a file counter and the estimated time of completion (ETA) computed from the files actually generated.
_batch_errors.txt log in the output folder and shows the error count on the status bar.9. Send to receiver (FTP)
The section at the bottom of column 3 uploads the generated picons directly to an Enigma2 receiver.
- Enter the receiver's Host / IP, Login (default
root) and Password (masked; VU+ receivers always require a password). - Choose or type the picon path on the receiver. The list suggests three typical locations:
/usr/share/enigma2/picon,/media/hdd/picon,/media/usb/picon. - Test connection - logs in to FTP (port 21), enters the given folder and shows the number of PNG files it contains. A successful test saves the configuration.
- Send to receiver - uploads all PNG files from the batch output folder. Progress ("Sending X / Y...") is shown next to the FTP section and the result also appears on the status bar.
hpl_picon_ftp.json and the password is protected with Windows DPAPI - only the same user on the same computer can read it. An older (base64) configuration is migrated automatically on first use.10. Picon Sort tab
Picon Sort organises existing picon collections: it matches PNG files against a channel list and points out what is missing.
- Choose the folder with PNG icons (e.g. an unpacked picon pack).
- Choose the .txt list file (the same syntax as in batch - chapter 8).
- Click Match and copy.
For every channel the program looks for a <ID_with_underscores>.png file and copies the found ones into the Znalezione ("Found") subfolder in the program directory. The results go to a table:
| Column | Content |
|---|---|
| Status | OK - file found and copied; MISSING - no file for the channel. |
| Channel name | The name from the list (#DESCRIPTION or #SERVICE). |
| File | The expected PNG file name. |
| Info | Operation details (copied / not found). |
A summary is shown above the table: Found / Missing / Copied.
11. Missing-picon report and the Generator bridge
The Missing report (N) button opens a window on the right half of the screen listing the entries without a PNG file: position number, channel name, the underscore identifier and the expected file name.
- Copy identifier - copies the selected entry's ID to the clipboard (e.g. to search for a picon online manually).
- Generate missing picons - the report's key feature: it moves all missing entries straight into the Generator's batch list (with the CAPITALS + "HD" → Text 2 rules) and switches the program to the Generator tab. Just pick a preset and folder, then click Generate batch to produce only the missing picons.
12. Undo and live preview
- The history covers up to 30 steps and remembers the full settings state, including the loaded background and logo files.
- A state is recorded automatically after every successful preview render; a burst of rapid changes (e.g. dragging a slider) is merged into a single history step.
- Undo is available via the Undo button next to "Generate preview" or the Ctrl+Z shortcut.
- The Ctrl+Z shortcut is inactive while typing in text fields - it does not conflict with the system text undo.
- When the history is empty, the Undo button stays greyed out.
13. Example workflow
A typical scenario: a complete picon set for your own channel list in a single style.
The tidy-up variant: first Picon Sort matches an existing picon pack against the list, then the missing report's Generate missing picons button produces only the missing icons in the Generator - in the same style as the rest.
14. Interface sections and program files
Section cheat sheet
| Section | Location |
|---|---|
| Presets, Image size, Background & gradient, Background from file, Overlay, Vignette & glow, Decoration | Generator - column 1 |
| Text 1 / Text 2 / Text 3, Font, Text effect, parameters, Zone offset | Generator - column 2 |
| Batch generation, Send to receiver (FTP) | Generator - column 3 |
| Preview, Undo / Generate preview / Save PNG / JPG, Border, Watermark, Image (logo) | Generator - column 4 |
| Match and copy, Missing report, results table | Picon Sort tab |
Program files
All files are created in the program directory (next to the .py / .exe file):
| File / folder | Purpose |
|---|---|
hpl_picon_presets.json | Saved presets. If the file gets corrupted, a .bak copy is created. |
hpl_picon_ftp.json | FTP configuration; the password is protected with Windows DPAPI. |
Znalezione | The subfolder with picons copied by Picon Sort. |
_batch_errors.txt | The error log of the last batch - in the batch output folder. |
icon.ico | The program window icon (optional). |
15. Troubleshooting
"This MAC address is not authorised"
The computer is not on the list of authorised MAC addresses. Contact the program supplier and provide the MAC address (command line: getmac).
The preview renders slowly
Install the NumPy library (pip install numpy) - backgrounds and gradients then render many times faster. Large sizes (1280x720, 1920x1080) and blur-based effects always take longer; use a smaller size for experiments and set the target size before the batch run.
The "Generate batch" button does not start
Check three conditions: a loaded channel list (the label shows the channel count), a preset selected in the drop-down and a chosen output folder. The program shows a message pointing at the missing element.
Batch reports errors for individual files
Open _batch_errors.txt in the output folder - each line contains the channel name, the identifier and the cause. The most common causes are an unavailable background/logo path stored in the preset or a font missing from the system.
FTP: "login/path error" or "connection error"
- Check the receiver's IP and that the receiver is switched on (not in deep standby).
- The login is usually
root; a password is required - it is set in the receiver's menu (e.g. OpenWebif / network settings). - Verify that the picon path exists on the receiver; create the
piconfolder if needed. - The computer's firewall must not block outgoing connections on port 21.
Picon Sort finds nothing
The file names in the folder must be #SERVICE identifiers with underscores (e.g. 1_0_1_3DEA_640_13E_820000_0_0_0.png). If the picon pack uses channel names instead of identifiers, ID matching is not possible - generate the picons with batch instead.
Text 2 does not appear in batch
Text 2 is filled only when the channel name ends with the word "HD". Any other Text 2 content from the preset is overwritten during batch.
Invalid colour in a field
Colours use the #RRGGBB format. An invalid or empty value is replaced with white instead of raising an error.
Presets disappeared after a crash
Check whether a hpl_picon_presets.json.bak copy exists next to hpl_picon_presets.json - it holds the last version from before the corruption; just remove the .bak extension.