「St」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎カラー: 同期)
 
(5人の利用者による、間の34版が非表示)
1行目: 1行目:
 
{{Lowercase title}}
 
{{Lowercase title}}
 
[[Category:ターミナルエミュレータ]]
 
[[Category:ターミナルエミュレータ]]
  +
[[Category:Suckless]]
 
[[en:St]]
 
[[en:St]]
  +
[[cs:St]]
  +
[[pt:St]]
  +
[[zh-hans:St]]
 
[http://st.suckless.org/ st] は [http://suckless.org suckless] による [[Xorg|X]] 向けのシンプルなターミナル実装です。[[xterm]] や [[urxvt]] を置き換える軽量なターミナルとして作られました。st は現在、256色、ほとんどの VT10X エスケープシーケンス、UTF-8、X11 コピー/ペースト、フォントのアンチエイリアス (fontconfig を使用)、フォールバックフォント、リサイズ、config.h によるショートカット、線画をサポートしています。
 
[http://st.suckless.org/ st] は [http://suckless.org suckless] による [[Xorg|X]] 向けのシンプルなターミナル実装です。[[xterm]] や [[urxvt]] を置き換える軽量なターミナルとして作られました。st は現在、256色、ほとんどの VT10X エスケープシーケンス、UTF-8、X11 コピー/ペースト、フォントのアンチエイリアス (fontconfig を使用)、フォールバックフォント、リサイズ、config.h によるショートカット、線画をサポートしています。
   
 
== インストール ==
 
== インストール ==
[[公式リポジトリ]]の {{Pkg|st}} パッケージか、[[Arch User Repository]] の {{AUR|st-git}} を[[インストール]]してください。
+
{{AUR|st}} または {{AUR|st-git}} パッケージを[[インストール]]してください。
   
  +
* [[Wayland]] では、st は Xwayland を使用します。現時点では、利用可能なアクティブな Wayland ポートはありません。Xwayland のメモリフットプリントは避けられません。
''zsh'' が予め設定された ''st'' の {{AUR|st-git-zsh}}{{Broken package link|{{aur-mirror|st-git-zsh}}}} パッケージも存在します。
 
   
 
== 設定 ==
 
== 設定 ==
''st'' は {{ic|config.h}} ファイルで設定します。コンパイル時に {{ic|config.h}} からコピーされます。デフォルトの {{ic|config.def.h}} はソースに含まれています。
 
   
[[PKGBUILD]] {{ic|config.h}} を自分でメンテナンスするようにしてください。
+
''st'' は、コンパイル時にコピーされる {{ic|config.h}} ファイルを介して構成されます。デフォルトは、ソースに含まれている{{ic|config.def.h}} です。独自の {{ic|config.h}} と [[PKGBUILD]] を自分でメンテナンスするようにしてください。
   
 
=== シェル ===
 
=== シェル ===
18行目: 21行目:
 
''st'' のデフォルトシェルを変更するには、以下の行を編集:
 
''st'' のデフォルトシェルを変更するには、以下の行を編集:
   
static char shell[] = "/bin/sh";
+
static char *shell = "/bin/sh";
  +
  +
または、'st' の起動時にオプションの最後にシェルを指定します。
  +
  +
$ st ''options'' fish
   
 
=== ターミナル ===
 
=== ターミナル ===
24行目: 31行目:
 
ターミナルのタイプを変更するには、以下の行を編集:
 
ターミナルのタイプを変更するには、以下の行を編集:
   
static char termname[] = "st-256color";
+
static char *termname = "st-256color";
   
 
''st'' は {{ic|termname}} の値を {{ic|TERM}} 変数に設定します。
 
''st'' は {{ic|termname}} の値を {{ic|TERM}} 変数に設定します。
 
{{note|''st'' で問題が発生する場合、{{ic|termname}} を {{ic|xterm}} や {{ic|xterm-256color}} に設定してみてください。}}
 
   
 
=== フォント ===
 
=== フォント ===
34行目: 39行目:
 
以下の行を自由に編集してください:
 
以下の行を自由に編集してください:
   
static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
+
static char *font = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
   
 
コマンドラインでフォントの名前を指定することもできます:
 
コマンドラインでフォントの名前を指定することもできます:
   
st -f "Liberation Mono:size=12"
+
$ st -f "Liberation Mono:size=12"
  +
$ st -f 'Liberation Mono-12'
  +
  +
フォント名は {{ic|fc-list}} で見つけることができます。
  +
  +
=== カーソル ===
  +
  +
デフォルトでは、マウスポインタは {{ic|XC_xterm;}} であり、見つけるのが難しいかもしれません。
  +
  +
カーソルテーマの通常のテーマに変更するには、以下を編集します:
  +
  +
static unsigned int mouseshape = XC_left_ptr;
   
 
=== カラー ===
 
=== カラー ===
44行目: 60行目:
 
以下の行を編集することで''前景''・''背景''・''カーソル''の色を設定できます:
 
以下の行を編集することで''前景''・''背景''・''カーソル''の色を設定できます:
   
static unsigned int defaultfg = 7;
+
unsigned int defaultfg = 7;
static unsigned int defaultbg = 0;
+
unsigned int defaultbg = 0;
static unsigned int defaultcs = 256;
+
static unsigned int defaultcs = 256;
   
 
上記の値は同一ファイルの {{ic|*colorname[]}} 配列を参照します。デフォルトの色を使うことも {{ic|#rrggbb}} という形式で色を追加することもできます。例:
 
上記の値は同一ファイルの {{ic|*colorname[]}} 配列を参照します。デフォルトの色を使うことも {{ic|#rrggbb}} という形式で色を追加することもできます。例:
   
static const char *colorname[] = {
+
static const char *colorname[] = {
 
/* 8 normal colors */
 
/* 8 normal colors */
 
"black",
 
"black",
79行目: 95行目:
 
};
 
};
 
 
/*
+
/*
* Default colors (colorname index)
+
* Default colors (colorname index)
* foreground, background, cursor
+
* foreground, background, cursor
*/
+
*/
static unsigned int defaultfg = 257;
+
unsigned int defaultfg = 257;
static unsigned int defaultbg = 258;
+
unsigned int defaultbg = 258;
static unsigned int defaultcs = 256;
+
static unsigned int defaultcs = 256;
   
  +
カラーパレットの作成を容易にするツールが存在します。例えば、 [https://terminal.sexy terminal sexy] にはあらかじめ用意されたものがあり、''st'' のフォーマットに直接エクスポートすることができます。([https://github.com/stayradiated/terminal.sexy/issues/22#issuecomment-430629424 comment on issue 22] を参照)
== トラブルシューティング ==
 
   
  +
Solarized カラースキームのパッチがあります。インストールするには、https://st.suckless.org/patches/solarized/ を参照してください。
=== キーボード ===
 
==== Backspace が正しく機能しない ====
 
   
  +
=== パッチ ===
{{Note|[http://git.suckless.org/st/tree/FAQ FAQ] によれば、この挙動は上流で変更されてたということで、最新版にアップグレードすれば問題は解決するようです。}}
 
   
  +
[https://st.suckless.org/patches/alpha/ suckless website] から入手できるパッチはたくさんあります。 パッチを適用するには、[https://www.gnu.org/software/diffutils/manual/html_node/Invoking-diff.html diff] をダウンロードし、 {{ic|patch -i patch.diff}} を使用して適用します。 これにより、デフォルトの設定ファイル {{ic|config.def.h}} が変更されます。 独自の {{ic|config.h}} を維持している場合は、 {{ic|config.h}} から {{ic|config.def.h}} に構成をコピーし、名前を {{ic|config.h}} に変更してから、 {{ic|make clean install}} を実行します。
仮想端末や有名な X のターミナルエミュレータは {{ic|backscape}} キーを {{ic|^?}} エスケープシーケンスにバインドしていますが、{{ic|st}} の古いバージョンでは {{ic|^H}} にバインドされています (FAQ の旧版を参照)。
 
   
  +
=== デスクトップエントリ ===
({{ic|read}} など) プログラムによっては標準入力で {{ic|backspace}} キーを押すと、文字が消去されずに {{ic|^H}} が出力されることがあります。以下を設定することで解決できます:
 
  +
以下のような[[デスクトップエントリ]]を作成することで、指定したフォントで ''st'' を簡単に起動できます (例: {{Pkg|adobe-source-code-pro-fonts}}):
   
  +
{{hc|~/.local/share/applications/simple-terminal.desktop|2=
stty erase '^H'
 
  +
[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'' として表示されます。
上記の設定でターミナルは {{ic|^H}} を消去コマンドとして認識するようになります。
 
   
  +
== トラブルシューティング ==
シェルのプロファイルに上記のコマンドを記述したい場合、シェルを起動する前に {{ic|$TERM}} を確認してください。
 
  +
  +
==== キーボード ====
  +
  +
一部のアプリケーションで {{ic|Delete}} が正しく機能しない場合は、以下を {{ic|~/.inputrc}} または {{ic|/etc/inputrc}} に追加します。
  +
  +
set enable-keypad on
  +
  +
bash 上の IPython などの一部のアプリケーションで上記が動作しない場合、代わりに {{ic|enable-keypad}} をオフにして、st の [https://git.suckless.org/st/file/FAQ.html#l55 st FAQ] で紹介されているように、 {{ic|~/.bashrc}} に以下を追加してください。
  +
  +
printf '\033[?1h\033=' >/dev/tty
   
 
=== Vim ===
 
=== Vim ===
  +
 
==== ''vim'' のテキストの背景色が文字でない部分に表示されない ====
 
==== ''vim'' のテキストの背景色が文字でない部分に表示されない ====
 
{{ic|config.h}} の {{ic|termname}} を {{ic|st-256color}} に設定して再コンパイルしてみてください。シェルの中で {{ic|TERM}} 変数は設定しないでください。{{ic|st-256color}} に設定すると問題が発生します。
 
{{ic|config.h}} の {{ic|termname}} を {{ic|st-256color}} に設定して再コンパイルしてみてください。シェルの中で {{ic|TERM}} 変数は設定しないでください。{{ic|st-256color}} に設定すると問題が発生します。
116行目: 155行目:
 
set t_ut=
 
set t_ut=
 
endif
 
endif
  +
  +
==== 256color と truecolor が tmux などで機能しない ====
  +
  +
まず、この [https://bbs.archlinux.org/viewtopic.php?pid=1755862#p1755862 スレッド] で説明されているように、 {{ic|~/.bashrc}} で {{ic|TERM}} の値を設定およびエクスポートしていないことを確認してください
  +
{{note|{{ic|TERM}} を明示的に設定しないでください。 {{ic|tmux.conf}} で {{ic|default-terminal}} 設定を設定して正しく実行してください}}
  +
  +
次に使用している vim のバージョンが '''{{ic|1=>=7.4.1799}}''' であることを確認します。これは、 {{ic|termguicolors}} が追加されたときです。
  +
  +
最後に、以下を {{ic|~/.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
  +
  +
{{note|{{ic|^[}} は、{{ic|t_8f}} と {{ic|t_8b}}の各値の前に付けるリテラルエスケープ(<Esc>)文字です。 これは単一の文字であり、{{ic | vim}}で再現できます。 '''INSERT''' モードで、{{ic|<C-v>-<Esc>}} を押します(Control+v を押してから Esc を押します)。 引き続き '''INSERT''' モードになります。 もう一度 <Esc> を押すと、 '''NORMAL''' モードに戻ります。
  +
  +
{{tip|{{ic|colorscheme}}、{{ic|t_Co}}、{{ic|を設定する前に、{{ic|t_8f}} と {{ic|t_8b}} の値を設定することをお勧めします。 termguicolors}}.}}
  +
  +
詳細については、{{ic|vim}} の {{ic|:help}} を参照してください: {{ic|xterm-true-color}}、{{ic|t_8f}}、{{ic|t_8b}}
  +
}}
  +
  +
==== アラビア語シェーピングのサポート ====
  +
  +
[[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" };
  +
  +
次に、{{ic|1= st -f 'Vazir Code:pixelsize=15'}} で {{ic|st}} を起動します。この設定は、ほとんどのアラビア語のシェーピングケース (シェーピングなし、イタリック体なし、Forms-B、イタリック体の Forms-B) をカバーします。
   
 
== 参照 ==
 
== 参照 ==

2024年3月31日 (日) 21:19時点における最新版

stsuckless による X 向けのシンプルなターミナル実装です。xtermurxvt を置き換える軽量なターミナルとして作られました。st は現在、256色、ほとんどの VT10X エスケープシーケンス、UTF-8、X11 コピー/ペースト、フォントのアンチエイリアス (fontconfig を使用)、フォールバックフォント、リサイズ、config.h によるショートカット、線画をサポートしています。

インストール

stAUR または st-gitAUR パッケージをインストールしてください。

  • Wayland では、st は Xwayland を使用します。現時点では、利用可能なアクティブな Wayland ポートはありません。Xwayland のメモリフットプリントは避けられません。

設定

st は、コンパイル時にコピーされる config.h ファイルを介して構成されます。デフォルトは、ソースに含まれているconfig.def.h です。独自の config.hPKGBUILD を自分でメンテナンスするようにしてください。

シェル

st のデフォルトシェルを変更するには、以下の行を編集:

static char *shell = "/bin/sh";

または、'st' の起動時にオプションの最後にシェルを指定します。

$ st options fish

ターミナル

ターミナルのタイプを変更するには、以下の行を編集:

static char *termname = "st-256color";

sttermname の値を 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 のフォーマットに直接エクスポートすることができます。(comment on issue 22 を参照)

Solarized カラースキームのパッチがあります。インストールするには、https://st.suckless.org/patches/solarized/ を参照してください。

パッチ

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.htermnamest-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 などで機能しない

まず、この スレッド で説明されているように、 ~/.bashrcTERM の値を設定およびエクスポートしていないことを確認してください

ノート: TERM を明示的に設定しないでください。 tmux.confdefault-terminal 設定を設定して正しく実行してください

次に使用している 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
ノート: ^[ は、t_8ft_8bの各値の前に付けるリテラルエスケープ(<Esc>)文字です。 これは単一の文字であり、 vimで再現できます。 INSERT モードで、<C-v>-<Esc> を押します(Control+v を押してから Esc を押します)。 引き続き INSERT モードになります。 もう一度 <Esc> を押すと、 NORMAL モードに戻ります。
ヒント: colorschemet_Coを設定する前に、t_8ft_8b の値を設定することをお勧めします。 termguicolors.

詳細については、vim:help を参照してください: xterm-true-colort_8ft_8b

アラビア語シェーピングのサポート

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) をカバーします。

参照