En samling av egna projekt — verktyg, applikationer och konfigurationer byggda för praktiska behov och personligt bruk. Allt hostat på git.kristoffersson.info.
C · ncurses
En terminalbaserad klient för Transmission BitTorrent-daemon. Byggd i C med ncurses och kommunicerar direkt med Transmissions JSON-RPC API utan tunga beroenden som libcurl eller jansson — bara libncursesw.
Funktioner: filtrera torrents efter status (alla, laddar ned, laddar upp, pausade, klara), se namn, storlek, framsteg och hastigheter i realtid, hantera torrents med add/remove/start/stop, samt sökning och sortering. Konfigureras via config.ini och kommandoradsflaggor.
C · Python · ncurses
Terminal-UI för att ladda ned ljud från YouTube, YouTube Music, spellistor och album. Startade som en Python + Textual-implementation och skrevs sedan om i C med ncurses för bättre prestanda — båda versionerna kan köras.
Stödjer samtidiga nedladdningar, köhantering, mappval, separata undermappar per spellista samt inbäddning av miniatyrbilder och metadata. Använder yt-dlp som backend.
C · Xlib
En lätt och modulär statusrad för Xorg. Alla moduler — inbyggda såväl som egna — löses via skalskript, vilket gör anpassning möjlig utan omkompilering.
Levereras med elva moduler: klocka, batteri, volym, CPU, nätverk, mediaspelarkontroller, aktivitetsfält med mera. Stödjer flera skärmar, sekundär rad på motsatt skärmkant, automatisk textscrollning, sliderpopups för ljusstyrka/volym och ett komplett menyramverk med bilder och knappar. Konfigureras via ~/.config/sxbarc.
Binar: ~36 KB (minimal) till ~220 KB (med bildstöd). Beroenden: Xlib, Xinerama, Xft, libm.
C · ncurses · Xrandr
Interaktiv terminal-UI för att hantera multiskärmskonfigurationer på Linux X11. Visar en skalad kanvas med alla anslutna skärmar och låter dig flytta dem med piltangenter med automatisk kantsnappning.
Funktioner: cykla upplösningar per skärm, välja primär skärm, tillämpa ändringar direkt via xrandr, spara layout för omstart via XDG autostart, och ångra till startposition.
TypeScript · React Native · Expo
En personlig träningsapp byggd med React Native och Expo, fokuserad på offline-drift och anpassningsbara teman. Spårar träning, näring, vikt och framsteg utan behov av serverinfrastruktur.
Innehåller: femstegs-onboarding med TDEE-beräkning (Mifflin-St Jeor), kalorispårning med SVG-visualisering, makrografer, vattenintag, träningsschema per vecka, aktivt träningsgränssnitt med set/reps/vikter/vilotimer, bibliotek med 75 övningar, nutritionslogg med 30 förinlästa livsmedel, viktgraf för sju dagar, tio prestationer och fem färgteman.
Tillståndshantering med Zustand och lokal lagring via AsyncStorage.
Python · FastAPI · HTML
Lokal webbapplikation för att transkribera video och audio och generera stiliserade undertexter — med fokus på kortformat för sociala medier. Kör OpenAI Whisper lokalt, ingen API-nyckel krävs.
Exporterar till SRT och ASS med ordnivåtiming för karaoke-liknande animering, kan bränna in undertexter i video via ffmpeg, detekterar optimala videosegment och beskär till valfritt bildförhållande (9:16, 1:1, 4:5, 16:9). GIF-sökning via Giphy API ingår. Valfri Claude AI-integration för förbättrad segmentdetektering.
Python · Flask · JavaScript · SQLite
Digitalt skyltningssystem för Linux (Debian 13) som hanterar kioskskärmar. Styr Chromium i helskärm under Sway/Wayland och exponerar ett webbaserat adminpanel för konfiguration.
Stödjer URL:er, inbäddad YouTube, videofiler (mp4, webm, avi, mkv, mov), bilder, PDF:er och lokala HTML-filer. Schemaläggning med roterande jobb och automatisk videolängdsdetektering. Visuella overlay-moduler: scrollande ticker med RSS, klocka (digital/analog), livechatt och BBCode-text med effekter. Systemhantering: Wi-Fi, ljud, sömnläge och omstart från adminpanelen.
Modulärt addon-ramverk via Flask Blueprints.
HTML · JavaScript
Webbläsarbaserad editor och visare för NFO-, ANS- och ANSI-konstfiler. Ingen installation behövs — öppna bara index.html.
Renderar autentiska CP437-tecken med IBM VGA 8×16 bitmappsfont, tolkar ANSI escape-koder för färger och markörpositionering. Redigeringslägen: textinmatning, ritläge (klick/dra) och markeringsbaserade operationer. Teckenpanel med hela CP437-uppsättningen, eyedropper, 256-färgpalett, rad-infogning/borttagning och 50 steg ångra/gör om.
Konverterar bilder till ANSI-konst med flera renderingslägen (ASCII-densitet, halvblock, helblock, 256-färg) och Floyd–Steinberg dithering. Exporterar till .ANS, .NFO plain och .HTML. Flerfliksläge med sessionsbeständighet.
Shell · tte (terminaltexteffects)
En skärmsläckare för X11/sxwm som animerar ASCII-konst i ett helskärmsterminalfönster. Inspirerad av Omarchys terminalskärmsläckare, anpassad för sxwm istället för Hyprland.
Daemonen övervakar inaktivitet via xssstate och är mediakänslig — aktiveras inte medan något spelas upp (via playerctl och MPRIS). Stödjer flera skärmar, konfigurerbar tidsgräns och pausning/återupptagning via en toggle-skript.
Shell · C
Personliga konfigurationsfiler för en minimal, tangentbordsdriven X11-skrivbordsmiljö. Bygger på:
Super + P)
Inkluderar install.sh för automatiserad installation, JetBrainsMono Nerd Font, PipeWire-ljud, skärmblankning efter 5 minuter, svensk tangentbordslayout och automatisk X-sessionstart på TTY1.PHP · Shell · CSS
Det webbgränssnitt du just bläddrade i. En liten, läsbar PHP-frontend för att visa och klona bare git-repon — utan databas, utan ramverk.
Kräver bara PHP och git. Stödjer SSH- och anonym HTTPS-klokning, flera teman (mörkt/ljust) och är designad för att vara lätt att drifta på en vanlig webbserver.
TUI
Ett terminalverktyg för att skapa och hantera M3U8-spellistor. Aktivt under utveckling.