ソースコードのハイライト表示(highlight, zenity, xdpyinfo)
各種ソースコードをハイライト表示する。
方法
ソースコードファイルからハイライト用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