shellfie 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +95 -236
- data/docs/.nojekyll +0 -0
- data/docs/index.html +205 -0
- data/docs/scripts.js +85 -0
- data/docs/styles.css +507 -0
- data/examples/simple.yml +3 -3
- data/lib/shellfie/animation_frame_builder.rb +178 -0
- data/lib/shellfie/animation_scroll_easing.rb +77 -0
- data/lib/shellfie/animation_timeline.rb +27 -0
- data/lib/shellfie/ansi_colors.rb +94 -0
- data/lib/shellfie/ansi_line_buffer.rb +87 -0
- data/lib/shellfie/ansi_normalizer.rb +51 -0
- data/lib/shellfie/ansi_parser.rb +50 -84
- data/lib/shellfie/cli.rb +22 -173
- data/lib/shellfie/cli_generate.rb +197 -0
- data/lib/shellfie/cli_info.rb +139 -0
- data/lib/shellfie/config.rb +108 -25
- data/lib/shellfie/config_defaults.rb +64 -0
- data/lib/shellfie/config_validation.rb +200 -0
- data/lib/shellfie/dependency_checker.rb +76 -0
- data/lib/shellfie/errors.rb +11 -1
- data/lib/shellfie/font_resolver.rb +58 -0
- data/lib/shellfie/format_resolver.rb +15 -0
- data/lib/shellfie/gif_generator.rb +83 -87
- data/lib/shellfie/gif_palette.rb +101 -0
- data/lib/shellfie/headless_theme_registry.rb +42 -0
- data/lib/shellfie/image_magick_command_builder.rb +75 -0
- data/lib/shellfie/line_layout.rb +137 -0
- data/lib/shellfie/output_writer.rb +41 -0
- data/lib/shellfie/parser.rb +113 -23
- data/lib/shellfie/parser_validation.rb +145 -0
- data/lib/shellfie/raster_painter.rb +157 -0
- data/lib/shellfie/render_chrome_cache.rb +40 -0
- data/lib/shellfie/render_geometry.rb +114 -0
- data/lib/shellfie/render_segment.rb +59 -0
- data/lib/shellfie/renderer.rb +79 -149
- data/lib/shellfie/rendering/shape_helpers.rb +42 -0
- data/lib/shellfie/rendering/text_painter.rb +187 -0
- data/lib/shellfie/rendering/window_chrome.rb +196 -0
- data/lib/shellfie/svg_raster_wrapper.rb +35 -0
- data/lib/shellfie/text_metrics.rb +96 -0
- data/lib/shellfie/theme_data.rb +80 -0
- data/lib/shellfie/theme_registry.rb +131 -0
- data/lib/shellfie/themes/base.rb +10 -1
- data/lib/shellfie/themes/configured.rb +61 -0
- data/lib/shellfie/themes/macos.rb +3 -1
- data/lib/shellfie/themes/ubuntu.rb +2 -1
- data/lib/shellfie/themes/windows_terminal.rb +7 -1
- data/lib/shellfie/version.rb +1 -1
- data/lib/shellfie.rb +37 -3
- metadata +37 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7ab2ae504b1bc34a212d0354f51bc4d39cd9515d2d06703b342615a93dec0e3e
|
|
4
|
+
data.tar.gz: b442f32768d3a903c955a9830e6d69038ded4d232df459ee9ce93bc3445c9f47
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bf425a5d9791d0d4856d3a241fca4ce732d2a0730d77677a3e9de739e7df6b3a63eeae5dfa826f01361c2b763d69c9f674f86b926e470203d5d11ba9712d9cd6
|
|
7
|
+
data.tar.gz: 47c58a2d9ddc8ec9ce700c4c5220513a7ded9271952aed2d518c5fb50c567de4227ff73fabede8effa54df70ae8d1ddad6908265a3616ec225126f90f973e17b
|
data/README.md
CHANGED
|
@@ -1,113 +1,47 @@
|
|
|
1
|
+
# shellfie
|
|
2
|
+
|
|
3
|
+
Generate terminal screenshot-style images and animations from YAML.
|
|
4
|
+
|
|
1
5
|
<p align="center">
|
|
2
|
-
<img src="assets/logo-header.svg" alt="shellfie
|
|
3
|
-
<p align="center">
|
|
4
|
-
<strong>Generate beautiful terminal screenshots from YAML</strong>
|
|
5
|
-
</p>
|
|
6
|
-
<p align="center">
|
|
7
|
-
<a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/v/shellfie.svg?colorB=319e8c" alt="Gem Version"></a>
|
|
8
|
-
<a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/dt/shellfie.svg" alt="Downloads"></a>
|
|
9
|
-
<img src="https://img.shields.io/badge/ruby-%3E%3D%203.0-ruby.svg" alt="Ruby Version">
|
|
10
|
-
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License">
|
|
11
|
-
</p>
|
|
6
|
+
<img src="assets/logo-header.svg" alt="shellfie">
|
|
12
7
|
</p>
|
|
13
8
|
|
|
14
9
|
<p align="center">
|
|
15
|
-
<a href="
|
|
16
|
-
<a href="
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
<a href="#themes">Themes</a>
|
|
10
|
+
<a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/v/shellfie.svg?colorB=319e8c" alt="Gem Version"></a>
|
|
11
|
+
<a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/dt/shellfie.svg" alt="Downloads"></a>
|
|
12
|
+
<img src="https://img.shields.io/badge/ruby-%3E%3D%203.0-ruby.svg" alt="Ruby Version">
|
|
13
|
+
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License">
|
|
20
14
|
</p>
|
|
21
15
|
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
**Shellfie** (Shell + Selfie) creates stunning terminal screenshot-style images from simple YAML configuration files. Perfect for documentation, README files, tutorials, and presentations — without actually taking screenshots.
|
|
25
|
-
|
|
26
16
|
<p align="center">
|
|
27
|
-
<img src="examples/demo.gif" alt="
|
|
17
|
+
<img src="examples/demo.gif" alt="shellfie demo" width="560">
|
|
28
18
|
</p>
|
|
29
19
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
### Multiple Themes
|
|
33
|
-
|
|
34
|
-
Generate images with different terminal styles:
|
|
35
|
-
|
|
36
|
-
<table>
|
|
37
|
-
<tr>
|
|
38
|
-
<th>macOS</th>
|
|
39
|
-
<th>Ubuntu</th>
|
|
40
|
-
<th>Windows</th>
|
|
41
|
-
</tr>
|
|
42
|
-
<tr>
|
|
43
|
-
<td><img src="examples/theme_macos.png" width="280" alt="macOS theme"></td>
|
|
44
|
-
<td><img src="examples/theme_ubuntu.png" width="280" alt="Ubuntu theme"></td>
|
|
45
|
-
<td><img src="examples/theme_windows.png" width="280" alt="Windows theme"></td>
|
|
46
|
-
</tr>
|
|
47
|
-
</table>
|
|
48
|
-
|
|
49
|
-
### Animated GIFs
|
|
50
|
-
|
|
51
|
-
Create typing animations with realistic effects:
|
|
52
|
-
|
|
53
|
-
```yaml
|
|
54
|
-
animation:
|
|
55
|
-
typing_speed: 50 # Milliseconds per character
|
|
56
|
-
command_delay: 500 # Pause after command
|
|
57
|
-
loop: true # Loop animation
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Full ANSI Color Support
|
|
61
|
-
|
|
62
|
-
- Standard 8 colors + bright variants
|
|
63
|
-
- 256-color palette
|
|
64
|
-
- True color (24-bit RGB)
|
|
65
|
-
- Bold, italic, underline styles
|
|
66
|
-
|
|
67
|
-
### Flexible Output Options
|
|
68
|
-
|
|
69
|
-
- **High DPI support** — Generate 2x or 3x scaled images for Retina displays
|
|
70
|
-
- **Headless mode** — Output without window decorations
|
|
71
|
-
- **Shadow effects** — Beautiful drop shadows
|
|
72
|
-
- **Transparent backgrounds** — Perfect for overlays
|
|
73
|
-
- **Fixed height with scrolling** — Consistent GIF dimensions
|
|
20
|
+
## Install
|
|
74
21
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
### Requirements
|
|
22
|
+
Requirements:
|
|
78
23
|
|
|
79
24
|
- Ruby 3.0+
|
|
80
|
-
- ImageMagick 7
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
# Install ImageMagick first
|
|
84
|
-
brew install imagemagick # macOS
|
|
85
|
-
sudo apt install imagemagick # Ubuntu/Debian
|
|
86
|
-
choco install imagemagick # Windows
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Install the gem
|
|
25
|
+
- ImageMagick 7+
|
|
90
26
|
|
|
91
27
|
```bash
|
|
28
|
+
brew install imagemagick
|
|
92
29
|
gem install shellfie
|
|
93
30
|
```
|
|
94
31
|
|
|
95
|
-
|
|
32
|
+
For Bundler:
|
|
96
33
|
|
|
97
34
|
```ruby
|
|
98
|
-
gem
|
|
35
|
+
gem "shellfie"
|
|
99
36
|
```
|
|
100
37
|
|
|
101
|
-
##
|
|
38
|
+
## Quick Start
|
|
102
39
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
1. Create a configuration file:
|
|
40
|
+
Create `terminal.yml`:
|
|
106
41
|
|
|
107
42
|
```yaml
|
|
108
|
-
# terminal.yml
|
|
109
43
|
theme: macos
|
|
110
|
-
title: "Terminal
|
|
44
|
+
title: "Terminal - zsh"
|
|
111
45
|
|
|
112
46
|
window:
|
|
113
47
|
width: 600
|
|
@@ -115,220 +49,145 @@ window:
|
|
|
115
49
|
|
|
116
50
|
lines:
|
|
117
51
|
- prompt: "$ "
|
|
118
|
-
command: "echo
|
|
119
|
-
- output: "
|
|
52
|
+
command: "echo hello"
|
|
53
|
+
- output: "hello"
|
|
120
54
|
```
|
|
121
55
|
|
|
122
|
-
|
|
56
|
+
Generate an image:
|
|
123
57
|
|
|
124
58
|
```bash
|
|
125
|
-
shellfie generate terminal.yml -o
|
|
59
|
+
shellfie generate terminal.yml -o terminal.png
|
|
126
60
|
```
|
|
127
61
|
|
|
128
|
-
|
|
62
|
+
Use `shf` as a short alias for `shellfie`.
|
|
129
63
|
|
|
130
|
-
|
|
131
|
-
|---------|-------------|
|
|
132
|
-
| `shellfie generate <file> -o <output>` | Generate image from config |
|
|
133
|
-
| `shellfie init` | Output sample configuration |
|
|
134
|
-
| `shellfie themes` | List available themes |
|
|
135
|
-
| `shellfie validate <file>` | Validate configuration |
|
|
136
|
-
| `shellfie version` | Show version |
|
|
137
|
-
| `shellfie help` | Show help |
|
|
138
|
-
|
|
139
|
-
> [!TIP]
|
|
140
|
-
> Use `shf` as a shorter alias for `shellfie`
|
|
141
|
-
|
|
142
|
-
### Generate Options
|
|
64
|
+
## CLI
|
|
143
65
|
|
|
144
66
|
```bash
|
|
145
|
-
shellfie generate config.yml -o output.png
|
|
67
|
+
shellfie generate config.yml -o output.png
|
|
68
|
+
shellfie generate config.yml -o demo.gif --animate
|
|
69
|
+
shellfie generate config.yml -o output.svg --format svg
|
|
70
|
+
shellfie generate config.yml -o output.png --scale 2 --no-shadow
|
|
71
|
+
shellfie generate config.yml -o output.png --no-header
|
|
72
|
+
shellfie validate config.yml
|
|
73
|
+
shellfie themes
|
|
74
|
+
shellfie init
|
|
146
75
|
```
|
|
147
76
|
|
|
77
|
+
Common `generate` options:
|
|
78
|
+
|
|
148
79
|
| Option | Description |
|
|
149
|
-
|
|
150
|
-
| `-o, --output PATH` | Output
|
|
151
|
-
| `-t, --theme NAME` | Override theme
|
|
152
|
-
| `-a, --animate` |
|
|
153
|
-
| `-s, --scale FACTOR` | Output scale
|
|
154
|
-
| `-w, --width PIXELS` | Override width |
|
|
155
|
-
| `--
|
|
156
|
-
| `--
|
|
80
|
+
| --- | --- |
|
|
81
|
+
| `-o, --output PATH` | Output path |
|
|
82
|
+
| `-t, --theme NAME` | Override theme |
|
|
83
|
+
| `-a, --animate` | Render animation |
|
|
84
|
+
| `-s, --scale FACTOR` | Output scale: `1`, `2`, or `3` |
|
|
85
|
+
| `-w, --width PIXELS` | Override window width |
|
|
86
|
+
| `--format FORMAT` | `png`, `gif`, `svg`, `webp`, or `apng` |
|
|
87
|
+
| `--fps FPS` | Override animation typing FPS |
|
|
88
|
+
| `--overflow MODE` | `clip`, `wrap`, or `scroll` |
|
|
89
|
+
| `--no-shadow` | Disable shadow |
|
|
157
90
|
| `--transparent` | Transparent background |
|
|
91
|
+
| `--no-header` | Headless output |
|
|
92
|
+
| `--force` | Overwrite existing files |
|
|
158
93
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# Basic PNG
|
|
163
|
-
shellfie generate config.yml -o terminal.png
|
|
164
|
-
|
|
165
|
-
# Animated GIF
|
|
166
|
-
shellfie generate config.yml -o demo.gif --animate
|
|
167
|
-
|
|
168
|
-
# Retina-ready (2x scale)
|
|
169
|
-
shellfie generate config.yml -o terminal@2x.png --scale 2
|
|
170
|
-
|
|
171
|
-
# Headless (no window decorations)
|
|
172
|
-
shellfie generate config.yml -o code.png --no-header
|
|
173
|
-
|
|
174
|
-
# Ubuntu theme with custom width
|
|
175
|
-
shellfie generate config.yml -o ubuntu.png -t ubuntu -w 800
|
|
176
|
-
```
|
|
94
|
+
Static output supports `png`, `svg`, and `webp`.
|
|
95
|
+
Animated output supports `gif`, `webp`, and `apng`.
|
|
177
96
|
|
|
178
97
|
## Configuration
|
|
179
98
|
|
|
180
|
-
|
|
99
|
+
Static content uses `lines`:
|
|
181
100
|
|
|
182
101
|
```yaml
|
|
183
|
-
theme: macos
|
|
184
|
-
title: "Terminal
|
|
185
|
-
headless: false # Hide window decorations
|
|
102
|
+
theme: macos
|
|
103
|
+
title: "Terminal"
|
|
186
104
|
|
|
187
105
|
window:
|
|
188
|
-
width: 600
|
|
189
|
-
padding: 20
|
|
190
|
-
visible_lines:
|
|
106
|
+
width: 600
|
|
107
|
+
padding: 20
|
|
108
|
+
visible_lines: 8
|
|
109
|
+
overflow: clip
|
|
191
110
|
|
|
192
111
|
font:
|
|
193
|
-
family:
|
|
194
|
-
size: 14
|
|
195
|
-
line_height: 1.4
|
|
196
|
-
|
|
197
|
-
lines: # Static content
|
|
198
|
-
- prompt: "$ "
|
|
199
|
-
command: "echo hello"
|
|
200
|
-
- output: "hello"
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### Static Images
|
|
204
|
-
|
|
205
|
-
```yaml
|
|
206
|
-
theme: macos
|
|
207
|
-
title: "Terminal"
|
|
112
|
+
family: Monaco
|
|
113
|
+
size: 14
|
|
114
|
+
line_height: 1.4
|
|
208
115
|
|
|
209
116
|
lines:
|
|
210
117
|
- prompt: "$ "
|
|
211
118
|
command: "gem install shellfie"
|
|
212
|
-
|
|
213
119
|
- output: |
|
|
214
|
-
|
|
215
|
-
Successfully installed shellfie-0.1.0
|
|
120
|
+
Successfully installed shellfie
|
|
216
121
|
1 gem installed
|
|
217
|
-
|
|
218
|
-
- prompt: "$ "
|
|
219
|
-
command: ""
|
|
220
122
|
```
|
|
221
123
|
|
|
222
|
-
|
|
124
|
+
Animations use `frames`:
|
|
223
125
|
|
|
224
126
|
```yaml
|
|
225
127
|
theme: macos
|
|
226
128
|
title: "Demo"
|
|
227
129
|
|
|
228
130
|
animation:
|
|
229
|
-
typing_speed: 50
|
|
230
|
-
command_delay: 500
|
|
231
|
-
cursor_blink: true
|
|
232
|
-
loop: true
|
|
131
|
+
typing_speed: 50
|
|
132
|
+
command_delay: 500
|
|
133
|
+
cursor_blink: true
|
|
134
|
+
loop: true
|
|
135
|
+
palette: global
|
|
136
|
+
dither: true
|
|
137
|
+
scroll_easing: ease_out
|
|
233
138
|
|
|
234
139
|
frames:
|
|
235
140
|
- prompt: "$ "
|
|
236
|
-
type: "echo
|
|
237
|
-
delay: 500
|
|
238
|
-
|
|
239
|
-
- output: "Hello!"
|
|
141
|
+
type: "echo hello"
|
|
142
|
+
delay: 500
|
|
143
|
+
- output: "hello"
|
|
240
144
|
delay: 1000
|
|
241
145
|
```
|
|
242
146
|
|
|
243
|
-
|
|
147
|
+
Useful top-level keys:
|
|
244
148
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
149
|
+
| Key | Purpose |
|
|
150
|
+
| --- | --- |
|
|
151
|
+
| `theme` | `macos`, `ubuntu`, `windows`, or `custom` |
|
|
152
|
+
| `color_scheme` | Built-in color scheme such as `dracula` |
|
|
153
|
+
| `colors` | Theme color overrides |
|
|
154
|
+
| `window` | Size, padding, wrapping, clipping, scrolling |
|
|
155
|
+
| `font` | Font family, size, line height |
|
|
156
|
+
| `animation` | Typing speed, delays, loop, palette, easing |
|
|
157
|
+
| `cursor` | Cursor style and color |
|
|
158
|
+
| `headless` | Hide window chrome |
|
|
159
|
+
| `lines` | Static terminal content |
|
|
160
|
+
| `frames` | Animated terminal content |
|
|
249
161
|
|
|
250
|
-
|
|
251
|
-
```
|
|
162
|
+
ANSI colors and styles are supported in `prompt`, `command`, and `output`, including 8-color, bright, 256-color, and RGB escape sequences.
|
|
252
163
|
|
|
253
|
-
|
|
164
|
+
## Themes
|
|
254
165
|
|
|
255
|
-
|
|
256
|
-
|------|--------|
|
|
257
|
-
| `\e[0m` | Reset |
|
|
258
|
-
| `\e[1m` | Bold |
|
|
259
|
-
| `\e[3m` | Italic |
|
|
260
|
-
| `\e[4m` | Underline |
|
|
261
|
-
| `\e[30-37m` | Foreground colors |
|
|
262
|
-
| `\e[40-47m` | Background colors |
|
|
263
|
-
| `\e[90-97m` | Bright foreground |
|
|
264
|
-
| `\e[38;5;Nm` | 256-color foreground |
|
|
265
|
-
| `\e[38;2;R;G;Bm` | RGB foreground |
|
|
166
|
+
Built-in window themes:
|
|
266
167
|
|
|
267
|
-
|
|
168
|
+
- `macos`
|
|
169
|
+
- `ubuntu`
|
|
170
|
+
- `windows`
|
|
268
171
|
|
|
269
|
-
|
|
172
|
+
Headless output removes window chrome:
|
|
270
173
|
|
|
271
174
|
```yaml
|
|
272
|
-
|
|
273
|
-
width: 600
|
|
274
|
-
visible_lines: 8 # Show only last 8 lines
|
|
275
|
-
|
|
276
|
-
frames:
|
|
277
|
-
- prompt: "$ "
|
|
278
|
-
type: "for i in {1..20}; do echo $i; done"
|
|
279
|
-
# Lines will scroll as content exceeds visible_lines
|
|
175
|
+
headless: true
|
|
280
176
|
```
|
|
281
177
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
### macOS (default)
|
|
285
|
-
|
|
286
|
-
Classic macOS Terminal appearance with traffic light buttons (red, yellow, green) on the left side.
|
|
287
|
-
|
|
288
|
-
### Ubuntu
|
|
289
|
-
|
|
290
|
-
GNOME Terminal style with window controls on the right side and Ubuntu's signature purple background.
|
|
291
|
-
|
|
292
|
-
### Windows Terminal
|
|
293
|
-
|
|
294
|
-
Modern Windows Terminal design with flat styling and square corners.
|
|
295
|
-
|
|
296
|
-
### Headless Mode
|
|
297
|
-
|
|
298
|
-
No window decorations — just the terminal content. Perfect for embedding in documentation.
|
|
299
|
-
|
|
300
|
-
<p align="center">
|
|
301
|
-
<img src="examples/headless.png" alt="Headless mode" width="500">
|
|
302
|
-
</p>
|
|
178
|
+
or:
|
|
303
179
|
|
|
304
180
|
```bash
|
|
305
181
|
shellfie generate config.yml -o output.png --no-header
|
|
306
182
|
```
|
|
307
183
|
|
|
308
|
-
Or in YAML:
|
|
309
|
-
|
|
310
|
-
```yaml
|
|
311
|
-
headless: true
|
|
312
|
-
```
|
|
313
|
-
|
|
314
184
|
## Development
|
|
315
185
|
|
|
316
186
|
```bash
|
|
317
|
-
git clone https://github.com/yourusername/shellfie.git
|
|
318
|
-
cd shellfie
|
|
319
|
-
|
|
320
187
|
bundle install
|
|
321
|
-
bundle exec rspec
|
|
188
|
+
bundle exec rspec
|
|
322
189
|
```
|
|
323
190
|
|
|
324
|
-
## Contributing
|
|
325
|
-
|
|
326
|
-
1. Fork it
|
|
327
|
-
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
328
|
-
3. Commit your changes (`git commit -am 'Add amazing feature'`)
|
|
329
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
330
|
-
5. Open a Pull Request
|
|
331
|
-
|
|
332
191
|
## License
|
|
333
192
|
|
|
334
|
-
|
|
193
|
+
[MIT](LICENSE)
|
data/docs/.nojekyll
ADDED
|
File without changes
|
data/docs/index.html
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="ja">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Shellfie Docs</title>
|
|
7
|
+
<meta
|
|
8
|
+
name="description"
|
|
9
|
+
content="Shellfie documentation. Generate beautiful terminal screenshots from YAML."
|
|
10
|
+
/>
|
|
11
|
+
<link rel="stylesheet" href="./styles.css" />
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<div class="ambient-glow" aria-hidden="true"></div>
|
|
15
|
+
<div class="sun-core" aria-hidden="true"></div>
|
|
16
|
+
<div class="scanlines" aria-hidden="true"></div>
|
|
17
|
+
<div class="stars" aria-hidden="true"></div>
|
|
18
|
+
<div class="grid-floor" aria-hidden="true"></div>
|
|
19
|
+
|
|
20
|
+
<header class="topbar">
|
|
21
|
+
<div class="brand">
|
|
22
|
+
<span class="brand__glyph">◎</span>
|
|
23
|
+
<div class="brand__stack">
|
|
24
|
+
<span class="brand__title">Shellfie</span>
|
|
25
|
+
<span class="brand__subtitle">Terminal Screenshot Generator</span>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
<nav class="topnav">
|
|
29
|
+
<a href="#features">Features</a>
|
|
30
|
+
<a href="#install">Install</a>
|
|
31
|
+
<a href="#usage">Usage</a>
|
|
32
|
+
<a href="#config">Config</a>
|
|
33
|
+
<a href="#themes">Themes</a>
|
|
34
|
+
</nav>
|
|
35
|
+
<a class="cta" href="https://github.com/ydah/shellfie">GitHub</a>
|
|
36
|
+
</header>
|
|
37
|
+
|
|
38
|
+
<main>
|
|
39
|
+
<section class="hero">
|
|
40
|
+
<div class="hero__content">
|
|
41
|
+
<p class="eyebrow">YAML → Image → Imagination</p>
|
|
42
|
+
<h1>
|
|
43
|
+
Terminal visuals that elevate<br />
|
|
44
|
+
your documentation
|
|
45
|
+
</h1>
|
|
46
|
+
<p class="hero__lead">
|
|
47
|
+
Shellfie is a CLI that generates PNGs and animated GIFs from YAML.
|
|
48
|
+
Build documentation, tutorials, and presentations without taking screenshots.
|
|
49
|
+
</p>
|
|
50
|
+
<div class="hero__actions">
|
|
51
|
+
<a class="cta cta--primary" href="#usage">Quick Start</a>
|
|
52
|
+
<a class="cta cta--ghost" href="#config">View Config</a>
|
|
53
|
+
</div>
|
|
54
|
+
<div class="hero__meta">
|
|
55
|
+
<span>Ruby 3.0+</span>
|
|
56
|
+
<span>ImageMagick 7.0+</span>
|
|
57
|
+
<span>CLI: shellfie / shf</span>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="hero__preview">
|
|
61
|
+
<div class="terminal-card">
|
|
62
|
+
<div class="terminal-card__bar">
|
|
63
|
+
<span></span><span></span><span></span>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="terminal-card__body">
|
|
66
|
+
<div
|
|
67
|
+
class="typewriter"
|
|
68
|
+
data-lines="$ shellfie init > demo.yml||$ shellfie generate demo.yml -o neon.png||Generated: neon.png||Let the glow begin..."
|
|
69
|
+
></div>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</section>
|
|
74
|
+
|
|
75
|
+
<section id="features" class="section">
|
|
76
|
+
<div class="section__header">
|
|
77
|
+
<p class="eyebrow">Features</p>
|
|
78
|
+
<h2>Make visuals and storytelling effortless</h2>
|
|
79
|
+
<p class="section__lead">
|
|
80
|
+
Switch themes, animate typing, and support ANSI colors to level up your docs.
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
<div class="grid">
|
|
84
|
+
<article class="card">
|
|
85
|
+
<h3>Multi Theme</h3>
|
|
86
|
+
<p>Switch between macOS, Ubuntu, and Windows terminal styles.</p>
|
|
87
|
+
</article>
|
|
88
|
+
<article class="card">
|
|
89
|
+
<h3>Animated GIF</h3>
|
|
90
|
+
<p>Create typing animations that feel like a guided walkthrough.</p>
|
|
91
|
+
</article>
|
|
92
|
+
<article class="card">
|
|
93
|
+
<h3>Full ANSI</h3>
|
|
94
|
+
<p>Support 256-color palettes, TrueColor, and text styles.</p>
|
|
95
|
+
</article>
|
|
96
|
+
<article class="card">
|
|
97
|
+
<h3>HiDPI Output</h3>
|
|
98
|
+
<p>Render crisp assets with 2x or 3x scaling for HiDPI.</p>
|
|
99
|
+
</article>
|
|
100
|
+
</div>
|
|
101
|
+
</section>
|
|
102
|
+
|
|
103
|
+
<section id="install" class="section section--alt">
|
|
104
|
+
<div class="section__header">
|
|
105
|
+
<p class="eyebrow">Install</p>
|
|
106
|
+
<h2>Install in two steps</h2>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="split">
|
|
109
|
+
<div class="code-block">
|
|
110
|
+
<h3>ImageMagick</h3>
|
|
111
|
+
<pre><code>brew install imagemagick
|
|
112
|
+
# Ubuntu/Debian
|
|
113
|
+
sudo apt install imagemagick</code></pre>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="code-block">
|
|
116
|
+
<h3>Shellfie</h3>
|
|
117
|
+
<pre><code>gem install shellfie
|
|
118
|
+
# or
|
|
119
|
+
bundle add shellfie</code></pre>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</section>
|
|
123
|
+
|
|
124
|
+
<section id="usage" class="section">
|
|
125
|
+
<div class="section__header">
|
|
126
|
+
<p class="eyebrow">Usage</p>
|
|
127
|
+
<h2>Quick Start</h2>
|
|
128
|
+
<p class="section__lead">
|
|
129
|
+
Create a YAML file, then generate the output.
|
|
130
|
+
</p>
|
|
131
|
+
</div>
|
|
132
|
+
<div class="split">
|
|
133
|
+
<div class="code-block">
|
|
134
|
+
<h3>terminal.yml</h3>
|
|
135
|
+
<pre><code>theme: macos
|
|
136
|
+
title: "Terminal — zsh"
|
|
137
|
+
|
|
138
|
+
window:
|
|
139
|
+
width: 620
|
|
140
|
+
padding: 20
|
|
141
|
+
|
|
142
|
+
lines:
|
|
143
|
+
- prompt: "$ "
|
|
144
|
+
command: "echo 'Hello, Vaporwave!'"
|
|
145
|
+
- output: "Hello, Vaporwave!"</code></pre>
|
|
146
|
+
</div>
|
|
147
|
+
<div class="code-block">
|
|
148
|
+
<h3>Generate</h3>
|
|
149
|
+
<pre><code>shellfie generate terminal.yml -o output.png
|
|
150
|
+
shellfie generate terminal.yml -o demo.gif --animate</code></pre>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</section>
|
|
154
|
+
|
|
155
|
+
<section id="config" class="section section--alt">
|
|
156
|
+
<div class="section__header">
|
|
157
|
+
<p class="eyebrow">Config</p>
|
|
158
|
+
<h2>Animation controls</h2>
|
|
159
|
+
<p class="section__lead">
|
|
160
|
+
Tune typing speed, delays, and looping.
|
|
161
|
+
</p>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="code-block code-block--wide">
|
|
164
|
+
<pre><code>animation:
|
|
165
|
+
typing_speed: 50
|
|
166
|
+
command_delay: 500
|
|
167
|
+
cursor_blink: true
|
|
168
|
+
loop: true
|
|
169
|
+
|
|
170
|
+
frames:
|
|
171
|
+
- prompt: "$ "
|
|
172
|
+
type: "ls -la"
|
|
173
|
+
delay: 400
|
|
174
|
+
- output: "docs lib README.md"
|
|
175
|
+
delay: 800</code></pre>
|
|
176
|
+
</div>
|
|
177
|
+
</section>
|
|
178
|
+
|
|
179
|
+
<section id="themes" class="section">
|
|
180
|
+
<div class="section__header">
|
|
181
|
+
<p class="eyebrow">Themes</p>
|
|
182
|
+
<h2>Shape the vibe with themes</h2>
|
|
183
|
+
</div>
|
|
184
|
+
<div class="theme-list">
|
|
185
|
+
<div class="theme-pill">macos</div>
|
|
186
|
+
<div class="theme-pill">ubuntu</div>
|
|
187
|
+
<div class="theme-pill">windows</div>
|
|
188
|
+
<div class="theme-pill">headless</div>
|
|
189
|
+
</div>
|
|
190
|
+
<div class="code-block code-block--wide">
|
|
191
|
+
<pre><code>shellfie themes
|
|
192
|
+
shellfie generate config.yml -o neon.png -t ubuntu
|
|
193
|
+
shellfie generate config.yml -o ghost.png --no-header</code></pre>
|
|
194
|
+
</div>
|
|
195
|
+
</section>
|
|
196
|
+
</main>
|
|
197
|
+
|
|
198
|
+
<footer class="footer">
|
|
199
|
+
<p>Shellfie Docs</p>
|
|
200
|
+
<p>Built for GitHub Pages + GitHub Actions</p>
|
|
201
|
+
</footer>
|
|
202
|
+
|
|
203
|
+
<script src="./scripts.js"></script>
|
|
204
|
+
</body>
|
|
205
|
+
</html>
|