Ausführen des Befehls beim Start von urxvt

2113
Yitzy

Urxvt unterstützt nicht die Verwendung eines I-Balkens als Cursor. Eine der Möglichkeiten, um dieses Problem zu umgehen, besteht darin, den Befehl zu senden echo -n -e "\033[6 q".

Dies funktioniert, solange ich den Befehl jedes Mal sende, wenn ich urxvt öffne, was ich lieber nicht tun muss.

Ich habe versucht, Urxvt dazu zu bringen, dies beim Start auszuführen, mit unterschiedlichem Erfolg.

Ich versuchte es .bashrcmit einem exec echo -n -e "\033[6 q". Dies hatte keine Wirkung.

Ich benutze i3, also habe ich als nächstes versucht, das keysym für urxvt so einzustellen, dass es mit dem Befehl beginnt und das -holdArgument verwendet, aber alles, was passiert ist, war, dass ich das Terminal nicht verwenden konnte, da es festgehalten wurde.

Das einzige, was ich tun konnte, war ein Keysym .Xresources:

URxvt.keysym.C-Escape: command: \033[6 q

Das hat funktioniert, aber ich muss bei jedem Start des Terminals Strg-Escape drücken.

Was ich gerne wissen möchte, ist, ob es eine Möglichkeit gibt, diesen Befehl irgendwie auszuführen, wenn ich urxvt starte, während ich trotzdem das Terminal benutzen darf?

2
Warum haben Sie `exec Echo verwendet? . in Ihrem `.bashrc`? Ohne das Ganze zu sehen, ist es schwer, es mit Sicherheit zu sagen, aber das fühlt sich nicht richtig an Eric Renouf vor 7 Jahren 0
Ja. Ich habe alles und alles versucht. Ich war mir ziemlich sicher, dass es nichts tun würde, aber ich dachte, es lohnt sich. Yitzy vor 7 Jahren 0

3 Antworten auf die Frage

1
Thomas Dickey

Wenn Sie das in Ihre .bashrcDatei einfügen möchten, wird es ein wenig verbessert:

  • Sie sollten sicherstellen, dass der String zum Terminal geleitet wird
  • Die Shell sollte auch interaktiv sein (falls ein Skript vorhanden ist .bashrc)
  • echomit der -eOption hat Probleme mit der Portabilität. Verwenden printf.

Diese zusammenstellen und auf den Standardfehler schreiben (weil er nicht gepuffert ist):

[ -n "PS1" ] && [ -t 2 ] && printf '\033[6 q' >&2 

urxvt implementiert die DECSCUSRin XTerm Control Sequences dokumentierte Kontrollsequenz :

CSI Ps SP q Set cursor style (DECSCUSR, VT520). Ps = 0 -> blinking block. Ps = 1 -> blinking block (default). Ps = 2 -> steady block. Ps = 3 -> blinking underline. Ps = 4 -> steady underline. Ps = 5 -> blinking bar (xterm). Ps = 6 -> steady bar (xterm). 

Beachten Sie, dass die Codes 5 und 6 Xterm-Funktionen sind.

Diese Steuersequenz wird in der Online-Handbuchseite urxvt (7) nicht erwähnt, wird jedoch im Changelog-Eintrag vermerkt :

9.19 Sun Oct 27 17:16:07 CET 2013 ... - add support for the set cursor style (DECSCUSR) control function. 

Auch der Quellcode zeigt dies (siehe set_cursor_style), und die Quelle für die Handbuchseite zeigt die Funktion. Das wurde 2014 für die Codes 5 und 6 aktualisiert .

Lesen Sie weiter:

Sie sollten auch Ihren Terminaltyp überprüfen. Wenn Sie nur rxvt und seine Varianten verwenden, sollte `[" $ "= rxvt] && ...` den Trick tun, andernfalls möchten Sie wahrscheinlich mit `case '$ TERM' ; rxvt *) ... ;; xterm *) ... ;; esac` oder ähnliches. Curt J. Sampson vor 7 Jahren 0
0
Adrift
echo -en "\x1b[\x35 q" # changes to blinking vertical bar echo -en "\x1b[\x36 q" # changes to steady vertical bar 

Dies sind die beiden relevanten Escape-Codes, die Sie in Ihre .bashrc eingeben müssen, um sie zu ändern. Nimm alles andere, was du zuerst ausprobiert hast. Und natürlich können Sie zwischen Dauerlicht oder Blinken wählen und das andere auskommentieren, falls Sie es später möchten.

EDIT: Um informativer zu sein, bin ich nicht sicher, ob ich irgendetwas verlinken kann oder woher Sie diese Codes haben. Ich habe diese in urxvt in meiner .bashrc getestet und es ist das, was ich bereits in xterm verwendet habe und sie funktionieren Alle Cursorformen, wenn Sie alle anderen Informationen benötigen.

0
Das_Sams

Wenn jemand - wie ich - nach einer Antwort auf die Frage suchte, nicht nach dem spezifischen Problem des Befragten, lautet die Antwort:
urxvt [your other options - e.g. fancy colors...] -hold -e <your command>
Wenn Sie -holddas Terminal weglassen, wird der Befehl geschlossen.
Beispiel:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -e calc
startet ein urxvt mit einem Taschenrechner (eine schöne Genauigkeit bei gentoo) und schließt es, wenn ich den Taschenrechner schließe. Ich benutze das mit einem Hotkey.
anderes Beispiel:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -hold -e echo -e Hello you greatest hacker\n
würde einen narzisstischen Benutzer begrüßen, während er das Terminalfenster öffnet und geöffnet bleibt. Ich benutze das letzte Beispiel nicht.