import logging from dataclasses import dataclass from typing import Union, List @dataclass class AppConfig: guiname: str name: str cmd: Union[List[str], str] path: str = "./apps/" persistent: bool = False white: bool = False def __post_init__(self): if not isinstance(self.cmd, list): self.cmd = [self.cmd] # width ScreenX = 80 # height ScreenY = 40 DefaultBrightness = 0.6 Serial = "/dev/ttyACM0" # kills app after some seconds if it sends no data NoDataTimeout = 40 LogLevel = logging.DEBUG UseGui = False GuiFPS = 20 GuiScaleFactor = 15 WebHost = "0.0.0.0" WebPort = 8000 Apps = [ # first app is always running as default AppConfig(guiname="Backlight", name="backlight", cmd="./backlight.py", white=True), AppConfig(guiname="Lines", name="lines", cmd="./lines.py"), AppConfig(guiname="Wolfram", name="wolfram", cmd="./wolfram.py"), AppConfig(guiname="Digi Clock", name="digiclock", cmd="./digi_clock.py"), AppConfig(guiname="Text Scroller MQTT", name="textscroll", cmd="./textscroll.py"), AppConfig(guiname="Flicker", name="flicker", cmd="./flicker"), AppConfig(guiname="Pixelflut", name="pixelflut", cmd="./pixelflut", persistent=True), # App(guiname="Pong", name="pong", cmd="pong.py"), AppConfig(guiname="YoutubeDL", name="youtubedl", cmd="./youtubedl.sh"), # App(guiname="Show Framebuffer", name="fbcp", cmd=["fbcp", "/dev/fb0"]), AppConfig(guiname="Strobo", name="strobo", cmd="./strobo.py"), # App(guiname="Beispiel", name="example", cmd="example.py"), # App(guiname="Beispiel2", name="example2", cmd="example2.py", white=True), AppConfig(guiname="Fibonacci Clock", name="fibonacci-clock", cmd="./fibonacci-clock.py"), AppConfig(guiname="Wget Video/Gif/Images", name="wget", cmd="./wget.sh"), # juergen/pixelfoo AppConfig(guiname="Congress noise", name="cnoise", cmd="./cnoise", path="pixelfoo/target/release/"), AppConfig(guiname="Game of Life", name="life", cmd="./life", path="pixelfoo/target/release/"), AppConfig(guiname="Matrix Code", name="matrix-code", cmd="./matrix-code", path="pixelfoo/target/release/"), AppConfig(guiname="Lorenz Attractor", name="lorenz", cmd="./lorenz", path="pixelfoo/target/release/"), AppConfig(guiname="Dual Moodlight", name="bimood", cmd="./bimood", path="pixelfoo/target/release/"), AppConfig(guiname="Maze", name="maze", cmd="./maze", path="pixelfoo/target/release/"), AppConfig(guiname="Dual Maze", name="dualmaze", cmd="./dualmaze", path="pixelfoo/target/release/"), AppConfig(guiname="Predator & Prey", name="predprey", cmd="./predprey", path="pixelfoo/target/release/"), # App(guiname="Beat Saber Ceiling", name="beatsaberceiling", cmd="./beatsaberceiling.py", path="beatsaberceiling"), # mathpixel AppConfig(guiname="Structure formation", name="swifthohenberg", cmd="./swifthohenberg.py"), AppConfig(guiname="Quadratisch", name="quadratic", cmd="./quadratic.py"), AppConfig(guiname="Pendel", name="pendulum", cmd="./pendlum.py"), AppConfig(guiname="Konvergenz", name="convergence", cmd="./convergence.py"), AppConfig(guiname="Sinic", name="sinic", cmd="./sinic.py"), AppConfig(guiname="Sinic 2", name="sinic2", cmd="./sinic2.py"), # pixelthud AppConfig(guiname="Fading Pixels", name="fadingpxls", cmd="./fading_pixels.py"), AppConfig(guiname="Plane Wave", name="planewave", cmd="./plane_wave.py"), AppConfig(guiname="Rock-paper-scissors-spock-lizard", name="rps", cmd="./rps.py"), AppConfig(guiname="Doom Fire", name="doomfire", cmd="./doom_fire_psx2.py"), # App(guiname="Maxwell FDTD", name="fdtd", cmd="./fdtd.py"), # App(guiname="Stream", name="stream", cmd="./stream.sh"), # App(guiname="Wget Video/Gif/Images", name="wget", cmd="./wget.sh"), # App(guiname="Tetris", name="tetris", cmd="./deckentetris/deckentetris.py"), # App(guiname="SkyScrapper", name="sky", cmd="./weather/main.py"), # App(guiname="Strobo", name="strobo", cmd="./strobo.py"), # App(guiname="Snake", name="snake", cmd="./snake.py"), # App(name="gif", cmd="./gif.sh"), # App(name="colormap", cmd="./colormap.py"), ]