Skip to content

Deterministic chaos engine for your desktop. High-performance cellular automata integration for KDE Plasma 6.

Notifications You must be signed in to change notification settings

arcanorca/Konway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Konway

Konway logo

Konway is a lightweight, customizable cellular automaton engine integrated as a KDE Plasma 6 wallpaper plugin.

demo.webm

[Settings GUI]


// HIGHLIGHTS

  • The simulation runs on the GPU, so even older PCs handle it well. There’s no per-cell CPU loop each frame, making Konway one of the most efficient live wallpaper plugins.
  • Designed with a calm default look, featuring popular palettes like Paper Light, Emerald, Amber, Monochrome, Catppuccin, Dracula, Tokyo Night, Nord, Gruvbox, Everforest, Rose Pine
  • Optional resizable digital clock overlay mode (Off / Hybrid Local Time)
  • Mouse seeding: left click places a glider, left drag uses brush
  • Adjustable simulation rules. Supports arbitrary B/S (Birth/Survival) rule strings. Beyond standard Life (B3/S23), you can simulate other automata like HighLife (B36/S23) or Day & Night (B3678/S34678).
  • Full settings UI tabs: General, Simulation, Patterns, Appearance, Performance, Safety

// HOW IT WORKS

1. The GPU Pipeline

The simulation is stored in a texture (alive/dead cells). Every tick, a shader reads the previous state and writes the next state (ping-pong / feedback).The CPU mostly just schedules ticks.

2. Entropy Management (Auto-Injection)

Classic automata naturally decay into equilibrium (still lifes or oscillators) within a finite grid.

  • Dynamic Seeding: When entropy drops below a threshold, it randomly injects curated patterns (Gliders, Methuselahs, R-Pentominoes etc.).
  • Purist Mode: This behavior is fully configurable or can be disabled for a strictly deterministic run.

3. Visual Ergonomics

Raw cellular automata can produce harsh, rapid flickering (1-period oscillators) that can be distracting for some people.

  • Subtle trails: Can be toggle on/off, decay trails create a phosphor-persistence effect, smoothing out visual noise like old CRT monitors.
  • Safety Limits: Integrated brightness clamping and contrast controls to reduce eye strain.

// INSTALL

KDE Store

Desktop and Wallpaper -> Get New Plugins... -> search Konway

Local Deploy

Run from life.wallpaper/:

./tools/deploy_local.sh

If Plasma still shows stale QML/settings:

plasmashell --replace & disown

// UPDATE (Already Installed)

KDE Store Install

  • Open Desktop and Wallpaper -> Get New Plugins...
  • Check for updates and update Konway
  • If the old QML stays cached, restart Plasma:
kquitapp6 plasmashell && kstart6 plasmashell

Local Deploy Install

From your cloned repo:

git pull
cd life.wallpaper
./tools/deploy_local.sh

If needed:

plasmashell --replace & disown

KPackage Install

If you install from dist/*.kpackage.tar.gz, use upgrade:

kpackagetool6 --type Plasma/Wallpaper --upgrade dist/com.github.arcanorca.konway-<version>.kpackage.tar.gz

// Quick Settings Guide

  • Cell size: visual size of cells
  • Target TPS: simulation speed (ticks per second)
  • Sync with TPS: keeps internal driver timing aligned with TPS
  • Pause when Plasma is inactive: optional resource save behavior

// Build Shaders (.qsb)

From life.wallpaper/:

qsb --glsl "100 es,120,150" --hlsl 50 --msl 12 -o contents/shaders/life_step.frag.qsb contents/shaders/life_step.frag
qsb --glsl "100 es,120,150" --hlsl 50 --msl 12 -o contents/shaders/visualize.frag.qsb contents/shaders/visualize.frag
qsb --glsl "100 es,120,150" --hlsl 50 --msl 12 -o contents/shaders/population_probe.frag.qsb contents/shaders/population_probe.frag

or:

./tools/build_shaders.sh

// Pattern Packs

Built-in pattern data:

  • contents/patterns/rle/<category>/*.rle
  • contents/patterns/index.json
  • contents/patterns/patternData.js

Rebuild index/data after RLE edits:

./tools/build_patterns_index.py

Optional external pack helper:

./tools/download_external_pack.sh /path/to/manifest.txt

// KPackage Build

Create install/upload archives:

./tools/build_kpackage.sh

Output:

  • dist/com.github.arcanorca.konway-<version>.kpackage.tar.gz
  • dist/com.github.arcanorca.konway-<version>.kpackage.zip

Local package install test:

kpackagetool6 --type Plasma/Wallpaper --install dist/com.github.arcanorca.konway-<version>.kpackage.tar.gz

// CHANGELOG

0.1.1

  • Transition fade is no longer 1 tick, now it is adjustable 1 to 8 ticks.
  • Clock rendering and spacing polish, added new clock sizes.
  • Settings UI cleanup: consistent reset controls and improved General tab clarity

// License

GPL-3.0-or-later

// Stack

KDE Plasma 6 • Qt 6 (QML/JS) • GLSL (.qsb via Qt RHI) • kpackagetool6


Dedicated to the memory of John Horton Conway.