st
st は suckless による X 向けのシンプルなターミナル実装です。xterm や urxvt を置き換える軽量なターミナルとして作られました。st は現在、256色、ほとんどの VT10X エスケープシーケンス、UTF-8、X11 コピー/ペースト、フォントのアンチエイリアス (fontconfig を使用)、フォールバックフォント、リサイズ、config.h によるショートカット、線画をサポートしています。
目次
インストール
stAUR または st-gitAUR パッケージをインストールしてください。
- Wayland では、st は Xwayland を使用します。Xwayland メモリフットプリントを回避して同様のターミナルを使用したい場合は、、wterm-gitAUR の使用を検討してください。
設定
st は、コンパイル時にコピーされる config.h ファイルを介して構成されます。デフォルトは、ソースに含まれているconfig.def.h です。独自の config.h と PKGBUILD を自分でメンテナンスするようにしてください。
シェル
st のデフォルトシェルを変更するには、以下の行を編集:
static char shell[] = "/bin/sh";
または、'st' の起動時にオプションの最後にシェルを指定します。
$ st options fish
ターミナル
ターミナルのタイプを変更するには、以下の行を編集:
static char *termname = "st-256color";
st は termname の値を TERM 変数に設定します。
フォント
以下の行を自由に編集してください:
static char *font = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
コマンドラインでフォントの名前を指定することもできます:
$ st -f "Liberation Mono:size=12" $ st -f 'Liberation Mono-12'
フォント名は fc-list で見つけることができます。
カーソル
デフォルトでは、マウスポインタは XC_xterm; であり、見つけるのが難しいかもしれません。
カーソルテーマの通常のテーマに変更するには、以下を編集します:
static unsigned int mouseshape = XC_left_ptr;
カラー
以下の行を編集することで前景・背景・カーソルの色を設定できます:
unsigned int defaultfg = 7; unsigned int defaultbg = 0; static unsigned int defaultcs = 256;
上記の値は同一ファイルの *colorname[] 配列を参照します。デフォルトの色を使うことも #rrggbb という形式で色を追加することもできます。例:
static const char *colorname[] = {
/* 8 normal colors */
"black",
"red3",
"green3",
"yellow3",
"blue2",
"magenta3",
"cyan3",
"gray90",
/* 8 bright colors */
"gray50",
"red",
"green",
"yellow",
"#5c5cff",
"magenta",
"cyan",
"white",
[255] = 0,
/* more colors can be added after 255 to use with DefaultXX */
"#cccccc",
"#eeeeee",
"#111111",
};
/*
* Default colors (colorname index)
* foreground, background, cursor
*/
unsigned int defaultfg = 257;
unsigned int defaultbg = 258;
static unsigned int defaultcs = 256;
カラーパレットの作成を容易にするツールが存在します。例えば、 terminal sexy にはあらかじめ用意されたものがあり、st のフォーマットに直接エクスポートすることができます。([1] を参照)。
Solarized カラースキームのパッチがあります。インストールするには、[2] を参照してください。
パッチ
suckless website から入手できるパッチはたくさんあります。 パッチを適用するには、diff をダウンロードし、 patch -i patch.diff を使用して適用します。 これにより、デフォルトの設定ファイル config.def.h が変更されます。 独自の config.h を維持している場合は、 config.h から config.def.h に構成をコピーし、名前を config.h に変更してから、 make clean install を実行します。
デスクトップエントリ
以下のようなデスクトップエントリを作成することで、指定したフォントで st を簡単に起動できます (例: adobe-source-code-pro-fonts):
~/.local/share/applications/simple-terminal.desktop
[Desktop Entry] Name=Simple Terminal GenericName=Terminal Comment=standard terminal emulator for the X window system Exec=st -t "Suckless Terminal" -f "Source Code Pro:style=Semibold:size=12" -g "80x24" Terminal=false Type=Application Encoding=UTF-8 Icon=terminal Categories=System;TerminalEmulator; Keywords=shell;prompt;command;commandline;cmd;
上記のメニューエントリはアプリケーションリストのシステムツールに Simple Terminal として表示されます。
トラブルシューティング
キーボード
一部のアプリケーションで Delete が正しく機能しない場合は、以下を ~/.inputrc または /etc/inputrc に追加します。
set enable-keypad on
bash 上の IPython などの一部のアプリケーションで上記が動作しない場合、代わりに enable-keypad をオフにして、st の st FAQ で紹介されているように、 ~/.bashrc に以下を追加してください。
printf '\033[?1h\033=' >/dev/tty
Vim
vim のテキストの背景色が文字でない部分に表示されない
config.h の termname を st-256color に設定して再コンパイルしてみてください。シェルの中で TERM 変数は設定しないでください。st-256color に設定すると問題が発生します。
.vimrc ファイルに以下の行を記述するという解決方法もあります:
if &term =~ '256color'
" disable Background Color Erase (BCE) so that color schemes
" render properly when inside 256-color tmux and GNU screen.
" see also http://sunaku.github.io/vim-256color-bce.html
set t_ut=
endif
256color と truecolor が tmux などで機能しない
まず、この スレッド で説明されているように、 ~/.bashrc で TERM の値を設定およびエクスポートしていないことを確認してください
次に使用している vim のバージョンが >=7.4.1799 であることを確認します。これは、 termguicolors が追加されたときです。
最後に、以下を ~/.vimrc に追加します:
set t_8f=^[[38;2;%lu;%lu;%lum " set foreground color set t_8b=^[[48;2;%lu;%lu;%lum " set background color colorscheme Tomorrow-Night-Eighties set t_Co=256 " Enable 256 colors set termguicolors " Enable GUI colors for the terminal to get truecolor
アラビア語シェーピングのサポート
Vim#双方向サポート で説明されているように、アラビア文字を完全にサポートするには、アラビア語 Forms-B の Unicode エントリをカバーするフォールバックフォントが必要です。これを行うには、font2 パッチを追加し、次のように設定を編集します。
static char *font = "Cascadia Code:size=12:pixelsize=13:antialias=true:autohint=true";
static char *font2[] = { "DejaVu Sans Mono:size=12:pixelsize=13:antialias=true:autohint=true" };
次に、st -f 'Vazir Code:pixelsize=15' で st を起動します。この設定は、ほとんどのアラビア語のシェーピングケース (シェーピングなし、イタリック体なし、Forms-B、イタリック体の Forms-B) をカバーします。