Terminal-Proxy oder Bildschirm ohne Terminalemulation

1578
ZyX

Wie kann ich Terminalanwendungen unempfindlich gegen Terminalemulator machen, aber trotzdem alle virtuellen Terminalfunktionen nutzen?

\ begin

Ich möchte, dass meine Terminalanwendung aktiv bleibt, wenn ich den Terminalemulator versehentlich schließe. Diese Funktionalität wird von screen und tmux bereitgestellt, sie haben jedoch Probleme mit Farben und bündeln den Bildschirm. Ja, ich kann die Shell in screen ausführen, aber ich möchte nicht, dass die Shell am Leben bleibt, es sei denn, ein anderes Programm läuft.

\ end

Ich sehe, dass dies so etwas wie ein Bildschirm sein muss, aber ohne VT100-Terminalemulation, etwas, das sich einfach auf die Anwendung des Terminals "terminal proxy" bezieht (z. B. Ausgabe von etwas nach stdout / stderr oder Verwendung von stty zum Einstellen der Terminaloptionen) auf dem Terminal Dieser Proxy läuft in.

// Ich weiß über screenund altscreen on, aber es macht entweder ( screenmit TERM=screen):

screen with TERM=screen

oder das ( screenmit TERM=rxvt-unicode):

screen with TERM=rxvt-unicode

während ich das will ( rxvt-unicodeohne screen):

rxvt-unicode

Ich habe herausgefunden, dass alles sieht gut aus, wenn ich kompilieren rxvt-unicodemit USE=-xterm-color(in der Tat sieht vim wie auf dem zweiten Bild auch ohne Bildschirm, wenn ich diese USE - Flag hinzufügen) und eingestellt TERM=screen-256color, aber ich weiß nicht, wie dieses Problem zu umgehen, weil es Farben tatsächlich verändert und ich kann Seien Sie nicht sicher, dass es sie immer nur so ändert:

screen with TERM=screen-256color

3
Es ist nicht klar, was Sie zu tun versuchen. Was meinst du mit "immun gegen Terminalemulator schließen"? Möchten Sie einfach bestimmte Terminalsteuerungscodes deaktivieren? Sie können einfach `infocmp` verwenden, die Funktion bearbeiten und dann` tic` verwenden. Dennis Williamson vor 13 Jahren 0
Ich möchte, dass meine Terminalanwendung aktiv bleibt, wenn ich den Terminalemulator versehentlich schließe. Diese Funktionalität wird von screen und tmux bereitgestellt, sie haben jedoch Probleme mit Farben und bündeln den Bildschirm. Ja, ich kann die Shell in screen ausführen, aber ich möchte nicht, dass die Shell am Leben bleibt, es sei denn, ein anderes Programm läuft. ZyX vor 13 Jahren 0
Ich habe aufgehört, rxvt-unicode zu verwenden, da ich die Farben nie richtig zum Laufen bringen konnte und einige grundlegende Steuerzeichen dazu führten, dass rxvtu überall Zeichen anzeigt. Apples Terminal.app und Gnome.terminal haben mir jedoch keine Probleme bereitet. Ich verwende das en-US-Zeichen oder UTF8-Zeichensätze. Stefan Lasiewski vor 13 Jahren 0
@Stefan Lasiewski-Farben funktionieren gut im rxvt-Unicode; Sie funktionieren aber nur in diesem Terminal und nur unter bestimmten Bedingungen. Wenn ich zu einem anderen Terminal wechsle, müsste ich etwas damit anfangen. Verwenden von `LANG = ru_RU.UTF8`. Was meinst du mit «überall Zeichen anzeigen»? Wenn es die Zeilen verdirbt, versuchen Sie `stty onlcr`. ZyX vor 13 Jahren 0
Für mich ist es immer noch unklar, was "Ja, ich kann die Shell im Bildschirm ausführen, aber ich möchte nicht, dass die Shell am Leben bleibt, wenn nicht ein anderes Programm ausgeführt wird". Lassen Sie uns tmux sagen: tmux startet eine Shell und dann tippen Sie dort "yourprogramname" .. und Sie möchten, dass der Shell-Prozess verschwindet, also nicht tmux-> shell-> yourprogram mehr, sondern tmux-> yourprogram? Starten Sie in diesem Fall Ihr Programm mit "exec yourprogramname". akira vor 13 Jahren 0
und tmux unterstützt 256 Farben, daher sollten Sie keine visuellen Probleme mit Ihren Programmen haben. Das heißt, wenn Ihr Terminalemulator 256 Farben WIE GUT unterstützt. akira vor 13 Jahren 0
@akira. Das heißt, wenn ich den Terminal-Emulator mit dem Prozessbaum 'Emulator / screen / hilite / zsh' schließe, sollte die Shell geschlossen werden. Und es sollte nicht sein, wenn der Prozessbaum folgendermaßen aussieht: 'emulator / screen / hilite / zsh / some_other_program / ...'. Dies kann mit einem Dämon erfolgen, der durch getrennte Bildschirmsitzungen zyklisch abläuft und deren Prozessstruktur überprüft. Dies hat Dan vorgeschlagen. ZyX vor 13 Jahren 0
Verwenden Sie TERM = xterm-256color, das gibt mir die genauen Farbtöne in tmux. akira vor 13 Jahren 0

4 Antworten auf die Frage

3
tzervo

Es gibt auch ein Programm namens "dtach", das genau das tut, ohne seinen eigenen Bildschirmpuffer zu überlagern. (Ich weiß, die Antwort ist ziemlich spät, aber ich poste sie trotzdem für diejenigen, die google und stolpern über die Seite.)

Nein ist es nicht. Danke, dtach funktioniert so wie ich es will. ZyX vor 13 Jahren 0
0
Jarvin

Yes, I can run the shell inside screen, but I do not want the shell remain alive unless there is some other program running.

One solution would be to run the shell from screen (as you said you didn't want to), but then add a Cron job to run every 10 minutes to check if there are screen sessions to close.

If all screen sessions are detached and no programs besides shells are running from them then you can close them down.

Ich habe keine Angst, einen weiteren Cron-Job hinzuzufügen, aber das hat nichts mit Farben zu tun. ZyX vor 13 Jahren 0
0
brice

Verwenden Sie Sakura . Es fordert Sie auf, wenn Sie versuchen, ein vterm mit einem laufenden Programm zu schließen.

0
pjz

Sie können den Bildschirm verwenden, um Ihre Anwendung direkt zu starten. Wenn der Bildschirm beendet wird, wird der Bildschirm beendet:

screen <yourprog> 

Weitere Informationen finden Sie im fünften Absatz der Bildschirm- Manpage .