Nem baj, kösz a helyesbítést. Szükség se volt rá, mert működik listen meghívása nélkül is, elküldtem socat-tel az előre preparált bájtokból álló stringet a unix-connect:/tmp/.X11-unix/X0 socket-re, és nem csak hogy elfogadta, stdout-ra már nyomja is magától a választ, amit elemeztem | xxd | less segítségével, és a X.org szervernek 1-es a visszatérő értéke mindjárt a 0. bájban, elfogadta a csatlakozást, közöl is magáról kb. 8 KiB-nyi infót. Ez egy biztató kezdet.
Most már csak értelmes parancsokat kell preparálnom újabb stringként, amit elküldök, hogy ablakot nyissak. Menni fog ez. Nyilván most még sügér, meg fixre drótozott értékekkel dolgozok, de majd absztrahálok rajta, ha minden működik, hogy változókkal hívom a funkciókat, meg a $DISPLAY értékét is figyelembe veszem, úgy már nem lesz semmi fixre drótozva.
Szerk.: már az ablak bezárása megy. A nyitása még nem, ott elrontok valamit. A másik trükk, hogy minden parancs elég kell külön inicializálás, nem lehet úgy, hogy előbb elküldöm a socat-tel az inicializálást, aztán külön socat a többi utasításnak. Minden socat-sorban minden adatot el kell küldeni, inicializálástól elkezdve az összes végrehajtott utasításon át.