Simple Unix Chat

vorhergehende Artikel in: Linux
26.08.2023

Ich wurde neulich von einem Artikel kalt erwischt, in dem eine Möglichkeit präsentiert wird, einen Slack Chatserver in 5 Zeilen Bash-Code zu realisieren. Das machte mich so neugierig, dass ich das Projekt sofort forkte und begann, eigene kleine Verbesserungen daran vorzunehmen.

Einige dieser Verbesserungen sind auch bereits in aus meinem in das initiale Repository zurückgeflossen.

Diese Lösung stellt wie beschrieben einen Chat dar, der viele der Features abbildet, die auch in größeren, teureren und mit mehr Vendor Lock-in verbundenen Lösungen ebenfalls zu finden sind. Die Anwendung zur Interaktion heißt usuc - daneben existiert ein Script zum Erstellen neuer Chat-Räume. Das ist aber schon alles. Die unterstützten Features sind unter anderem:

  • Rich-Text Chat
  • Dateiaustausch
  • abgestufte Zugangskontrolle
  • Automatisierung und Integration mit anderen Werkzeugen
  • verschlüsselte Datenübertragung
  • State-of-the-Art Nutzerauthentifizierung
  • *und neu - durch meine Erweiterung - Versenden von Bildern im Chat (Voraussetzung: sixel-kompatibles Terminal)
Der Chat erlaubt es, ganz normale Messages zu versenden oder auch Kommandos auszuf+hren, deren Ergebnisse dann zu Chat-Nachrichten werden.

Das Wiki beschreibt viele der Möglichkeiten genauer. Dort ist auch angegeben, wie man den Text-Chat graphikfähig macht: Dazu benötigt man ein Sixel-kompatibles Terminal - das ist zum Beispiel bei Nutzung xon xterm mit folgenden Startparametern gegeben:

xterm -xrm "XTermdecTerminalID: vt340" -xrm "XTermnumColorRegisters: 256"

Dann kann man neben Rich Text im Chat

cat </dev/stdin | pygmentize -l java -f 256

Screenshot Rich Text im Chat

auch Bilder

img2sixel Pictures/login.png

Screenshot Bilder im Chat

versenden, die noch gar nicht als Datei vorliegen, sondern dynamisch erzeugt werden:

export GNUTERM="sixelgd truecolor font arial 12"; echo plot '20*sin(x*x),x*x'|  gnuplot

Screenshot Gnuplot Graphik im Chat

Für Texte ist natürlich die Benutzung von Syntax highlighting vorgesehen:

cat ~/te.sh|pygmentize -l bash -f 256

Screenshot Source Code im Chat

Natürlich gibt es noch viele weitere Use Cases, wie etwa das Filtern nach einer bestimmten Zeitspanne - auch dafür sei nochmals auf das Wiki des Projekts verwiesen!

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Multi-User-WebDAV, Docker, GitHub

    17.11.2019

    Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...

    Weiterlesen...

Neueste Artikel

  • Migration der Webseite und aller OpenSource Projekte

    In eigener Sache...

    Weiterlesen...
  • AutoHideToolbar für Java Swing

    Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.

    Weiterlesen...
  • Integration von EBMap4D in die sQLshell

    Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.