Store — programs for Violyx
Plain links to .vpk programs for Violyx, from a domain the Violyx browser can reach without JavaScript.
How a program gets onto the machine
- Open this page in the Violyx browser (address: merecete.org/store/) and pick a .vpk link. The file lands in /downloads.
- In Files, open /downloads, select the file and press Enter. The system asks once, showing title and version of the package. After that the program appears in the overview on F2.
- Or type the command form in Commands: install FILE.VPK, then run NAME. run FILE.VPK starts a package directly, without installing it.
- In the overview on F2, select a program and press Del to remove it with its own data folder.
Catalogue
No program has been published here yet. There are no .vpk files in the download folder and the catalogue file is empty. The files themselves, not this page, decide what appears in the list below, so an entry cannot drift away from the program it describes.
What a package is
A .vpk file is not a zip and not a tar: it is 256 bytes of header followed by the program itself, unmodified and uncompressed. The kernel reads the header before anything runs. These are the fields and the limits it accepts, taken from kernel/prog.c and sdk/mkvpk.py in the Violyx sources:
magic- the four bytes VPK1 at the start
elf- length of the program part; header plus this must equal the file size
cols/rows- window size in text cells: 20 to 76 columns, 5 to 20 rows
name- up to 23 characters of a-z, 0-9, - and _; decides the folder /programs/<name>
title- shown in the window frame, up to 23 characters
version- up to 11 characters, required
author- up to 31 characters, optional
icon- three lines of six characters each, code page 437, for the program overview
A package must be at least 320 bytes and at most 32 MiB. The program inside has to be a 64-bit x86 ELF built for the Violyx program area. A package whose name equals a program that already ships with the system (snake, bricks, novastrike, xzn, pong, invaders, chomp, mines, calc, clock, calendar, write, paint, files, commands, view, web, cc) will be installed, but the built-in one with that name is what starts.
Publish your own
Two paths lead to a package. On another machine: build the ELF with the toolchain described in the SDK, then call sdk/mkvpk.py with the name, the title, the version, the author, the window size and the icon as three lines separated by pipe characters. On a running Violyx: write the source and call cc FILE.c, and FILE.vpk appears next to it; -o NAME.vpk picks another output file, -s 60x19 the window size and -t TITLE the window title.
To place a program here, the .vpk file has to be copied into store/files/ of the website project and the pages have to be generated again. The list on this page, the download folder and /store/index.json are all produced from the files that are really there.
Machine-readable catalogue
/store/index.json describes the same programs in JSON for tools: name, title, version, author, the window size, the three icon lines, the download path, the size, the SHA-256 checksum and the date. Every value is read from the file itself, and a short description can be added beside it.
This file is an addition of the website, not a Violyx feature: nothing in Violyx 0.3.0 reads it, and the store in Violyx today is exactly what its guide says — a web page with links to .vpk files. Treat index.json as a catalogue for programs on the computer, for mirrors and for the day a future Violyx version might want to read one.
Before installing
An installed program is not locked into its own folder: it can read and change the files in /home. Neither the browser nor the installer checks a checksum or a signature, and the confirm dialog only shows the title and version the package claims about itself. Install only programs whose source you have seen or whose author you trust.
Where the files are
/store/— this page, in the language you reached it in/store/files/— the .vpk packages, listed by name with their sizes/store/index.json— the catalogue described above/de/store/— the same page in German