TermDeck
Over dit project
Wat TermDeck is
Een Mac-app die al mijn terminalsessies in een venster zet. Geen webpagina of site, maar een programma dat op macOS draait. Links een lijst met sessies, in het hoofdvlak een of twee terminals die ik op dat moment gebruik. Geen product en geen download voor anderen: gereedschap dat ik voor mezelf heb gebouwd en dat elke werkdag open staat.
Wat het doet
Per klant of project draait er een sessie, en bij elke sessie staat een lampje: werkt de AI nog, is hij klaar, of wacht hij op mijn toestemming. Dat lampje komt niet van gokken op wat er op het scherm staat, maar van het officiΓ«le meldingssysteem van Claude Code, waar de app via een lokale verbinding op luistert. Een toestemmingsvraag beantwoord ik vanuit de app zelf, zonder eerst het juiste venster te zoeken.
De terminals draaien in de app en niet ernaast. Daardoor weet TermDeck zelf welke sessie welke gebeurtenis veroorzaakt, waar een los tool dat van buitenaf meekijkt moet raden.
Waarom ik het heb gebouwd
Ik werk dagelijks met vier tot zes losse terminalvensters, meestal een per klant. Op een laptop vreten die schermruimte, en vanaf een stuk of vier weet je niet meer welk venster waar mee bezig is en welke op je wacht. Niets wat ik probeerde loste precies dat op, dus heb ik het zelf gebouwd, als Mac-app in Electron met React en TypeScript.
Onderweg zat er een bekende fout in de terminal-bibliotheek waarbij de scrollpositie uit de pas loopt met wat je ziet. Opgelost door muiswiel-gebeurtenissen zelf op te vangen en naar de terminal te vertalen, in plaats van het venster te laten schuiven.
Waarom ik het elke dag gebruik
Omdat het werkt zoals ik werk: in een oogopslag zie ik welke klant op me wacht, en ik wissel zonder te zoeken. En omdat ik het bouw met dezelfde regels als een klantproject. Bij een aanvalsronde op mijn eigen werk bleek dat elk programma op dezelfde computer nepverzoeken door die lokale verbinding kon sturen, dus een toestemmingsvraag die nergens vandaan komt. Dichtgezet met een sleutel die per start wordt aangemaakt, strakke rechten op de bestanden eromheen en een controle bij het wegschrijven. Zo ga ik ook om met een portaal of platform dat ik voor jou bouw.