web-dev-qa-db-ja.com

urxvtの起動時にコマンドを実行する方法

Urxvtは、Iバーをカーソルとして使用することをサポートしていません。これを回避するために私が見つけた方法の1つは、コマンドecho -n -e "\033[6 q"を送信することです。

これは、urxvtを開くたびにコマンドを送信する限り機能しますが、実行する必要はありません。

私はurxvtに起動時にこれを実行させようとしましたが、さまざまな成功を収めました。

.bashrcexec echo -n -e "\033[6 q"とともに使用しようとしました。これは何の効果もありませんでした。

私はi3を使用しているので、次にurxvtのkeysymをコマンドで開始するように設定し、-hold引数を使用しようとしましたが、端末が保持されていたため、使用できませんでした。

私ができた唯一の成功は、.Xresourcesにkeysymを設定することでした。

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

これは機能しましたが、ターミナルを起動するたびにCtrl-Escapeを押す必要があることを意味します。

私が知りたいのは、urxvtを起動するたびに、実際に端末を使用できるようにしながら、このコマンドを何らかの方法で実行する方法があるかどうかです。

2
Yitzy

それを.bashrcファイルに入れたい場合は、少し改善されます。

  • 文字列が端末に送信されていることを確認する必要があります
  • また、シェルはインタラクティブである必要があります(スクリプトソースが.bashrcの場合)
  • -eオプションを指定したechoには、移植性の問題があります。 printfを使用します。

それらをまとめて、標準エラーに書き込みます(バッファリングされていないため):

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

urxvtは、 XTerm制御シーケンス に記載されているDECSCUSR制御シーケンスを実装します。

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).

コード5と6はxtermの機能であることに注意してください。

この制御シーケンスは、オンラインのマニュアルページ rxvt(7) には記載されていませんが、 changelog entry に記載されています。

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

また、ソースコードはこれを示し( set_cursor_style を参照)、 マニュアルページのソース は機能を示しています。それは 2014年にコード5と6で更新されました でした。

参考文献:

1
Thomas Dickey

私のような誰かが、質問した人の特定の問題ではなく、質問に対する答えを探していた場合、答えは次のとおりです。
urxvt [your other options - e.g. fancy colors...] -hold -e <your command>
-holdを省略すると、コマンドが実行されたときに端末が閉じられます。
例:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -e calc
電卓(gentooの優れた精度のもの)でurxvtを開始し、電卓を閉じると閉じます。これをホットキーで使用します。
他の例:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -hold -e echo -e Hello you greatest hacker\n
ターミナルウィンドウを開いたまま、自己陶酔的なユーザーに挨拶します。後者の例は使用しません。

0
Das_Sams
echo -en "\x1b[\x35 q" # changes to blinking vertical bar
echo -en "\x1b[\x36 q" # changes to steady vertical bar

これらは、変更するために.bashrcに入力する必要がある2つの関連するエスケープコードです。あなたが最初に試した他のすべてを取りなさい。もちろん、点灯または点滅のどちらかを選択し、後で必要になった場合に備えて、もう一方をコメントアウトします。

編集:もっと参考にするために、何かをリンクできるかどうか、またはそれらのコードをどこで入手したかはわかりませんが、.bashrcのurxvtでこれらをテストしました。これは、xtermですでに使用したものであり、機能します。残りのすべてのlemmeを知る必要がある場合は、すべてのカーソル形状。

0
Adrift