各種ソースコードをハイライト表示する。
方法
ソースコードファイルからハイライト用HTMLファイルを作成してプレビューする。
ソースコード(言語:`bash`, ファイルパス:`code.sh`) ↓ HTML化(`highlight`) ↓ HTMLプレビュー(`zenity`)
| 項目 | 値 |
|---|---|
| 対象ソースコード言語 | bash |
| 対象ファイル名 | source.sh |
| 使用コマンド | highlight, zenity, xdpyinfo grep, sed |
ターミナルで以下のコマンドを打つ。(source, htmlのパスは適時変更)
source=/home/pi/.config/ranger/scope.sh html=/tmp/work/a.sh.html highlight --inline-css --font "VL ゴシック" --font-size "18" --style pablo "${source}" > "${html}"; zenity --text-info --html --filename "${html}" --width $Width --height $Height
画面を最大化して表示するなら以下。
source=/home/pi/.config/ranger/scope.sh html=/tmp/work/a.sh.html Width_Height=$(xdpyinfo | grep dimensions | sed -E 's/\s+dimensions:\s+([0-9]+)x([0-9]+).*/\1\t\2/g') Width=$(echo "$Width_Height" | cut -f1) Height=$(echo "$Width_Height" | cut -f2) highlight --inline-css --font "VL ゴシック" --font-size "18" --style pablo "${source}" > "${html}"; zenity --text-info --html --filename "${html}" --width $Width --height $Height
手順
- インストール
- ソースコード作成
- プレビュー用コマンド実行
1. インストール
sudo apt install -y highlight
2. ソースコード作成
適当に作ればいい。ハイライトに対応する言語は以下で見れる。
highlight --list-langs
3. プレビュー用コマンド実行
highlight --inline-css --style pablo /home/pi/.config/ranger/scope.sh > /tmp/work/a.sh.html; zenity --text-info --html --filename /tmp/work/a.sh.html
cssはhtml内に入れないとzenityでは表示できなかった。よって--inline-cssフラグを付与した。
cssはpabloを使う。--style引数で指定する。その値はhighlight --list-themesで一覧できる。
zenityでfontを指定しても反映されなかった。これが有効なのは--htmlでないときのみ。--htmlのときフォントはcssで指定する必要がある。
highlight --inline-css --font "LV ゴシック 20" --style pablo /home/pi/.config/ranger/scope.sh > /tmp/work/a.sh.html; zenity --text-info --html --filename /tmp/work/a.sh.html
highlightでフォント指定するとcssに反映される。
highlight --inline-css --font "VL ゴシック" --font-size "18" --style pablo /home/pi/.config/ranger/scope.sh > /tmp/work/a.sh.html; zenity --text-info --html --filename /tmp/work/a.sh.html
zenityでウインドウのサイズを指定する。ディスプレイと同じサイズにしたい。ウインドウの最大化フラグは指定できないようなので--width, --heightで指定する。
まずはディスプレイサイズの取得。
$ xdpyinfo | grep dimensions dimensions: 1920x1080 pixels (508x286 millimeters)
widthとheightを個別に取得する。
Width_Height=$(xdpyinfo | grep dimensions | sed -E 's/\s+dimensions:\s+([0-9]+)x([0-9]+).*/\1\t\2/g') Width=$(echo "$Width_Height" | cut -f1) Height=$(echo "$Width_Height" | cut -f2) echo $Width echo $Height
zenityにwidthとheightを渡す。
highlight --inline-css --font "VL ゴシック" --font-size "18" --style pablo /home/pi/.config/ranger/scope.sh > /tmp/work/a.sh.html; zenity --text-info --html --filename /tmp/work/a.sh.html --width $Width --height $Height
Width=800, Height=600にしたのが以下。

前回
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12