rxvt-unicode/ヒントとテクニック

提供: ArchWiki
2022年2月6日 (日) 20:35時点におけるKgx (トーク | 投稿記録)による版 (→‎パフォーマンスの改善: 翻訳)
ナビゲーションに移動 検索に移動

メインの記事は rxvt-unicode を見てください。

Openbox で Kuake ライクな挙動を改善する

以下は元は Xyne によってフォーラムに投稿されたもの [1] で、公式リポジトリにある xdotool に依存しています。

スクリプトレット

urxvtc の man ページにある以下のスクリプトレットをシステム上 (例: ~/.config/openbox) に urxvtc と保存してください:

#!/bin/sh

urxvtc "$@"
if [ $? -eq 2 ]; then
   urxvtd -q -o -f
   urxvtc "$@"
fi

そして以下を urxvtq と保存してください:

#!/bin/bash

wid=$(xdotool search --classname urxvtq)
if [ -z "$wid" ]; then
  /path/to/urxvtc -name urxvtq -geometry 80x28
  wid=$(xdotool search --classname urxvtq | head -1)
  xdotool windowfocus "$wid"
  xdotool key Control_L+l
else
  if [ -z "$(xdotool search --onlyvisible --classname urxvtq 2>/dev/null)" ]; then
    xdotool windowmap "$wid"
    xdotool windowfocus "$wid"
  else
    xdotool windowunmap "$wid"
  fi
fi

上記で保存した urxvtc/path/to/urxvtc スクリプトレットへの実際のパスに変更することを確認してください。urxvt の通常のインスタンスと kuake のようなインスタンスの両方を起動するために urxvtc を使用する予定です。

urxvtq とタブ

kuake-like urxvtc (ここでは urxvtq) でタブを使いたい場合は、 urxvtq の3行目を置き換えるだけでよいです。

wid=$(xdotool search --classname urxvtq)

一緒に:

wid=$(xdotool search --classname urxvtq | grep -m 1 "" )

タブサポートを有効にするには、urxvtq の5行目を置き換えるかのどちらかです。

/path/to/urxvtc -name urxvtq -geometry 80x28

一緒に:

/path/to/urxvtc -name urxvtq -pe tabbed -geometry 80x28

または、~/.Xresources ファイルのこの行を置き換えます。

URxvt.perl-ext-common: default,matcher

一緒に:

URxvt.perl-ext-common: default,matcher,tabbed

タブの操作

キー 説明
Shift+Left 左側のタブに切り替える。
Shift+Right 右側のタブに切り替える。
Shift+Down 新しいタブを作成。

また、マウスで希望のタブをクリックして切り替えることもできますし、[NEW].\\ をクリックすれば新しいタブを作ることもできます。

タブを閉じるには、通常の端末を閉じるのと同じように exit を入力するだけです。

Openbox の設定

~/.config/openbox/rc.xml<applications> セクションに以下の行を追加:

<application name="urxvtq">
   <decor>no</decor>
   <position force="yes">
     <x>center</x>
     <y>0</y>
   </position>
   <desktop>all</desktop>
   <layer>above</layer>
   <skip_pager>yes</skip_pager>
   <skip_taskbar>yes</skip_taskbar>
   <maximized>Horizontal</maximized>
</application>

という行を追加し、<keyboard> セクションに追加してください。

<keybind key="W-t">
  <action name="Execute">
    <command>/path/to/urxvtc</command>
  </action>
</keybind>
<keybind key="W-grave">
  <action name="Execute">
    <execute>/path/to/urxvtq</execute>
  </action>
</keybind>

