Meghatározott művelet automatikus végrehajtása VNC-n belül.

Fórumok

Sziasztok!

Adott egy VNC szerveren belül futó Windowsos alkalmazás ami egy Debian 9-en fut Wine segítségével. Ezt az alkalmazást Bármilyen VNC klienssel el lehet érni (Remmina, RealVNC, stb…)
Azt vettem észre, hogy ha az adott alkalmazás VNC képernyőjén túl sok minden történik akkor megugrik a CPU terhelése (akkor is ha nincs bejelentkezve senki se VNC-n). Ha viszont az alkalmazást leteszem tálcára akkor a CPU használat elhanyagolható. Ezért kitaláltam azt, hogy ha X ideig nem lépnek be a VNC-re akkor automatikusan tegye le tálcára az alkalmazást. Ezzel a szerver magasabb CPU terhelése nagyjából csak annyi ideig tart amíg aktívan használják a programot. Azt már tudom cronból figyelni, hogy mikor vannak belépve a VNC-re és mikor nem. Arra viszont nincs ötletem, hogyan és milyen módon történjen automatikusan a beavatkozás a VNC-n belül futó programon.

Van erre ötletetek?

Hozzászólások

VNC a változásokat kódolja, és gondolom az általad használt szerver nem képes leállni ezzel akkor sem, ha nincs kliens. Meg lehet próbálni másik szerverekkel próbálkozni, vagy a beállításokat tweakelni. Persze maga az animációt csináló program is dolgozik az animálással, lehet, hogy az viszi a CPU-t, akkor azon nem segít a VNC oldali optimalizálás.

A megoldás azon is múlik, hogy milyen program. Gondolom XVNC-ről beszélünk, tehát végsősoron X protokoll felett működik az adott program?

Lehetőségek:
* XDOtool vagy hasonlóval minimize parancsot küldeni a programnak. Pl itt: https://askubuntu.com/questions/4876/can-i-minimize-a-window-from-the-c…


I use the following command to minimize the active window:

xdotool windowminimize $(xdotool getactivewindow)

I suspect you may replace the $(xdotool getactivewindow) with a string identifying any window that you need to minimize.

* Ha szabad szoftver, akkor talán legésszerűbb beletákolni, hogy le tudja magát zárni akár kérésre, akár időzítve :-)
* Windowsos API-khoz is léteznek robotizáló API-k, azokkal is lehet próbálkozni.
* Java programból már csináltam olyat, hogy agent-et töltöttem be (van rá API, hogy menedzsment komponenst indíts egy JVM-en belül, a debugger is így működik), ami reflektíven kikereste az ablak komponenseit, és azokat vezérelte. Hasonlókat lehet csinálni egyéb UI technológiák felett is, de ez overkill, csak a poén kedvéért írtam le.
* +1 - policy, hogy aki kilép, az lezárja a programot, különben letöröd a kezét :-)

Szerk.: Sok desktopon letezik a minimize all gomb, eleg volna azt triggerelni, vagy megnezni mit csinal es azt futtatni.