Silicon
Silicon is an alternative to Carbon implemented in Rust.
It can render your source code into a beautiful image.
Why Silicon
Carbon is a wonderful tool to create a beautiful image of your source code.
But it is a web application, which brings the following disadvantages:
- Cannot work without Internet & browser.
- Doesn't work well with shell. (Although there is carbon-now-cli, its experience is not very good, especially when the network is not so good.)
However, Silicon doesn't have these problems. It's is implemented in Rust and can work without browser & Internet.
Silicon can render your source code on the fly while carbon-now-cli takes several seconds on it.
Disadvantages
It's not as beautiful as Carbon...
Install
Cargo
cargo install silicon
NOTE: harfbuzz feature is enabled by default. If you are using Windows, I suggest you disable it to get it build easier.
AUR
Silicon is available in the official repository:
pacman -S silicon
Homebrew
You can install Silicon using Homebrew:
brew install silicon
Dependencies
Ubuntu
sudo apt install expat
sudo apt install libxml2-dev
sudo apt install pkg-config libasound2-dev libssl-dev cmake libfreetype6-dev libexpat1-dev libxcb-composite0-dev libharfbuzz-dev
Fedora
sudo dnf install \
cmake \
expat-devel fontconfig-devel libxcb-devel \
freetype-devel libxml2-devel \
harfbuzz
Arch Linux
sudo pacman -S --needed pkgconf freetype2 fontconfig libxcb xclip harfbuzz
Examples
Read code from file
silicon main.rs -o main.png
Read code from clipboard, and copy the result image to clipboard
silicon --from-clipboard -l rs --to-clipboard
Specify a fallback font list and their size
silicon -o main.png -l bash -f 'Hack; SimSun=31; code2000' <<EOF
echo Hello
echo 你好
echo ∠( ᐛ 」∠)_
EOF
Highlight specified line
silicon main.rs -o main.png --highlight-lines '1; 3-4'
Custom the image
silicon ./target/test.rs -o test.png \
--shadow-color '#555' --background '#fff' \
--shadow-blur-radius 30 --no-window-controls
Transparent background
The color can be #RGB[A]
or #RRGGBB[AA]
silicon ./target/test.rs -o test.png --background '#fff0'
Show window title
silicon ./target/test.rs -o test.png --window-title "target/test.rs"
see silicon --help
for detail
Adding new syntaxes / themes
Silicon reads syntax-definition and theme cache from user's cache directory.
The steps to add new syntaxes / themes is as same as bat: sharkdp/bat#adding-new-syntaxes--language-definitions.
Just replace bat cache --build
to silicon --build-cache
.
Configuration file
You can write some common args to silicon --config-file
.
Example:
# enable shadow
--shadow-color '#555'
--background '#fff'
--shadow-blur-radius 30
--no-window-controls