ここでも、/path/to/* の行を、上記で保存したスクリプトを指すように変更する必要があります。ファイルを保存して、Openbox を再設定します。これで、通常の urxvt インスタンスを Super+T で起動し、kuake 風コンソールを Super+` で切り替えられるようになったはずです。(グレイヴキー、バックティックとも呼ばれる)

他の設定

この設定が urxvt kuake Perl スクリプトより優れている点は、Openbox が修飾キーなど、より多くのキーバインドオプションを提供していることです。kuake スクリプトは、修飾キーの組み合わせに関係なく、物理キー全体をハイジャックします。すべての可能性については、Openbox bindings documentation を参照してください。

Openbox per-app settings を使って、kuake-like console の動作(画面位置やレイヤーなど)をさらに設定することができます。コンソールの高さを調整するために urxvtq スクリプトレットで geometry パラメータを変更する必要があるかもしれません。

関連スクリプト

パフォーマンスの改善

  • Xft フォントは使わないでください。どうしても Xft フォントを使う必要がある場合、設定値に :antialias=false を追加してください [2]
  • 特に --disable-xft--disable-unicode3 は、不要な機能のサポートを無効にして rxvt-unicode を構築します。[3]
  • saveLines の回数を制限する。(オプション -sl) をスクロールバックバッファーの中に入れて、メモリ使用量を減らすことができるようになりました。[4]
    • スクロールバックバッファーは tmux を使用し、saveLines を 0 に設定する。
  • Perlの無効化
  • urxvtdurxvtc クライアントからの接続を受け入れるデーモンとして実行することを検討してください。

デーモンクライアント

警告: サーバーがクラッシュすると、クライアントで動作している全てのプロセスが終了します。例えば xkill でサーバーをリセット・再起動すると開いているウィンドウを含む urxvtd インスタンスが終了されます。詳しくは urxvtd(1) を参照。

Xinitrc

urxvtd(1)Examples セクションを見てください。

systemd

ノート: systemd で起動した urxvt クライアント/デーモンにログインしているとき、通常ユーザーは systemctl の電源コマンド (reboot, poweroff など) を実行することはできません。クライアントがセッションに含まれなくなるからです。そのため systemd で urxvt を起動するのは推奨されません。

システムサービス:

/etc/systemd/system/urxvtd@.service
[Unit]
Description=RXVT-Unicode Daemon

[Service]
User=%i
ExecStart=/usr/bin/urxvtd -q -o

[Install]
WantedBy=multi-user.target

サービスを起動するときにユーザー名を指定します:

urxvtd@username.service

systemd/ユーザーサービスの場合、以下のユニットファイルを ~/.config/systemd/user に配置してください:

urxvtd.service
[Unit]
Description=Urxvt Terminal Daemon
Requires=urxvtd.socket

[Service]
ExecStart=/usr/bin/urxvtd -o -q
Environment=RXVT_SOCKET=%t/urxvtd-%H

[Install]
WantedBy=MyTarget.target
urxvtd.socket
[Unit]
Description=urxvt daemon (socket activation)
Documentation=man:urxvtd(1) man:urxvt(1)

[Socket]
ListenStream=%t/urxvtd-%H

[Install]
WantedBy=sockets.target

高度なタブの管理

AUR から urxvt-tabbedexAUR パッケージをインストールして、~/.XresourcesURxvt.perl-ext-common X リソースに tabbedex を追加してください:

URxvt.perl-ext-common: ...,tabbedex,...
ノート: If you have previously used the tabbed Perl extension and have defined the tabbed value for the URxvt.perl-ext-common X resource, please remove the tabbed value first to avoid conflict with tabbedex.

"[NEW]" ボタン (めったに使用されず、マウスでのみ使用可能) は、tabbedex のデフォルトでは無効になっています。この機能を再び有効にするには、new-button を true に設定します。

URxvt.tabbed.new-button: true

Tabs can be named with Shift+ ↑ (Enter to confirm, Escape to cancel).

To automatically hide the tabs bar when only one tab is present, enable the following resource:

URxvt.tabbed.autohide: true

To prevent the last tab from closing Urxvt, enable the following resource:

URxvt.tabbed.reopen-on-close: yes

To start a new tab or cycle through tabs, use the following user commands: tabbedex:(new|next|prev)_tab. Example of mappings:

URxvt.keysym.Control-t: perl:tabbedex:new_tab
URxvt.keysym.Control-Tab: perl:tabbedex:next_tab
URxvt.keysym.Control-Shift-Tab: perl:tabbedex:prev_tab

To define your own key bindings to rename a tab or move a tab to the right or to the left, use the following commands: tabbedex:move_tab_(left|right) and tabbedex:rename_tab. Example of mappings:

URxvt.keysym.Control-Shift-Left: perl:tabbedex:move_tab_left
URxvt.keysym.Control-Shift-Right: perl:tabbedex:move_tab_right
URxvt.keysym.Control-Shift-R: perl:tabbedex:rename_tab
ノート: Redefining the keys used for the user commands will not disable the default mappings, you have to set the X resource no-tabbedex-keys for that. However, currently it is not included in urxvt-tabbedexAUR package. Consider using urxvt-tabbedex-gitAUR package instead:
URxvt.tabbed.no-tabbedex-keys: true

透過

完全透過

完全透過を使用するには、コンポジタによるコンポジットをサポートしているウィンドウマネージャを使っている必要があります。

コマンドラインから:

$ urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd

設定ファイルを使用:

~/.Xresources
URxvt.depth: 32
URxvt.background: rgba:1111/1111/1111/dddd

または:

~/.Xresources
URxvt.depth: 32
URxvt.background: [95]#000000

'95' は透過レベル (パーセンテージ)、'#000000' は背景色に置き換えて下さい。

To use a color i.e. #302351 with the rgba:rrrr/gggg/bbbb/aaaa syntax it would be rgba:3000/2300/5100/ee00. "ee00" (the alpha value) to make it nicely transparent.

ノート: To make these settings universal for all forms of URxvt, you may add a wildcard. For example, URxvt.depth would become URxvt*depth.

疑似透過

完全透過の必要がない場合、もしくはコンポジットによるシステムリソースの消費が多すぎるという場合、以下のようにして透過を使うことができます:

~/.Xresources
! Xresources file

URxvt*inheritPixmap: true
URxvt*.transparent: true
! URxvt*.shading: 0 to 99 darkens, 101 to 200 lightens
URxvt*.shading: 110

上記の URxvt*.shading の代わりに URxvt*background を使うこともできます。

ノート: Avoid using shading if you have a URxvt.tintColor set. Use a different tintColor instead.

アイコンの設定

ノート: Because of a bug report (FS#34862) complaining that the rxvt-unicode package had too many dependencies, you must now install the AUR package rxvt-unicode-pixbufAUR in order to use the icon option.

デフォルトでは URxvt にはタスクバーアイコンがありません。~/.Xresources に以下の行を追加してアイコンを指定することで簡単に変更することができます:

URxvt.iconFile:    /usr/share/icons/Clarity/scalable/apps/terminal.svg

urxvt をアプリケーションランチャーとして使う

urxvt は gmrun などのアプリケーションの代わりとして使うことができます。以下の設定で urxvt を実行するとアプリケーションランチャーのように使用できます。もしくはコマンドをカスタムエイリアスに割り当ててください:

$ urxvt -geometry 80x3 -name 'bashrun' -e sh -c "/bin/bash -i -t"

Xterm のエスケープシーケンス

rxvt-unicode で Xterm のエスケープシーケンスを使うことができます。xterm の中で cat -v を実行してキーの組み合わせを確認したらキーシムを使って urxvt の設定を行います。

単語移動のバインドは以下のようになります:

~/.Xresources
!Xterm escapes, word by word movement
URxvt.keysym.Control-Left:    \033[1;5D
URxvt.keysym.Control-Right:    \033[1;5C

詳しくは ascii(7) や urxvt(1) の man ページのキーシムセクションを見てください。

双方向言語のサポート

bidi extension を使用して、ヘブライ語やアラビア語などの双方向言語のサポートを追加することができます。

ノート: 使用するフォントはその言語をサポートするものでなければなりません。例えば、ヘブライ語を表示するには、terminus のようなフォントを使用する必要があります。

ベルコマンド

ターミナルでベルが鳴ったときにシェルコマンドを実行することができます。最初に ~/.Xresources ファイルで bell-command 拡張を有効にしてください:

URxvt.perl-ext-common: ...,bell-command,...

以下の例は ALSAaplay コマンドを使って .wav ファイルを再生します:

URxvt.bell-command: aplay /path/to/a/file.wav

The following example will use libcanberra's canberra-gtk-play command to play the bell sound of your current sound theme:

URxvt.bell-command: canberra-gtk-play -i bell

And the next setting will pop a visual notification:

URxvt.bell-command: notify-send "rxvt-unicode: bell!"
ノート: bell-command オプションだけ設定してもコンピュータのブザー音は無効になりません。PC スピーカーの記事を見てください。